What I've just realized is that the DataContext is obtained like this : import org.objectstyle.cayenne.conf.ServletUtil. ... ServletUtil.getSessionContext(request.getSession());
In the user guide the following two methods are descriped: BasicServletConfiguration.getDefaultContext(session); DataContext.getThreadDataContext(); Could that cause any problems ? Lothar > -----Ursprüngliche Nachricht----- > Von: [email protected] > Gesendet: 19.06.06 11:03:45 > An: [email protected] > Betreff: Re: IllegalStateException in DataRowStore (thrown by LRUMap) > I did some research of CAY-565 over the weekend. Unfortunately I > can't reproduce the issue. > > I wrote a test case that randomly performs one of the operations - > select; insert of an object with relationship; object update; object > delete with relationship. Running up to 30 parallel request threads > with JMeter, I don't see any exceptions except for occasional fault > failures (that are expected under these test conditions as I don't > lock the objects). I even found and fixed an unrelated deadlock that > I am sure nobody has ever seen in the wild (CAY-573)... still can't > reproduce the LRUMap problem. > > I'll try to change the test conditions, but if Bryan or Lothar (two > people who have experienced the issue) have any more insights on the > ways to reproduce it, please share. > > Andrus > > > On Jun 16, 2006, at 1:27 PM, Andrus Adamchik wrote: > > On Jun 16, 2006, at 1:12 PM, Lothar Krenzien wrote: > > > >> I did it yesterday and now I'm getting the already known NPE > >> again. And I'm sure that I didn't changed the cayenne version. But > >> what I saw is that in the case of NPE always the same method of me > >> is called. > > > > Very very strange... so this would confirm a suspicion that there > > is a bug in the LRUMap not related to synchronization. > > > > > >> Another question : > >> I have a class which is extended from 'WebApplicationListener'. In > >> the method 'sessionDestroyed' the following code is executed : > >> > >> ObjectStore objectStore = dctx.getObjectStore(); > >> objectStore.objectsInvalidated(objectStore.getObjects()); > >> > >> It that really neccessary ? > > > > It may or may not be useful. On the one hand, the ObjectStore is > > about to go out of scope at this point, so it (and all its objects) > > will be garbage collected without any extra help. > > > > One other thing that invalidate does is throwing away cached > > snapshots from the cache shared by other sessions. On the positive > > side it frees up some memory, on the negative - it removes items > > from cache that could've otherwise speed up object resolution in > > other sessions. > > > > I'd say keep it if your sessions share just a few objects between > > each other or share no objects at all; throw it away if the object > > sets significantly overlap between individual sessions. > > > > Andrus > > > _____________________________________________________________________ Der WEB.DE SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! http://smartsurfer.web.de/?mc=100071&distributionid=000000000071
