[rucksack-devel] GC problems (Was: Rucksack error)

Edi Weitz edi at agharta.de
Sun Jul 23 20:00:09 UTC 2006


On Thu, 20 Jul 2006 12:01:07 +0200, Edi Weitz <edi at agharta.de> wrote:

> The only idea I could come up with is the following: In the
> :MARKING-OBJECT-TABLE phase never mark objects dead that belong to
> the current transaction.  This assumes that a) we're always within a
> transaction and b) transactions can't be nested, but I think this is
> what Rucksack currently does anyway.

And c) it ignores the fact that there could be other threads having
other transactions opened at the same time.  (Or is that forbidden?  I
hope not.)  So, it won't be enough to just check *TRANSACTION*, rather
the rucksack object would have to keep track of /all/ open
transactions.  (And two different threads couldn't open the same
on-disk rucksack at the same time, instead you'd have to open it
first, then "fork."  Or, as an alternative, the IDs of all open
transactions have to be on disk as well.  Another source of potential
race conditions, I'd say.)

Hmm...

Anyway, I currently think there are more substantial problems with the
garbage collector.  I'm trying to build a simple test case which
demonstrates them.  More later.

Cheers,
Edi.



More information about the rucksack-devel mailing list