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>[EMAIL PROTECTED], 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> [EMAIL PROTECTED], 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]