cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ayhan Kondoz" <Ayhan.Kon...@freenet-ag.de>
Subject NullPointerException when using shared cache
Date Tue, 12 Sep 2006 09:51:18 GMT
Hello,

 

I am getting NullPointerExceptions when I am trying to use the shared caching feature of cayenne.


 

I have 3 servers. Each server has it's own tomcat / axis webservice and I have an avarage
access of about 4 - 5 connections per second. Each connection results in about 3 - 4 select
queries and about 20% of the connections result in an additional 2 - 3 insert / update queries.
So the servers are working at pretty heavy load.

 

Yesterday I implemented the usage of cayenne's (remote) shared caching feature using JavaGroups
and at first everything seemed to work just fine. But after about 1 hour, one of the servers
started to produce NullPointerExceptions on every connection. i found this bug ( http://issues.apache.org/cayenne/browse/CAY-565
) which seems to address my problem but the status is resolved?!

 

i tried cayenne 1.2 and 1.2B1 and in both cases got this exceptions but only if shared caching
is activated. When I deactivate caching everything seems to work fine again.

It seems that there is a problem with the syncronization. This error occursed when under heavy
load and a lot of threads are active at the same time. But if it is really a syncronization
problem the same error could occure on every system (even if much more unlikely) even if not
under heavy load.

 

Cheers

Ayhan Kondoz

 

 

The exception when using common-collections 3.2

 

[11.09.06 21:30:32] (ERROR): Entry.next=null, data[removeIndex]=<ObjectId:Customer, id=534080>=org.objectstyle.cayenne.DataRow@fda158[values={suspended=false,
login=christian.hantke1, rec_create=Tue May 02 00:00:00 CEST 2006, rec_change=Tue May 02 20:18:34
CEST 2006, last_updated=Mon Sep 11 21:28:26 CEST 2006, cid=709779451, id=534080, mandant_id=3},
version=-9223372036854422785, replaces=-9223372036854775808] previous=<ObjectId:Customer,
d=534080>=org.objectstyle.cayenne.DataRow@fda158[values={suspended=false, login=christian.hantke1,
rec_create=Tue May 02 00:00:00 CEST 2006, rec_change=Tue May 02 20:18:34 CEST 2006, last_updated=Mon
Sep 11 21:28:26 CEST 2006, cid=709779451, id=534080, mandant_id=3}, version=-9223372036854422785,
replaces=-9223372036854775808] key=<Ob

jectId:Customer, id=364956> value=org.objectstyle.cayenne.DataRow@426844[values={suspended=false,
login=nadda89, rec_create=Thu Mar 30 00:00:00 CEST 2006, rec_change=Thu Mar 30 22:19:00 CEST
2006, last_updated=Fri Aug 04 16:09:35 CEST 2006, cid=705229711, id=364956, mandant_id=3},
version=-9223372036854407476, replaces=-9223372036854775808] size=10000 maxSize=10000 Please
check that your keys are immutable, and that you have used synchronization properly. If so,
then please report this to commons-dev@jakarta.apache.org as a bug.

java.lang.IllegalStateException: Entry.next=null, data[removeIndex]=<ObjectId:Customer,
id=534080>=org.objectstyle.cayenne.DataRow@fda158[values={suspended=false, login=christian.hantke1,
rec_create=Tue May 02 00:00:00 CEST 2006, rec_change=Tue May 02 20:18:34 CEST 2006, last_updated=Mon
Sep 11 21:28:26 CEST 2006, cid=709779451, id=534080, mandant_id=3}, version=-9223372036854422785,
replaces=-9223372036854775808] previous=<ObjectId:Customer, id=534080>=org.objectstyle.cayenne.DataRow@fda158[values={suspended=false,
login=christian.hantke1, rec_create=Tue May 02 00:00:00 CEST 20 06, rec_change=Tue May 02
20:18:34 CEST 2006, last_updated=Mon Sep 11 21:28:26 CEST 2006, cid=709779451, id=534080,
mandant_id=3}, version=-9223372036854422785, replaces=-9223372036854775808] key=<ObjectId:Customer,
id=364956> value=org.objectstyle.cayenne.DataRow@426844[values={suspended=false, login=nadda89,
rec_create=Thu Mar 30 00:00:00 CEST 2006, rec_change=Thu Mar 30 22:19:00 CEST 2006, last_updated=Fri
Aug 04 16:09:35 CEST 2006, cid=705229711, id=364956, mandant_id=3}, version=-9223372036854407476,
replaces=-9223372036854775808] size=10000 maxSize=10000 Please check that your keys are immutable,
and that you have used synchronization properly. If so, then please report this to commons-dev@jakarta.apache.org
as a bug.

        at org.apache.commons.collections.map.LRUMap.reuseMapping(LRUMap.java:300)

        at org.apache.commons.collections.map.LRUMap.addMapping(LRUMap.java:266)

        at org.apache.commons.collections.map.AbstractHashedMap.put(AbstractHashedMap.java:283)

        at org.objectstyle.cayenne.access.DataRowStore.processUpdatedSnapshots(DataRowStore.java:537)

        at org.objectstyle.cayenne.access.DataRowStore.processSnapshotChanges(DataRowStore.java:496)

        at org.objectstyle.cayenne.access.ObjectStore.snapshotsUpdatedForObjects(ObjectStore.java:559)

        at org.objectstyle.cayenne.access.ObjectResolver.objectsFromDataRows(ObjectResolver.java:162)

        at org.objectstyle.cayenne.access.ObjectResolver.synchronizedObjectsFromDataRows(ObjectResolver.java:137)

        at org.objectstyle.cayenne.access.DataDomainQueryAction.interceptObjectConversion(DataDomainQueryAction.java:363)

        at org.objectstyle.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:151)

        at org.objectstyle.cayenne.access.DataDomain.onQuery(DataDomain.java:715)

        at org.objectstyle.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:249)

        at org.objectstyle.cayenne.access.DataContextQueryAction.execute(DataContextQueryAction.java:90)

        at org.objectstyle.cayenne.access.DataContext.onQuery(DataContext.java:1320)

        at org.objectstyle.cayenne.access.DataContext.performQuery(DataContext.java:1309)

 

