Indexing

Chris Muller chris at funkyobjects.org
Fri Feb 17 15:58:33 UTC 2006


Howdy Göran!

What version of Magma are you using?

> AFAICT MaTransaction>>markRead:using: calls
> monitorLargeCollectionChanges:, but the WeakSet in
> MaTransaction just
> keeps growing, I assume it uses identity instead but
> perhaps should use
> equality?. Looks like a bug, anyway that is not my
> issue here...

I'm trying to understand this without having access to
Squeak right now..  not remembering what WeakSet you
may be talking about; I know the MaTransaction has a
'readSet' which is a WeakIdentityKeyDictionary but
what is the name of the variable referencing the
WeakSet?  I don't remember, I'm afraid I'll have to
wait until this weekend to comment, sorry.

> So the code in captureOldHashesFor: seems to only
> capture the hashes for
> the large collections that are "monitored", but in
> my case this happens
> to only include the collection I navigated through
> (since I then read
> it), but not the other! Is this logic really
> correct? Or do I need to
> "trick" the session into reindexing my other
> collection too somehow?

No, this does not sound correct.  All LargeCollections
should be monitored as soon as they're persistent.  If
they're not persistent, changing keys doesn't matter. 
But again, I'm talking codeless here..

Brent are you around?  Didn't we just fix a bug
related to this recently?

Sorry you had this problem Göran.  I will investigate
it this weekend and have an answer/fix for you.

> The current result seems to be that object A is only
> reindexed in the
> collection I navigated through.  I assume there is
> currently no way for
> Magma to know which collections it should re-index
> on its own.

Nope, no way.  I tried real hard for Magma to detect
this automatically but eventually concluded it was
impossible without severely affecting performance.

I'll get back to you tomorrow or Sunday..  Be sure to
tell me what version you're using.

 - Chris



More information about the Magma mailing list