On 27.01.2011 20:44, Julian Foad wrote:
> My thinking was that if I don't have a lock, I can't safely add a
> reference because another process might delete the text just before I
> get around to executing that statement.  But in fact I don't necessarily
> need a WC lock, I need *either* a WC lock *or* a SQL txn.  And within
> that lock or txn I need to check the pristine text exists in the store
> before I add the reference.
>
> To remove a reference, I can't think why I should need a lock or a txn.

Can't be that simple. Every change to the database happens within a
transaction, every transaction can be rolled back in the event of any
kind of error. Consequently, you can only remove a reference (decrease a
reference counter) in such a way that rolling back the transaction in
which that happens can never leave a dangling reference to a deleted
pristine text.

In other words, deleting a pristine text requires an exclusive lock on
the database -- it is a write operation that affects database consistency.

-- Brane

Reply via email to