commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stephen Colebourne <scolebou...@btopenworld.com>
Subject Re: LRUMap NullpointerException
Date Sun, 18 Jun 2006 13:35:05 GMT
Can you also check all loops of the map are synchronized correctly:

synchronied (map) {
   Iterator it = mpap.keySet().iterator();
   while (it.hasNext()) {
     ..
   }
}

and so on. The synchronized MUST be around the whole looping.

Stephen


Thilko Richter wrote:
> Hi there,
> 
> we used Version 3.2 and synchronized all access to LRUMap. WE get this IllegalStateException.
Can you reproduce this behauviour?
> 
> 
> 
> 
> 
> 2006-06-14 00:26:22,359 [ERROR] BaseDataLoggerGate.com.sunreader.sr2.gate.BaseDataLoggerGate.doPost:
> 
> java.lang.IllegalStateException: Entry.next=null, data[removeIndex]=<ObjectId:TblStatusstatus=ins>=org.objectstyle.cayenne.DataRo..f1d2ce[values={description=inserted,
status=ins}, version=-9223372036854491432, replaces=-9223372036854775808] previous=<ObjectId:TblEffBlockDataeffBlockDataId=24455598>=org.objectstyle.cayenne.DataRow@4bac35[values={tempValue=31.35,
efficiencyValue=1.0761, effBlockDataId=24455598, energyValue=8.16, efficiencyBlockId=767,
status=ins, irradiationValue=673.98, earnings=4.4064, importEffBlockDataId=1042169, dataDate=Mon
Jun 12 11:30:00 CEST 2006, co2Saving=6.12}, version=-9223372036854494908, replaces=-9223372036854495032]
key=<ObjectId:TblLoggerloggerId=923> value=org.objectstyle.cayenne.DataRow@1a87890[values={plantId=923,
newSerialNumber=null, commChannelType=analog, loggerProductId=1, loggerId=923, serialNumber=DL-NE101-01331,
commChannelManufacturer=Conergy}, version=-9223372036854491407, replaces=-9223372036854775808]
size=10000 maxSize=1000
0 
> 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:621)

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

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

> 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:375)

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

> at org.objectstyle.cayenne.access.DataDomain.onQuery(DataDomain.java:765) 
> 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) 
> at com.conergy.sunreader.sr2.back.dao.ProductDAO.isLoggerAlreadyAvailable(Unknown Source)

> 
> 
> Thanks a lot,
> 
> Thilko
> 
> 
> 
> After extensive testing, we can only reproduce this when the map has not 
> been correctly synchronized, or a mutable key has been used (as opposed 
> to an immutable one).
> 
> If you upgrade to collections v3.2 you will get extra logging which may 
> help diagnose the problem.
> 
> Stephen
> 
> Thilko Richter wrote:
> 
>>Hi all,
>>
>>I am working with Cayenne and I ´ve get the following Exception:
>>
>>Caused by: 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:621)
>>	at org.objectstyle.cayenne.access.DataRowStore.processSnapshotChanges(DataRowStore.java:575)
>>	at org.objectstyle.cayenne.access.DataRowStore.snapshotsUpdatedForObjects(DataRowStore.java:314)
>>	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:375)
>>	at org.objectstyle.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:151)
>>	at org.objectstyle.cayenne.access.DataDomain.onQuery(DataDomain.java:765)
>>	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)
>>	at org.objectstyle.cayenne.access.DataContextFaults$ToOneFault.doResolveFault(DataContextFaults.java:144)
>>	at org.objectstyle.cayenne.access.DataContextFaults$ToOneFault.resolveFault(DataContextFaults.java:117)
>>	at org.objectstyle.cayenne.CayenneDataObject.readProperty(CayenneDataObject.java:245)
>>	at com.conergy.sunreader.sr2.back.auto._TblAccount.getTblPerson(Unknown Source)
>>	at com.conergy.sunreader.sr2.back.dao.UserDAO.setAccountPersonData(Unknown Source)
>>	at com.conergy.sunreader.sr2.back.dao.UserDAO.getUser(Unknown Source)
>>	at com.conergy.sunreader.sr2.back.dao.UserDAO.login(Unknown Source)
>>	at com.conergy.sunreader.sr2.back.proxy.CayenneProxy.login(Unknown Source)
>>	at com.conergy.sunreader.sr2.back.BusinessFacade.login(Unknown Source)
>>	at com.conergy.sunreader.sr2.struts.actions.Sr2BaseAction.loginUser(Unknown Source)
>>	... 31 more
>>
>>
>>We have posted this exception in cayenne newsgroup before and we found out, that the
> 
> caller of LRUMap is responsible for the thread safety. We´ve changed some methods
calls in
> caeynne temporarily, but we still get this exception. Could anyone help us and tell,
waht
> was going wrong here?
> 
>>We using commons-collection v.3.1
>>
>>This behauvior occurs when the machine is under heavy load and a lot threads access
are
> 
> created.
> 
>>Thanks in advance,
>>
>>Thilko
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-user-help@jakarta.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org


Mime
View raw message