On Wed, Aug 13, 2014 at 12:32 PM, Philip Martin <philip.mar...@wandisco.com>
wrote:

> Stefan Fuhrmann <stefan.fuhrm...@wandisco.com> writes:
>
> > The solution seems to be to simply destroy the txn_dir_cache
> > instance at the begin of the commit. That comes at some extra
> > cost but that is still proportional to the size of the commit.
>
> There would be no cost to mod_dav_svn since the txn_dir_cache is already
> NULL when handling MERGE.  There would be a cost to svn:// and file://.
>
> > The only sequence that would get us into real trouble is
> >
> >   thread / process A: modify txn
> >   thread / process B: modify txn
> >   thread / process A: modify txn (via same fs_t as before)
> >
> > Since A won't re-read the directory contents and may therefore
> > return "path not found" errors or miss earlier modifications to a
> > given node / sub-tree and use a new copy for the following mods.
> > But I guess we don't support that sequence at all.
>
> We don't support it right now because it doesn't work, but do we want it
> to work?  fs-test 44 is the new test I wrote: it FAILS for FSFS but is a
> PASS for BDB and FSX.  It is also a PASS for 1.6 FSFS.
>

Hm. Right now, we haven't changed the on-disk representation
of in-txn directories. It is still append-only. So, we could cache
the directory file size along with the contents and use that for
an OOD check.

I wouldn't want to do it for 1.9 but it is certainly an option later.
The driver behind this would be concurrent puts.

-- Stefan^2.

Reply via email to