> -----Original Message-----
> From: Julian Foad [mailto:julian.f...@wandisco.com]
> Sent: donderdag 27 januari 2011 18:06
> To: Bert Huijben
> Cc: 'Branko Čibej'; dev@subversion.apache.org
> Subject: RE: Ref-counting for pristine texts
> 
> On Wed, 2011-01-26, Bert Huijben wrote:
> > > -----Original Message-----
> > > From: Julian Foad [mailto:julian.f...@wandisco.com]
> > >
> > > Can anyone help me work out the rules for guaranteeing consistency
> of
> > > the pristine text store?
> >
> > Previously we used a somewhat reversed definition: as long as there
> > are work queue items or working-copy locks, you can't assume
> pristines
> > are unreferenced.
> 
> Ah, WC-locks.  Yes, that sounds more likely.  (I don't recall that we
> have ever used that rule yet.  The pristine cleanup code has only ever
> checked "WQ is empty", which isn't good enough.)
> 
> > Note that there can be multiple clients accessing/modifying a working
> > copy at the same time even though they don't have a sqlite
> transaction
> > open. (An update doesn’t keep it's transaction open for the entire
> > update process).
> 
> Yes.  Nor does the update process keep work items items in the WQ
> during
> the whole time - it runs the WQ at various points.  But there is a WC
> lock through the whole update process.
> 
> So we can write a rule:
> 
>   "You may purge unreferenced pristines only when
>    there are no WC locks in the DB."
> 
> More precisely, the access control rules for the pristine store in a
> given WC shall be:
> 
>   * A process may add a new (initially unreferenced) pristine text
>     to the store
>     IFF this process has a WC lock.
> 
>   * A process may add or remove references to any pristine text that
>     is in the store
>     IFF this process has a WC lock.

Maybe this one can be loosened a bit; not sure though... (incrementing or 
decrementing a reference is probably safe when the other rules are followed)

> 
>   * A process that has a WC lock may assume that no pristine text,
>     even if unreferenced, will be deleted from the store as long as
>     this process holds any WC lock in this WC.
> 
>   * A process may purge an unreferenced pristine text
>     IFF no other process has a WC lock.
>     ### Must this process have a WC lock?
> 
> (I use the word "process" loosely.)
> 
> Does that make sense?

I think it does.

        Bert
> 
> - Julian
> 


Reply via email to