On Thu, 2004-11-11 at 22:26, Greg Hudson wrote:
> On Thu, 2004-11-11 at 16:49, sussman@tigris.org wrote:
> > +To test if a path is locked, simply check if the path is a key in the
> > +`locks-nodes' table. To see if a certain directory has any locked
> > +children below, we ask BerkeleyDB to do a "greater or equal match" on
> > +the directory path, and see if any results come back. If they do,
> > +then at least one of the directory's children is locked, and thus the
> > +directory cannot be deleted without further investigation.
>
> I don't think it's *quite* that simple; you do need to check that the
> match you got back is a child of the directory you're testing.
>
> (You may have misinterpreted "greater or equal". What brane meant is
> that btree won't give you the closest match; it gives you the closest
> match which is greater than or equal to the key you asked for. That
> might or might not be a child of the directory you're searching for.)
I naively did a check on whether the returned key had a length >= than
what was passed in. I guess I need to add a string compare.
> (Hm, also, I think you need to be careful to search for the directory
> with a trailing slash, or you might get a lock entry for
> "<dirname><char>" where <char> is lexically less than '/', in which case
> you wouldn't be sure whether any descendants are locked.)
Yeah, that's an important thing that needs documenting.
Sander
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Nov 12 06:00:13 2004