Here is my log. There is one suspicious momemt (with loadedFlags) but I don't know how to interpret it.
FINE: Object with id "ru.englishvocabulary.model.test.Container:Container(738)" not found in Level 1 cache [cache size = 0] 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl putObjectIntoCache FINE: Object "ru.englishvocabulary.model.test.contai...@ad9064" (id="ru.englishvocabulary.model.test.Container:Container(738)") added to Level 1 cache (loadedFlags="[NY]") 09.04.2010 11:16:58 org.datanucleus.transaction.Transaction enlistResource FINE: Running enlist operation on resource: org.datanucleus.store.appengine.datastorexaresou...@150b604, error code TMNOFLAGS and transaction: [DataNucleus Transaction, ID=Xid=, enlisted resources=[]] // My item is added to cache 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl getObjectFromCache FINE: Object with id "ru.englishvocabulary.model.test.Item:Container(738)/Item(743)" not found in Level 1 cache [cache size = 1] 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl putObjectIntoCache FINE: Object "ru.englishvocabulary.model.test.i...@3b971e" (id="ru.englishvocabulary.model.test.Item:Container(738)/Item(743)") added to Level 1 cache (loadedFlags="[NYN]") // I change my item 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl enlistInTransaction FINE: Object "ru.englishvocabulary.model.test.i...@3b971e" (id="com.google.appengine.api.datastore.Key:Container(738)/Item(743)") enlisted in transactional cache 09.04.2010 11:16:58 ru.englishvocabulary.bl.local.test.LocalService changeItems SEVERE: changed item: i...@3b971e [key=Container(738)/Item(743), value=xxx] // Load the list that contains my item 09.04.2010 11:16:58 org.datanucleus.sco.backed.List <init> FINE: Object "ru.englishvocabulary.model.test.contai...@ad9064" field "items" is replaced by a SCO wrapper of type "org.datanucleus.sco.backed.List" [cache-values=true, lazy-loading=true, queued-operations=true, allow-nulls=false] 09.04.2010 11:16:58 org.datanucleus.sco.backed.List loadFromStore FINE: Object "ru.englishvocabulary.model.test.contai...@ad9064" field "items" loading contents to SCO wrapper from the datastore 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl getObjectFromCache FINE: Object with id "ru.englishvocabulary.model.test.Item:Container(738)/Item(739)" not found in Level 1 cache [cache size = 2] 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl getObjectFromCache FINE: Object with id "ru.englishvocabulary.model.test.Item:Container(738)/Item(739)" not found in Level 1 cache [cache size = 2] 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl putObjectIntoCache FINE: Object "ru.englishvocabulary.model.test.i...@12b23ce" (id="ru.englishvocabulary.model.test.Item:Container(738)/Item(739)") added to Level 1 cache (loadedFlags="[NYN]") 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl getObjectFromCache FINE: Object with id "ru.englishvocabulary.model.test.Item:Container(738)/Item(740)" not found in Level 1 cache [cache size = 3] 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl getObjectFromCache FINE: Object with id "ru.englishvocabulary.model.test.Item:Container(738)/Item(740)" not found in Level 1 cache [cache size = 3] 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl putObjectIntoCache FINE: Object "ru.englishvocabulary.model.test.i...@13bc5ad" (id="ru.englishvocabulary.model.test.Item:Container(738)/Item(740)") added to Level 1 cache (loadedFlags="[NYN]") 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl getObjectFromCache FINE: Object with id "ru.englishvocabulary.model.test.Item:Container(738)/Item(741)" not found in Level 1 cache [cache size = 4] 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl getObjectFromCache FINE: Object with id "ru.englishvocabulary.model.test.Item:Container(738)/Item(741)" not found in Level 1 cache [cache size = 4] 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl putObjectIntoCache FINE: Object "ru.englishvocabulary.model.test.i...@12f1aef" (id="ru.englishvocabulary.model.test.Item:Container(738)/Item(741)") added to Level 1 cache (loadedFlags="[NYN]") 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl getObjectFromCache FINE: Object with id "ru.englishvocabulary.model.test.Item:Container(738)/Item(742)" not found in Level 1 cache [cache size = 5] 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl getObjectFromCache FINE: Object with id "ru.englishvocabulary.model.test.Item:Container(738)/Item(742)" not found in Level 1 cache [cache size = 5] 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl putObjectIntoCache FINE: Object "ru.englishvocabulary.model.test.i...@19146a5" (id="ru.englishvocabulary.model.test.Item:Container(738)/Item(742)") added to Level 1 cache (loadedFlags="[NYN]") // My item is taken from cache (loadedFlags ([NYY]) differ from previous value ([NYN])) 09.04.2010 11:16:58 org.datanucleus.ObjectManagerImpl getObjectFromCache FINE: Object "ru.englishvocabulary.model.test.i...@3b971e" (id="ru.englishvocabulary.model.test.Item:Container(738)/Item(743)") taken from Level 1 cache (loadedFlags="[NYY]") [cache size = 6] 09.04.2010 11:16:58 ru.englishvocabulary.bl.local.test.LocalService changeItems SEVERE: list item: i...@12b23ce [key=Container(738)/Item(739), value=0] 09.04.2010 11:16:58 ru.englishvocabulary.bl.local.test.LocalService changeItems SEVERE: list item: i...@13bc5ad [key=Container(738)/Item(740), value=1] 09.04.2010 11:16:58 ru.englishvocabulary.bl.local.test.LocalService changeItems SEVERE: list item: i...@12f1aef [key=Container(738)/Item(741), value=2] 09.04.2010 11:16:58 ru.englishvocabulary.bl.local.test.LocalService changeItems SEVERE: list item: i...@19146a5 [key=Container(738)/Item(742), value=3] // My item's changes disappear. Why? 09.04.2010 11:16:58 ru.englishvocabulary.bl.local.test.LocalService changeItems SEVERE: list item: i...@3b971e [key=Container(738)/Item(743), value=4] 09.04.2010 11:16:58 ru.englishvocabulary.bl.local.test.LocalService changeItems SEVERE: changed item: i...@3b971e [key=Container(738)/Item(743), value=4] On Fri, Apr 9, 2010 at 4:41 PM, datanucleus <andy_jeffer...@yahoo.com>wrote: > > I think you've misunderstood where problem is. > > I simply point out where the persistence code is plain wrong; whether > that has an impact on what happens after is unknown. Debugging what is > happening in that particular operation you quote there ought to make > reference to the log at DEBUG level since it will tell you when things > go to the datastore (or at least it ought to if the GAE/J plugin has > adequate logging - and if it doesn't then raise an issue on them). > Calling setValue will make the Item dirty, hence there is no need for > any call to JDOHelper.makeDirty ... the log would tell this. The log > would also tell you where items come from (L1 cache, L2 cache, etc). > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine for Java" group. > To post to this group, send email to > google-appengine-j...@googlegroups.com. > To unsubscribe from this group, send email to > google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/google-appengine-java?hl=en. > > -- Verba volant, scripta manent -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.