The exception when using common-collections 3.1

 

[11.09.06 15:29:13] (ERROR): 

java.lang.NullPointerException

        at org.apache.commons.collections.map.LRUMap.reuseMapping(LRUMap.java:272)

        at org.apache.commons.collections.map.LRUMap.addMapping(LRUMap.java:243)

        at org.apache.commons.collections.map.AbstractHashedMap.put(AbstractHashedMap.java:282)

        at org.objectstyle.cayenne.access.DataRowStore.processUpdatedSnapshots(DataRowStore.java:612)

        at org.objectstyle.cayenne.access.DataRowStore.processSnapshotChanges(DataRowStore.java:571)

        at org.objectstyle.cayenne.access.DataRowStore.snapshotsUpdatedForObjects(DataRowStore.java:313)

        at org.objectstyle.cayenne.access.ObjectResolver.objectsFromDataRows(ObjectResolver.java:159)

        at org.objectstyle.cayenne.access.ObjectResolver.synchronizedObjectsFromDataRows(ObjectResolver.java:134)

        at org.objectstyle.cayenne.access.DataDomainQueryAction.interceptObjectConversion(DataDomainQueryAction.java:373)

        at org.objectstyle.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:151)

        at org.objectstyle.cayenne.access.DataDomain.onQuery(DataDomain.java:766)

        at org.objectstyle.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:253)

        at org.objectstyle.cayenne.access.DataContextQueryAction.execute(DataContextQueryAction.java:90)

        at org.objectstyle.cayenne.access.DataContext.onQuery(DataContext.java:1422)

        at org.objectstyle.cayenne.access.DataContext.performQuery(DataContext.java:1411)

 

 

 

Ayhan Kondoz

 

Software-Entwicklung

 

----------------------------------------------------------------------------------

Telefon:    +49 (0) 40 513 06 616

Telefax:    +49 (0) 40 513 06 998 616

E-Mail:     ayhan.kondoz@freenet-ag.de <mailto:ayhan.kondoz@freenet-ag.de> 

Website:  http://www.freenet.de <http://www.freenet.de/> ; http://www.freenet-ag.de
<http://www.freenet-ag.de/> 

----------------------------------------------------------------------------------

freenet.de AG

Deelbögenkamp 4c

22297 Hamburg

----------------------------------------------------------------------------------

Vorsitzender des Aufsichtsrates: Prof. Dr. Helmut Thoma

Vorstand: Eckhard Spoerr (Vors.), 
Axel Krieger, Stephan Esch, Eric Berger

Amtsgericht Hamburg HRB 74048

 

 

Diese Information ist ausschließlich für die adressierte Person oder Organisation bestimmt
und könnte vertrauliches und/oder privilegiertes Material enthalten. Personen oder Organisationen,
für die diese Information nicht bestimmt ist, ist es nicht gestattet, diese zu lesen, erneut
zu übertragen, zu verbreiten, anderweitig zu verwenden oder sich durch sie veranlasst zu
sehen, Maßnahmen irgendeiner Art zu ergreifen. Sollten Sie diese Nachricht irrtümlich erhalten
haben, bitten wir Sie, sich mit dem Absender in Verbindung zu setzen und das Material von
Ihrem Computer zu löschen. 

 

The information transmitted is intended only for the person or entity to which it is addressed
and may contain confidential and/or privileged material. Any review, retransmission, dissemination
or other use of, or taking of any action in reliance upon, this information by persons or
entities other than the intended recipient is prohibited. If you received this in error, please
contact the sender and delete the material from any computer.

 


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message