Hi Esteban,

sorry but I need your help again.

I succeeded in re-writing all my code to use voyage and can save all my
model now. Great!

Now I was experimenting with it and I have an Image freeze which should not
occur in production;-).

Situation:

I created one Person with two trips. Trip points back to its person.
After writing it into mongo, I delete one trip from mongo manually (I use
rockmongo, great tool).

So in the database, I have now
1) one Person which points to two trips
2) one trip (the other was deleted)

Now, I do:
Person selectAll first trips

and the image freezes.

Sometimes, I find in the DebugLog: 
VOMongoError: Lazy reference not found RKATrip: OID(103475906)

This is correct ;-)

I did also try with enableMissingContent but did not work.
http://forum.world.st/Voyage-GC-collecting-random-objects-td4668438.html

Sure, normally, we do not manipulate the database manually.
But I want to be sure that the image does not freeze if this occurs....

How can I solve this?

regards 
Sabine



###########################################
with this filein you can reproduce it easily
###########################################
Object subclass: #Person
        instanceVariableNames: 'trips lastName'
        classVariableNames: ''
        poolDictionaries: ''
        category: 'RKA24-Demo'!

!Person methodsFor: 'accessing' stamp: 'sabineknoefel 8/15/2013 10:02'!
lastName
        
        ^ lastName! !

!Person methodsFor: 'accessing' stamp: 'sabineknoefel 8/15/2013 10:02'!
lastName: anObject
        
        lastName := anObject! !

!Person methodsFor: 'accessing' stamp: 'sabineknoefel 8/15/2013 10:02'!
trips
        
        ^ trips! !

!Person methodsFor: 'accessing' stamp: 'sabineknoefel 8/15/2013 10:02'!
trips: anObject
        
        trips := anObject! !

"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!

Person class
        instanceVariableNames: ''!

!Person class methodsFor: 'as yet unclassified' stamp: 'sabineknoefel
8/15/2013 10:06'!
isVoyageRoot 
        ^true! !

!Person class methodsFor: 'as yet unclassified' stamp: 'sabineknoefel
8/15/2013 11:48'!
mongoContainer 
        <mongoContainer>
        
        ^VOMongoContainer new 
                collectionName: 'testPersons';
                enableMissingContent;
                kind: Person;
                yourself! !

!Person class methodsFor: 'as yet unclassified' stamp: 'sabineknoefel
8/15/2013 10:13'!
mongoTrips
        <mongoDescription>
        
        ^ VOMongoToManyDescription new
                attributeName: 'trips';
                kind: Trip;
                yourself! !


Object subclass: #Trip
        instanceVariableNames: 'description person'
        classVariableNames: ''
        poolDictionaries: ''
        category: 'RKA24-Demo'!

!Trip methodsFor: 'accessing' stamp: 'sabineknoefel 8/15/2013 10:04'!
description
        
        ^ description! !

!Trip methodsFor: 'accessing' stamp: 'sabineknoefel 8/12/2013 10:12'!
description: anObject
        
        description := anObject! !

!Trip methodsFor: 'accessing' stamp: 'sabineknoefel 8/15/2013 10:04'!
person
        
        ^ person! !

!Trip methodsFor: 'accessing' stamp: 'sabineknoefel 8/15/2013 10:04'!
person: anObject
        
        person := anObject! !

"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!

Trip class
        instanceVariableNames: ''!

!Trip class methodsFor: 'as yet unclassified' stamp: 'sabineknoefel
8/12/2013 09:47'!
isVoyageRoot 
        ^true! !

!Trip class methodsFor: 'as yet unclassified' stamp: 'sabineknoefel
8/15/2013 11:48'!
mongoContainer 
        <mongoContainer>
        
        ^VOMongoContainer new 
                collectionName: 'testTrips';
                enableMissingContent;
                kind: Trip;
                yourself! !

!Trip class methodsFor: 'as yet unclassified' stamp: 'sabineknoefel
8/15/2013 10:12'!
mongoPerson
        "VOMongoRepository allInstancesDo: #reset. "

        <mongoDescription>
        
        ^ VOMongoToOneDescription new
                attributeName: 'person';
                kind:  Person;
                yourself ! !

!Trip class methodsFor: 'as yet unclassified' stamp: 'sabineknoefel
8/15/2013 11:50'!
testOnePersonTwoTrips
        | theTrip the2ndTrip thePerson |
        thePerson := Person new lastName: 'Knoefel'.
        theTrip := Trip new description: 'Trip to Munic'.
        the2ndTrip := Trip new description: 'Trip to Essen'.
        theTrip person: thePerson.
        the2ndTrip person: thePerson.
        thePerson trips: (OrderedCollection with: theTrip with: the2ndTrip ).
        theTrip save.
        
        VOMongoRepository allInstancesDo: #reset. 
        
        "now I delete one trip from mongo"
        
        Person selectAll first trips! !




--
View this message in context: 
http://forum.world.st/Voyage-image-freeze-VOMongoError-Lazy-reference-not-found-tp4703739.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.

Reply via email to