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