Hi Armin,

ok, you are right, there are multiple threads using the same PersistenceBroker.
This must be the error.

Now it's clear, first thread clears the listener list while the other is modifing 
it -> BANG ;)

Thank you for the fast (and excellent) support.

Regards,
Oliver


Armin Waibel wrote:
sorry typo:

"strange, I can't find a reson how these exceptions can happen..."

Armin Waibel wrote:

Hi,

strange, I kind find a reson how these exception can happen

java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at org.apache.ojb.broker.core.PersistenceBrokerAbstractImpl.addListener(PersistenceBrokerAbstractImpl.java:112)


at org.apache.ojb.broker.core.PersistenceBrokerAbstractImpl.addListener(PersistenceBrokerAbstractImpl.java:87)

at org.apache.ojb.broker.accesslayer.RsIterator.<init>(RsIterator.java:205)

or

java.lang.NullPointerException
at org.apache.ojb.broker.core.PersistenceBrokerAbstractImpl.notifiyStateListener(PersistenceBrokerAbstractImpl.java:350)


at org.apache.ojb.broker.core.PersistenceBrokerAbstractImpl.fireBrokerEvent(PersistenceBrokerAbstractImpl.java:305)

at org.apache.ojb.broker.core.PersistenceBrokerImpl.beginTransaction(PersistenceBrokerImpl.java:400)


Think the only reason can be a concurrency problem. Do you use any daemon/timer objects? Since you can't reproduce this issue with an test case it's hard to find out the reason. Could you find any flaws in PersistenceBrokerAbstractImpl?


regards,
Armin


Oliver Mihatsch wrote:

Hi Armin,

no, every thread and function creates a new Persistence Broker before any database interaction.

Regards,
Oliver

Armin Waibel wrote:

Hi Oliver,

could it happen that
de.virtualsolution.util.OJBUtil.retrieve(OJBUtil.java:174)
and
de.virtualsolution.util.OJBUtil.delete(OJBUtil.java:152)
was called by concurrent threads at the same time (on the same PB instance)?


regsrds,
Armin

Oliver Mihatsch wrote:

Hm, this could be the cause, but not sure:

java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at org.apache.ojb.broker.core.PersistenceBrokerAbstractImpl.addListener(PersistenceBrokerAbstractImpl.java:112)


at org.apache.ojb.broker.core.PersistenceBrokerAbstractImpl.addListener(PersistenceBrokerAbstractImpl.java:87)

at org.apache.ojb.broker.accesslayer.RsIterator.<init>(RsIterator.java:205)

at org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterator(RsIteratorFactoryImpl.java:58)

at org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(PersistenceBrokerImpl.java:1808)

at org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(PersistenceBrokerImpl.java:1333)

at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java:111)

at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java:233)

at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java:269)

at org.apache.ojb.broker.core.QueryReferenceBroker.retrieveCollection(QueryReferenceBroker.java:566)

at org.apache.ojb.broker.core.PersistenceBrokerImpl.refreshRelationships(PersistenceBrokerImpl.java:1184)

at org.apache.ojb.broker.core.PersistenceBrokerImpl.doGetObjectByIdentity(PersistenceBrokerImpl.java:1378)

at org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByIdentity(PersistenceBrokerImpl.java:1346)

at org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(PersistenceBrokerImpl.java:1435)

at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(DelegatingPersistenceBroker.java:307)

at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(DelegatingPersistenceBroker.java:307)

    at de.virtualsolution.util.OJBUtil.retrieve(OJBUtil.java:174)
...



Oliver Mihatsch wrote:

Hello,

in a web application I developed there is a strange error which occurs every 2 Weeks - 2 Months:

java.lang.NullPointerException
at org.apache.ojb.broker.core.PersistenceBrokerAbstractImpl.notifiyStateListener(PersistenceBrokerAbstractImpl.java:350)


at org.apache.ojb.broker.core.PersistenceBrokerAbstractImpl.fireBrokerEvent(PersistenceBrokerAbstractImpl.java:305)

at org.apache.ojb.broker.core.PersistenceBrokerImpl.beginTransaction(PersistenceBrokerImpl.java:400)

at org.apache.ojb.broker.core.DelegatingPersistenceBroker.beginTransaction(DelegatingPersistenceBroker.java:139)

at org.apache.ojb.broker.core.DelegatingPersistenceBroker.beginTransaction(DelegatingPersistenceBroker.java:139)

    at de.virtualsolution.util.OJBUtil.delete(OJBUtil.java:152)
....

OJB Version I'm using is ojb-1.0.1. It is self compiled to get the debug informations.
After the error occurs every ojb db access fails with this NPE. Only restarting the application helps.


The error is reproducable, but it takes ca. 2 Weeks - 2 Months to get it ;)
I think only insert/update/delete actions produces it, but not sure.


Thanks in advance,
Oliver Mihatsch

---------------------------------------------------------------------
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]




--------------------------------------------------------------------- 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]




--------------------------------------------------------------------- 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]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to