Re: NullPointerException when using shared cache

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Mon Sep 25 2006 - 10:08:35 EDT

  • Next message: Francesco Fuzio: "Re: Caching query results"

    Thanks Bryan! This is certainly helpful.

    Andrus

    On Sep 25, 2006, at 10:05 AM, Bryan Lewis wrote:
    > Okay, I installed the patched jar on our production servers. It'll be
    > difficult to say for sure that the problem was fixed, seeing as how it
    > happened to us only once this year. The absence of a report from me
    > will mean that things at least didn't get any worse. :-)
    >
    >
    > Andrus Adamchik wrote:
    >> Ayhan, Wolfgang and others who have this synchronization issue - I
    >> posted a patched version of 1.2.1 Cayenne:
    >>
    >> http://dev.objectstyle.org/~andrus/cayenne-1.2.1-CAY-565-
    >> patched.tar.gz
    >>
    >> I would appreciate very much if you could test it in your environment
    >> and let me know whether it fixes the problem. I posted more comments
    >> and the exact patches that were applies on Jira:
    >>
    >> http://issues.apache.org/cayenne/browse/CAY-565
    >>
    >> Thanks
    >> Andrus
    >>
    >>
    >> On Sep 12, 2006, at 9:35 AM, Andrus Adamchik wrote:
    >>
    >>> CAY-565 was closed as "Can not reproduce", so there was no fix. I
    >>> reopened this issue, bumping the priority to "Critical". I will add
    >>> synchronization, even though I can't test it.
    >>>
    >>> Andrus
    >>>
    >>>
    >>> On Sep 12, 2006, at 5:51 AM, Ayhan Kondoz wrote:
    >>>> 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.DataRo..da158[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.DataRo..da158[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.DataRo..26844[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-de..akarta.apache.org as a bug.
    >>>>
    >>>> java.lang.IllegalStateException: Entry.next=null,
    >>>> data[removeIndex]=<ObjectId:Customer,
    >>>> id=534080>=org.objectstyle.cayenne.DataRo..da158[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.DataRo..da158[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.DataRo..26844[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-de..akarta.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.snapshotsUpdatedForObjec
    >>>> ts(ObjectStore.java:559)
    >>>>
    >>>>
    >>>> at
    >>>> org.objectstyle.cayenne.access.ObjectResolver.objectsFromDataRows
    >>>> (ObjectResolver.java:162)
    >>>>
    >>>>
    >>>> at
    >>>> org.objectstyle.cayenne.access.ObjectResolver.synchronizedObjectsFr
    >>>> omDataRows(ObjectResolver.java:137)
    >>>>
    >>>>
    >>>> at
    >>>> org.objectstyle.cayenne.access.DataDomainQueryAction.interceptObjec
    >>>> tConversion(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.snapshotsUpdatedForObje
    >>>> cts(DataRowStore.java:313)
    >>>>
    >>>>
    >>>> at
    >>>> org.objectstyle.cayenne.access.ObjectResolver.objectsFromDataRows
    >>>> (ObjectResolver.java:159)
    >>>>
    >>>>
    >>>> at
    >>>> org.objectstyle.cayenne.access.ObjectResolver.synchronizedObjectsFr
    >>>> omDataRows(ObjectResolver.java:134)
    >>>>
    >>>>
    >>>> at
    >>>> org.objectstyle.cayenne.access.DataDomainQueryAction.interceptObjec
    >>>> tConversion(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.kondo..reenet-ag.de
    >>>> <mailto:ayhan.kondo..reenet-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.
    >>>>
    >>>>
    >>>>
    >>>
    >>>
    >>
    >
    >
    >



    This archive was generated by hypermail 2.0.0 : Mon Sep 25 2006 - 10:09:22 EDT