[Pharo-project] Voyage: GC collecting random objects?

Bernat Romagosa tibabenfortlapalanca at gmail.com
Fri Feb 8 05:46:34 EST 2013


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:

   1. I had our classes return true to *#isVoyageRoot*
   2. *ourClasses do: [ :c | (c classVarNamed: #Instances) do: [ :i | i
   save ]]*
   3. 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:
   4. *ourClasses do: [ :c | c classVarNamed: #Instances put: nil ]*
   5. *Smalltalk garbageCollect*
   6. *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!


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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/attachments/20130208/f6043efb/attachment-0001.html>

More information about the Pharo-dev mailing list