So i now have GOODs working semi reliably and as expected on Pharo 1.3 (squeaksource GOODS). I still don't know the root cause but I will work on it. I will just document my problem and how i fixed it in case anyone else runs into the same issue. I will also look at submitting the new test cases to the GOODs on squeaksource The root of the object database in goods is a Dictionary - pointing to various objects including a dictionary of users for seaside. When I would login the user into the seaside session, I would look up object previously from the dictionary of users. I then assume that any changes to the users would be persisted by the db commit command. eg establish xDict:= lookup dictionary of users from Goods session establish connection to database session login user using xDict to check for password etc. change user or subobjects ---> changes to the subojects were not saved here! session db commit --> write it all to the database. session logout -- disconnect db. the problem was that xDict was not linked to Goods anymore or had grown stale. So i could make a change to user and it would save but the sub objects would not be updated. The fix is during the session login user I need to traverse the entire goods db to retrieve the user. Then all commits etc work. eg: establish xDict:= lookup dictionary of users from Goods session establish connection to database session login user ---from xDict tUser:= traverse Goods until you find user save tUser (not the one found from xDict) . change user or subobjects session db commit --> write it all to the database. session logout -- disconnect db. S. On Nov 1, 2011, at 7:41 PM, mail list wrote:
Let me come up with a proper failing testcase and I will update the list. I was hoping for some general insight as I assumed it was just my misuse of the packages.
S. On Nov 1, 2011, at 5:34 PM, Stéphane Ducasse wrote:
let us know because core collection should be really robust.
Stef
On Nov 1, 2011, at 9:52 AM, mail list wrote:
I will check. Thank you.
The problem is definitely something related to 'reachability'. eg I can save the top level objects but the second level objects (eg instance varaibles of the top level) I can not get to save.
S. On Nov 1, 2011, at 2:59 PM, Lukas Renggli wrote:
Not sure if this is related, but the collection hierarchy got refactored in Pharo at some point to include HashedCollection (AFAIR) as superclass. Maybe this broke something with the persistence of Sets and Dictionaries?
Lukas
On Tuesday, 1 November 2011, mail list <mail.list@ficonab.com> wrote:
I am trying to deploy a Pharo 1.3 image using Goods and running into some basic issues where my objects are not persisted by reachability. eg I put dictionary x at root under a key 'test' eg db root at: 'test' put x. db commit. Then at x i updated instance variable and add something to its dictionary and committ eg x intancevariable y at: 'key' put 'zzzz' db commit
looking at the root x does not get updated with y.
I have the majority of the test cases pasing except for testIdentitySet and testFlushAllRemovesAllUnreferenced.
In testIdentitySet the following failure | set x y y2 | set := KKIdentitySet database: dbOne. x := 1@1. y := 2@2. set add: x. set add: y. self assert: (set includes: x). self assert: (set includes: y). self deny: (set includes: 1@1). -->fails
set = (2@2,1@1) so it seems to think that x and 1@1 are the same. Which to me seems correct but I may be misunderstanding the testcase.
Any thoughts or pointers to update my mistakes in using Goods db would be helpful.
S. On Oct 31, 2011, at 5:49 PM, Marcus Denker wrote:
13320 -----
Issue 4945: Weird Settings filtering http://code.google.com/p/pharo/issues/detail?id=4945
-- Marcus Denker -- http://marcusdenker.de
-- Lukas Renggli www.lukas-renggli.ch