Hi,
I'm not particulary knowledgeable of inner workings of Iliad or voyage. But I think you should have a look at ghostproxy http://rmod.lille.inria.fr/web/pier/software/Marea/GhostProxies.
The idea being that after storing your objects you should keep proxies to them in the image. These proxies would replace your objects and have knowledge of how to retrieve them from voyage. Something like that is done by the marea project. http://rmod.lille.inria.fr/web/pier/software/Marea
Cheers
Hi!We've been trying to migrate the data of our Iliad webapp to Voyage, and so far everything was going great, until the garbage collector collected objects it shouldn't have... Here's what we did:We used to have all objects stored in an Instances classVar belonging to their own classes, so:
- I had our classes return true to #isVoyageRoot
- ourClasses do: [ :c | (c classVarNamed: #Instances) do: [ :i | i save ]]
- I checked MongoDB and all was looking great. From Pharo, we could get all our instances and explore all of their relationships by OurClass selectAll.��Everything was working, so we thought we didn't need the image stored instances anymore, thus:
- ourClasses do: [ :c | c classVarNamed: #Instances put: nil ]
- Smalltalk garbageCollect
- RMUser selectAll ��� (long delay) ��� BOOM ��� 'Reference ��not found RMUser: OID(3725800612)'
So, should we actually keep references to our instances in the image? I doubt this is the case, cos that'd mean we still have the 2Gb storage limitation, and then having an external DB would not be helping much...Thanks a lot in advance!Bernat.p.s. I've also tried saving copies of my objects, but the result's been the same, after garbage-collecting, I lose references.--
Bernat Romagosa.