Stefan Fuhrmann wrote on Sun, Dec 08, 2013 at 11:09:47 +0100:
> On Sat, Dec 7, 2013 at 11:00 AM, Bert Huijben <b...@qqmail.nl> wrote:
> 
> >
> >
> > > -----Original Message-----
> > > From: stef...@apache.org [mailto:stef...@apache.org]
> > > Sent: zaterdag 7 december 2013 10:31
> > > To: comm...@subversion.apache.org
> > > Subject: svn commit: r1548823 - in
> > > /subversion/trunk/subversion/libsvn_fs_x: dag.c id.c id.h
> > temp_serializer.c
> > > temp_serializer.h
> > >
> > > Author: stefan2
> > > Date: Sat Dec  7 09:30:42 2013
> > > New Revision: 1548823
> > >
> > > URL: http://svn.apache.org/r1548823
> > > Log:
> > > Add a pool member to the internal representation of FSX IDs and
> > > thus allow the ID vtable functions to perform actual data lookups
> > > in the future.  The pool is the one used to allocate the ID.
> >
> > With WC-NG we explicitly stopped adding a pool in this kind of structures
> > for very good reasons. All these pool reference makes it harder and harder
> > to properly allocate results. This pattern is far too sensitive to pool
> > cleanup ordering problems
> >
> > Using proper result and scratch pool (where the scratch pool is always the
> > result pool or a descendant of the result pool or at least a pool that is
> > cleaned up *before* the result pool), makes pool cleanup handling much
> > easier to understand...

Incidentally, this confused me.  We *depend* on scratch pools getting
cleared before result pools?  Normally, the lifetime of a scratch pool
is explicitly undefined: it is not promised to be cleared right after
the call, or before result_pool, or after result_pool; they simply
promise nothing whatsoever.

Do we have code that assumes otherwise?

> >
> 
> Duly noted for Subversion 2.0
> 
> For now, however, we have to implement id_vtable_t.

Huh?  id_vtable_t is not a public API.  I assume the id vtable falls
under the same rules as the fs_library vtable --- see
fs_library_vtable_t.get_version's docstring.

> It offers two
> functions, the first one being an identity check is certainly o.k.
> 
> The second one tests the following: "does this noderev(*) ID have a
> common ancestor with that other noderev ID?". Unless you somehow
> attach that information to the ID itself, you probably need a pool to
> perform some kind of data access. But the API does not provide one.

Reply via email to