On 18.01.2011 16:58, Julian Foad wrote: > On Thu, 2011-01-13, Branko Čibej wrote: >> This would indicate that the reference counting happens too soon ... in >> other words, that a pristine can be dereferenced whilst some part of the >> code (or database) still refers to it. That breaks database consistency >> -- what happens if the user aborts a commit and then calls 'svn >> cleanup', for example? > If what I said about 'commit' is correct, then yes, that's bad and we > should look for a better way. But I haven't tested it properly; I > noticed that the commit failed saying that the DB failed a 'REFERENCES' > clause, and what I said here is a hypothesis about how that happened. > > Investingating this is the second thing I would want to do next.
I beg to differ, it should be the first thing, because it's a correctness issue. If the references in the database are maintained correctly, then it should be safe to delete after each successful transaction commit. That's assuming that any high-level operation involves a single transaction, e.g., that a commit can't fail in some way that would require the pristine to still be in place in order to recover, even if the reference count in the database is 0. -- Brane