cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <>
Subject Re: IllegalStateException in DataRowStore (thrown by LRUMap)
Date Mon, 19 Jun 2006 09:03:13 GMT
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.


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

View raw message