You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Patrick Linskey (JIRA)" <ji...@apache.org> on 2007/06/20 00:09:25 UTC

[jira] Commented: (OPENJPA-261) NullPointerException occurred in BrokerImpl.java

    [ https://issues.apache.org/jira/browse/OPENJPA-261?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12506312 ] 

Patrick Linskey commented on OPENJPA-261:
-----------------------------------------

So you're saying that Collections.EMPTY_LIST.iterator() is returning null? That seems surprising. What version of Java are you using? Can you check if your Java version is returning null from Collecitons.EMPTY_LIST.iterator()?

> NullPointerException occurred in BrokerImpl.java
> ------------------------------------------------
>
>                 Key: OPENJPA-261
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-261
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 0.9.7
>         Environment: Window XP
>            Reporter: Teresa Kan
>            Priority: Critical
>         Attachments: NPE.patch
>
>
> While I was testing against the openjpa code, I got a NPE in the BrokerImpl.endtransaction() method. The method set the transState to an empty Collection if there is no cache for transactions. Later the code did not check this Collection and tried to iterate on it and a NullPointerException occurred.
> Original code:
> Collection transStates = _transCache;
>         if (transStates == null)
>             transStates = Collections.EMPTY_LIST;
> .....
> for (Iterator itr = transStates.iterator(); itr.hasNext();) {  <--- NPE occurred here.
>             sm = (StateManagerImpl) itr.next();
>             try {
>                 if (rollback) {
>                     // tell objects that may have been derefed then flushed
>                     // (and therefore deleted) to un-deref
>                     sm.setDereferencedDependent(false, false);
>                     sm.rollback();
>                 } else
>                     sm.commit();
>             } catch (RuntimeException re) {
>                 exceps = add(exceps, re);
>             }
>          }
> I put a check before this "for" loop then the NPE disappeared.
> if (!transStates.isEmpty()) {   
>         	for (Iterator itr = transStates.iterator(); itr.hasNext();) {
>             sm = (StateManagerImpl) itr.next();
>             try {
>                 if (rollback) {
>                     // tell objects that may have been derefed then flushed
>                     // (and therefore deleted) to un-deref
>                     sm.setDereferencedDependent(false, false);
>                     sm.rollback();
>                 } else
>                     sm.commit();
>             } catch (RuntimeException re) {
>                 exceps = add(exceps, re);
>             }
>          }
>         }
> The NPE.patch is attached in this jiar. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Re: [jira] Commented: (OPENJPA-261) NullPointerException occurred in BrokerImpl.java

Posted by Teresa Kan <tc...@gmail.com>.
Craig,
Thanks for updating the description. There is still one NPE here.

"I put a check before this "for" loop then the NPE disappeared.". Please
change it to
"I put a check before this "for" loop then the UnsupportedOperationException
disappeared."
Or it doesn't matter..

Thanks again
Teresa




On 6/19/07, Craig L Russell <Cr...@sun.com> wrote:
>
> Hi Teresa,
>
> I've edited the JIRA but you should look and see if it makes sense
> with the minimum editing I did.
>
> Craig
>
> On Jun 19, 2007, at 4:08 PM, Teresa Kan wrote:
>
> > Is there a way to change the JIAR subject to
> > UnsupportedOperationException?
> >
> >
> >
> > On 6/19/07, Teresa Kan < tckan1@gmail.com> wrote:
> >>
> >> Sorry it was not NPE, it was UnsupportedOperationException. I had
> >> the NPE
> >> before and somehow mixed up with two. Anyway, it caused by :
> >> java.lang.UnsupportedOperationException: IteratorChains must
> >> contain at
> >> least one Iterator
> >>
> >> The Collecitons.EMPTY_LIST.iterator() does not return null.
> >> Here is the exception stack:
> >>
> >> 4781 emptest TRACE [main] openjpa.Runtime - An exception occurred
> >> while
> >> ending the transaction. This exception will be re-thrown.
> >>
> >> <0.0.0 nonfatal user error>
> >> org.apache.openjpa.util.NoTransactionException:
> >> Can only perform operation while a transaction is active.
> >>
> >> at org.apache.openjpa.kernel.BrokerImpl.assertActiveTransaction(
> >> BrokerImpl.java:4307)
> >>
> >> at org.apache.openjpa.kernel.BrokerImpl.afterCompletion
> >> (BrokerImpl.java
> >> :1806)
> >>
> >> at org.apache.openjpa.kernel.LocalManagedRuntime.rollback (
> >> LocalManagedRuntime.java:123)
> >>
> >> at org.apache.openjpa.kernel.LocalManagedRuntime.commit(
> >> LocalManagedRuntime.java:104)
> >>
> >> at org.apache.openjpa.kernel.BrokerImpl.commit (BrokerImpl.java:1319)
> >>
> >> at org.apache.openjpa.kernel.DelegatingBroker.commit
> >> (DelegatingBroker.java
> >> :869)
> >>
> >> at org.apache.openjpa.persistence.EntityManagerImpl.commit (
> >> EntityManagerImpl.java:409)
> >>
> >> at tutorial.ejb.TestEmpsPerClass.main(TestEmpsPerClass.java:135)
> >>
> >> 4781 emptest TRACE [main] openjpa.Runtime - An exception occurred
> >> while
> >> ending the transaction. This exception will be re-thrown.
> >>
> >> <0.0.0 nonfatal store error> org.apache.openjpa.util.StoreException:
> >> IteratorChains must contain at least one Iterator
> >>
> >> at org.apache.openjpa.kernel.BrokerImpl.afterCompletion
> >> (BrokerImpl.java
> >> :1833)
> >>
> >> at org.apache.openjpa.kernel.LocalManagedRuntime.commit(
> >> LocalManagedRuntime.java:93)
> >>
> >> at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1319)
> >>
> >> at org.apache.openjpa.kernel.DelegatingBroker.commit
> >> (DelegatingBroker.java
> >> :869)
> >>
> >> at org.apache.openjpa.persistence.EntityManagerImpl.commit(
> >> EntityManagerImpl.java:409)
> >>
> >> at tutorial.ejb.TestEmpsPerClass.main(TestEmpsPerClass.java :135)
> >>
> >> Caused by: java.lang.UnsupportedOperationException: IteratorChains
> >> must
> >> contain at least one Iterator
> >>
> >> at
> >> org.apache.commons.collections.iterators.IteratorChain.checkChainInte
> >> grity(Unknown
> >> Source)
> >>
> >> at org.apache.commons.collections.iterators.IteratorChain.lockChain
> >> (Unknown
> >> Source)
> >>
> >> at org.apache.commons.collections.iterators.IteratorChain.hasNext
> >> (Unknown
> >> Source)
> >>
> >> at org.apache.openjpa.kernel.BrokerImpl.endTransaction
> >> (BrokerImpl.java
> >> :2196)
> >>
> >> at org.apache.openjpa.kernel.BrokerImpl.afterCompletion
> >> (BrokerImpl.java
> >> :1809)
> >>
> >> ... 5 more
> >>
> >> <0.0.0 fatal store error>
> >> org.apache.openjpa.persistence.RollbackException:
> >> IteratorChains must contain at least one Iterator
> >>
> >> at org.apache.openjpa.persistence.EntityManagerImpl.commit(
> >> EntityManagerImpl.java:420)
> >>
> >> at tutorial.ejb.TestEmpsPerClass.main(TestEmpsPerClass.java:135)
> >>
> >> Caused by: <0.0.0 nonfatal general error>
> >> org.apache.openjpa.persistence.PersistenceException:
> >> IteratorChains must
> >> contain at least one Iterator
> >>
> >> at org.apache.openjpa.kernel.BrokerImpl.afterCompletion
> >> (BrokerImpl.java
> >> :1833)
> >>
> >> at org.apache.openjpa.kernel.LocalManagedRuntime.commit(
> >> LocalManagedRuntime.java:93)
> >>
> >> at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1319)
> >>
> >> at org.apache.openjpa.kernel.DelegatingBroker.commit
> >> (DelegatingBroker.java
> >> :869)
> >>
> >> at org.apache.openjpa.persistence.EntityManagerImpl.commit(
> >> EntityManagerImpl.java:409)
> >>
> >> ... 1 more
> >>
> >> Caused by: java.lang.UnsupportedOperationException : IteratorChains
> >> must
> >> contain at least one Iterator
> >>
> >> at
> >> org.apache.commons.collections.iterators.IteratorChain.checkChainInte
> >> grity(Unknown
> >> Source)
> >>
> >> at org.apache.commons.collections.iterators.IteratorChain.lockChain
> >> (Unknown
> >> Source)
> >>
> >> at org.apache.commons.collections.iterators.IteratorChain.hasNext
> >> (Unknown
> >> Source)update different fields
> >>
> >> at org.apache.openjpa.kernel.BrokerImpl.endTransaction
> >> (BrokerImpl.java
> >> :2196)
> >>
> >> at org.apache.openjpa.kernel.BrokerImpl.afterCompletion
> >> (BrokerImpl.java
> >> :1809)
> >>
> >> ... 5 more
> >>
> >>
> >> On 6/19/07, Patrick Linskey (JIRA) <ji...@apache.org> wrote:
> >> >
> >> >
> >> >    [
> >> > https://issues.apache.org/jira/browse/OPENJPA-261?
> >> page=com.atlassian.jira.plugin.system.issuetabpanels:comment-
> >> tabpanel#action_12506312]
> >> >
> >> > Patrick Linskey commented on OPENJPA-261:
> >> > -----------------------------------------
> >> >
> >> > So you're saying that Collections.EMPTY_LIST.iterator() is
> >> returning
> >> > null? That seems surprising. What version of Java are you using?
> >> Can you
> >> > check if your Java version is returning null from
> >> > Collecitons.EMPTY_LIST.iterator ()?
> >> >
> >> > > NullPointerException occurred in BrokerImpl.java
> >> > > ------------------------------------------------
> >> > >
> >> > >                 Key: OPENJPA-261
> >> > >                 URL: https://issues.apache.org/jira/browse/
> >> OPENJPA-261
> >> > >             Project: OpenJPA
> >> > >          Issue Type: Bug
> >> > >          Components: kernel
> >> > >    Affects Versions: 0.9.7
> >> > >         Environment: Window XP
> >> > >            Reporter: Teresa Kan
> >> > >            Priority: Critical
> >> > >         Attachments: NPE.patch
> >> > >
> >> > >
> >> > > While I was testing against the openjpa code, I got a NPE in the
> >> > BrokerImpl.endtransaction () method. The method set the
> >> transState to an
> >> > empty Collection if there is no cache for transactions. Later
> >> the code did
> >> > not check this Collection and tried to iterate on it and a
> >> > NullPointerException occurred.
> >> > > Original code:
> >> > > Collection transStates = _transCache;
> >> > >         if (transStates == null)
> >> > >             transStates = Collections.EMPTY_LIST;
> >> > > .....
> >> > > for (Iterator itr = transStates.iterator(); itr.hasNext ();)
> >> {  <---
> >> > NPE occurred here.
> >> > >             sm = (StateManagerImpl) itr.next();
> >> > >             try {
> >> > >                 if (rollback) {
> >> > >                     // tell objects that may have been derefed
> >> then
> >> > flushed
> >> > >                     // (and therefore deleted) to un-deref
> >> > >                     sm.setDereferencedDependent(false, false);
> >> > >                     sm.rollback();
> >> > >                 } else
> >> > >                     sm.commit();
> >> > >             } catch (RuntimeException re) {
> >> > >                 exceps = add(exceps, re);
> >> > >             }
> >> > >          }
> >> > > I put a check before this "for" loop then the NPE disappeared.
> >> > > if (!transStates.isEmpty()) {
> >> > >               for (Iterator itr = transStates.iterator();
> >> itr.hasNext();)
> >> > {
> >> > >             sm = (StateManagerImpl) itr.next();
> >> > >             try {
> >> > >                 if (rollback) {
> >> > >                     // tell objects that may have been derefed
> >> then
> >> > flushed
> >> > >                     // (and therefore deleted) to un-deref
> >> > >                     sm.setDereferencedDependent(false, false);
> >> > >                     sm.rollback();
> >> > >                 } else
> >> > >                     sm.commit();
> >> > >             } catch (RuntimeException re) {
> >> > >                 exceps = add(exceps, re);
> >> > >             }
> >> > >          }
> >> > >         }
> >> > > The NPE.patch is attached in this jiar.
> >> >
> >> > --
> >> > This message is automatically generated by JIRA.
> >> > -
> >> > You can reply to this email to add a comment to the issue online.
> >> >
> >> >
> >>
>
> Craig Russell
> Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
> 408 276-5638 mailto: Craig.Russell@sun.com
> P.S. A good JDO? O, Gasp!
>
>
>

Re: [jira] Commented: (OPENJPA-261) NullPointerException occurred in BrokerImpl.java

Posted by Craig L Russell <Cr...@Sun.COM>.
Hi Teresa,

I've edited the JIRA but you should look and see if it makes sense  
with the minimum editing I did.

Craig

On Jun 19, 2007, at 4:08 PM, Teresa Kan wrote:

> Is there a way to change the JIAR subject to  
> UnsupportedOperationException?
>
>
>
> On 6/19/07, Teresa Kan <tc...@gmail.com> wrote:
>>
>> Sorry it was not NPE, it was UnsupportedOperationException. I had  
>> the NPE
>> before and somehow mixed up with two. Anyway, it caused by :
>> java.lang.UnsupportedOperationException: IteratorChains must  
>> contain at
>> least one Iterator
>>
>> The Collecitons.EMPTY_LIST.iterator() does not return null.
>> Here is the exception stack:
>>
>> 4781 emptest TRACE [main] openjpa.Runtime - An exception occurred  
>> while
>> ending the transaction. This exception will be re-thrown.
>>
>> <0.0.0 nonfatal user error>  
>> org.apache.openjpa.util.NoTransactionException:
>> Can only perform operation while a transaction is active.
>>
>> at org.apache.openjpa.kernel.BrokerImpl.assertActiveTransaction(
>> BrokerImpl.java:4307)
>>
>> at org.apache.openjpa.kernel.BrokerImpl.afterCompletion 
>> (BrokerImpl.java
>> :1806)
>>
>> at org.apache.openjpa.kernel.LocalManagedRuntime.rollback(
>> LocalManagedRuntime.java:123)
>>
>> at org.apache.openjpa.kernel.LocalManagedRuntime.commit(
>> LocalManagedRuntime.java:104)
>>
>> at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1319)
>>
>> at org.apache.openjpa.kernel.DelegatingBroker.commit 
>> (DelegatingBroker.java
>> :869)
>>
>> at org.apache.openjpa.persistence.EntityManagerImpl.commit(
>> EntityManagerImpl.java:409)
>>
>> at tutorial.ejb.TestEmpsPerClass.main(TestEmpsPerClass.java:135)
>>
>> 4781 emptest TRACE [main] openjpa.Runtime - An exception occurred  
>> while
>> ending the transaction. This exception will be re-thrown.
>>
>> <0.0.0 nonfatal store error> org.apache.openjpa.util.StoreException:
>> IteratorChains must contain at least one Iterator
>>
>> at org.apache.openjpa.kernel.BrokerImpl.afterCompletion 
>> (BrokerImpl.java
>> :1833)
>>
>> at org.apache.openjpa.kernel.LocalManagedRuntime.commit(
>> LocalManagedRuntime.java:93)
>>
>> at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1319)
>>
>> at org.apache.openjpa.kernel.DelegatingBroker.commit 
>> (DelegatingBroker.java
>> :869)
>>
>> at org.apache.openjpa.persistence.EntityManagerImpl.commit(
>> EntityManagerImpl.java:409)
>>
>> at tutorial.ejb.TestEmpsPerClass.main(TestEmpsPerClass.java:135)
>>
>> Caused by: java.lang.UnsupportedOperationException: IteratorChains  
>> must
>> contain at least one Iterator
>>
>> at
>> org.apache.commons.collections.iterators.IteratorChain.checkChainInte 
>> grity(Unknown
>> Source)
>>
>> at org.apache.commons.collections.iterators.IteratorChain.lockChain 
>> (Unknown
>> Source)
>>
>> at org.apache.commons.collections.iterators.IteratorChain.hasNext 
>> (Unknown
>> Source)
>>
>> at org.apache.openjpa.kernel.BrokerImpl.endTransaction 
>> (BrokerImpl.java
>> :2196)
>>
>> at org.apache.openjpa.kernel.BrokerImpl.afterCompletion 
>> (BrokerImpl.java
>> :1809)
>>
>> ... 5 more
>>
>> <0.0.0 fatal store error>  
>> org.apache.openjpa.persistence.RollbackException:
>> IteratorChains must contain at least one Iterator
>>
>> at org.apache.openjpa.persistence.EntityManagerImpl.commit(
>> EntityManagerImpl.java:420)
>>
>> at tutorial.ejb.TestEmpsPerClass.main(TestEmpsPerClass.java:135)
>>
>> Caused by: <0.0.0 nonfatal general error>
>> org.apache.openjpa.persistence.PersistenceException:  
>> IteratorChains must
>> contain at least one Iterator
>>
>> at org.apache.openjpa.kernel.BrokerImpl.afterCompletion 
>> (BrokerImpl.java
>> :1833)
>>
>> at org.apache.openjpa.kernel.LocalManagedRuntime.commit(
>> LocalManagedRuntime.java:93)
>>
>> at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1319)
>>
>> at org.apache.openjpa.kernel.DelegatingBroker.commit 
>> (DelegatingBroker.java
>> :869)
>>
>> at org.apache.openjpa.persistence.EntityManagerImpl.commit(
>> EntityManagerImpl.java:409)
>>
>> ... 1 more
>>
>> Caused by: java.lang.UnsupportedOperationException: IteratorChains  
>> must
>> contain at least one Iterator
>>
>> at
>> org.apache.commons.collections.iterators.IteratorChain.checkChainInte 
>> grity(Unknown
>> Source)
>>
>> at org.apache.commons.collections.iterators.IteratorChain.lockChain 
>> (Unknown
>> Source)
>>
>> at org.apache.commons.collections.iterators.IteratorChain.hasNext 
>> (Unknown
>> Source)update different fields
>>
>> at org.apache.openjpa.kernel.BrokerImpl.endTransaction 
>> (BrokerImpl.java
>> :2196)
>>
>> at org.apache.openjpa.kernel.BrokerImpl.afterCompletion 
>> (BrokerImpl.java
>> :1809)
>>
>> ... 5 more
>>
>>
>> On 6/19/07, Patrick Linskey (JIRA) <ji...@apache.org> wrote:
>> >
>> >
>> >    [
>> > https://issues.apache.org/jira/browse/OPENJPA-261? 
>> page=com.atlassian.jira.plugin.system.issuetabpanels:comment- 
>> tabpanel#action_12506312]
>> >
>> > Patrick Linskey commented on OPENJPA-261:
>> > -----------------------------------------
>> >
>> > So you're saying that Collections.EMPTY_LIST.iterator() is  
>> returning
>> > null? That seems surprising. What version of Java are you using?  
>> Can you
>> > check if your Java version is returning null from
>> > Collecitons.EMPTY_LIST.iterator ()?
>> >
>> > > NullPointerException occurred in BrokerImpl.java
>> > > ------------------------------------------------
>> > >
>> > >                 Key: OPENJPA-261
>> > >                 URL: https://issues.apache.org/jira/browse/ 
>> OPENJPA-261
>> > >             Project: OpenJPA
>> > >          Issue Type: Bug
>> > >          Components: kernel
>> > >    Affects Versions: 0.9.7
>> > >         Environment: Window XP
>> > >            Reporter: Teresa Kan
>> > >            Priority: Critical
>> > >         Attachments: NPE.patch
>> > >
>> > >
>> > > While I was testing against the openjpa code, I got a NPE in the
>> > BrokerImpl.endtransaction () method. The method set the  
>> transState to an
>> > empty Collection if there is no cache for transactions. Later  
>> the code did
>> > not check this Collection and tried to iterate on it and a
>> > NullPointerException occurred.
>> > > Original code:
>> > > Collection transStates = _transCache;
>> > >         if (transStates == null)
>> > >             transStates = Collections.EMPTY_LIST;
>> > > .....
>> > > for (Iterator itr = transStates.iterator(); itr.hasNext ();)  
>> {  <---
>> > NPE occurred here.
>> > >             sm = (StateManagerImpl) itr.next();
>> > >             try {
>> > >                 if (rollback) {
>> > >                     // tell objects that may have been derefed  
>> then
>> > flushed
>> > >                     // (and therefore deleted) to un-deref
>> > >                     sm.setDereferencedDependent(false, false);
>> > >                     sm.rollback();
>> > >                 } else
>> > >                     sm.commit();
>> > >             } catch (RuntimeException re) {
>> > >                 exceps = add(exceps, re);
>> > >             }
>> > >          }
>> > > I put a check before this "for" loop then the NPE disappeared.
>> > > if (!transStates.isEmpty()) {
>> > >               for (Iterator itr = transStates.iterator();  
>> itr.hasNext();)
>> > {
>> > >             sm = (StateManagerImpl) itr.next();
>> > >             try {
>> > >                 if (rollback) {
>> > >                     // tell objects that may have been derefed  
>> then
>> > flushed
>> > >                     // (and therefore deleted) to un-deref
>> > >                     sm.setDereferencedDependent(false, false);
>> > >                     sm.rollback();
>> > >                 } else
>> > >                     sm.commit();
>> > >             } catch (RuntimeException re) {
>> > >                 exceps = add(exceps, re);
>> > >             }
>> > >          }
>> > >         }
>> > > The NPE.patch is attached in this jiar.
>> >
>> > --
>> > This message is automatically generated by JIRA.
>> > -
>> > You can reply to this email to add a comment to the issue online.
>> >
>> >
>>

Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:Craig.Russell@sun.com
P.S. A good JDO? O, Gasp!


Re: [jira] Commented: (OPENJPA-261) NullPointerException occurred in BrokerImpl.java

Posted by Teresa Kan <tc...@gmail.com>.
Is there a way to change the JIAR subject to UnsupportedOperationException?



On 6/19/07, Teresa Kan <tc...@gmail.com> wrote:
>
> Sorry it was not NPE, it was UnsupportedOperationException. I had the NPE
> before and somehow mixed up with two. Anyway, it caused by :
> java.lang.UnsupportedOperationException: IteratorChains must contain at
> least one Iterator
>
> The Collecitons.EMPTY_LIST.iterator() does not return null.
> Here is the exception stack:
>
> 4781 emptest TRACE [main] openjpa.Runtime - An exception occurred while
> ending the transaction. This exception will be re-thrown.
>
> <0.0.0 nonfatal user error> org.apache.openjpa.util.NoTransactionException:
> Can only perform operation while a transaction is active.
>
> at org.apache.openjpa.kernel.BrokerImpl.assertActiveTransaction(
> BrokerImpl.java:4307)
>
> at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java
> :1806)
>
> at org.apache.openjpa.kernel.LocalManagedRuntime.rollback(
> LocalManagedRuntime.java:123)
>
> at org.apache.openjpa.kernel.LocalManagedRuntime.commit(
> LocalManagedRuntime.java:104)
>
> at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1319)
>
> at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java
> :869)
>
> at org.apache.openjpa.persistence.EntityManagerImpl.commit(
> EntityManagerImpl.java:409)
>
> at tutorial.ejb.TestEmpsPerClass.main(TestEmpsPerClass.java:135)
>
> 4781 emptest TRACE [main] openjpa.Runtime - An exception occurred while
> ending the transaction. This exception will be re-thrown.
>
> <0.0.0 nonfatal store error> org.apache.openjpa.util.StoreException:
> IteratorChains must contain at least one Iterator
>
> at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java
> :1833)
>
> at org.apache.openjpa.kernel.LocalManagedRuntime.commit(
> LocalManagedRuntime.java:93)
>
> at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1319)
>
> at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java
> :869)
>
> at org.apache.openjpa.persistence.EntityManagerImpl.commit(
> EntityManagerImpl.java:409)
>
> at tutorial.ejb.TestEmpsPerClass.main(TestEmpsPerClass.java:135)
>
> Caused by: java.lang.UnsupportedOperationException: IteratorChains must
> contain at least one Iterator
>
> at
> org.apache.commons.collections.iterators.IteratorChain.checkChainIntegrity(Unknown
> Source)
>
> at org.apache.commons.collections.iterators.IteratorChain.lockChain(Unknown
> Source)
>
> at org.apache.commons.collections.iterators.IteratorChain.hasNext(Unknown
> Source)
>
> at org.apache.openjpa.kernel.BrokerImpl.endTransaction(BrokerImpl.java
> :2196)
>
> at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java
> :1809)
>
> ... 5 more
>
> <0.0.0 fatal store error> org.apache.openjpa.persistence.RollbackException:
> IteratorChains must contain at least one Iterator
>
> at org.apache.openjpa.persistence.EntityManagerImpl.commit(
> EntityManagerImpl.java:420)
>
> at tutorial.ejb.TestEmpsPerClass.main(TestEmpsPerClass.java:135)
>
> Caused by: <0.0.0 nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: IteratorChains must
> contain at least one Iterator
>
> at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java
> :1833)
>
> at org.apache.openjpa.kernel.LocalManagedRuntime.commit(
> LocalManagedRuntime.java:93)
>
> at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1319)
>
> at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java
> :869)
>
> at org.apache.openjpa.persistence.EntityManagerImpl.commit(
> EntityManagerImpl.java:409)
>
> ... 1 more
>
> Caused by: java.lang.UnsupportedOperationException: IteratorChains must
> contain at least one Iterator
>
> at
> org.apache.commons.collections.iterators.IteratorChain.checkChainIntegrity(Unknown
> Source)
>
> at org.apache.commons.collections.iterators.IteratorChain.lockChain(Unknown
> Source)
>
> at org.apache.commons.collections.iterators.IteratorChain.hasNext(Unknown
> Source)update different fields
>
> at org.apache.openjpa.kernel.BrokerImpl.endTransaction(BrokerImpl.java
> :2196)
>
> at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java
> :1809)
>
> ... 5 more
>
>
> On 6/19/07, Patrick Linskey (JIRA) <ji...@apache.org> wrote:
> >
> >
> >    [
> > https://issues.apache.org/jira/browse/OPENJPA-261?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12506312]
> >
> > Patrick Linskey commented on OPENJPA-261:
> > -----------------------------------------
> >
> > So you're saying that Collections.EMPTY_LIST.iterator() is returning
> > null? That seems surprising. What version of Java are you using? Can you
> > check if your Java version is returning null from
> > Collecitons.EMPTY_LIST.iterator ()?
> >
> > > NullPointerException occurred in BrokerImpl.java
> > > ------------------------------------------------
> > >
> > >                 Key: OPENJPA-261
> > >                 URL: https://issues.apache.org/jira/browse/OPENJPA-261
> > >             Project: OpenJPA
> > >          Issue Type: Bug
> > >          Components: kernel
> > >    Affects Versions: 0.9.7
> > >         Environment: Window XP
> > >            Reporter: Teresa Kan
> > >            Priority: Critical
> > >         Attachments: NPE.patch
> > >
> > >
> > > While I was testing against the openjpa code, I got a NPE in the
> > BrokerImpl.endtransaction () method. The method set the transState to an
> > empty Collection if there is no cache for transactions. Later the code did
> > not check this Collection and tried to iterate on it and a
> > NullPointerException occurred.
> > > Original code:
> > > Collection transStates = _transCache;
> > >         if (transStates == null)
> > >             transStates = Collections.EMPTY_LIST;
> > > .....
> > > for (Iterator itr = transStates.iterator(); itr.hasNext ();) {  <---
> > NPE occurred here.
> > >             sm = (StateManagerImpl) itr.next();
> > >             try {
> > >                 if (rollback) {
> > >                     // tell objects that may have been derefed then
> > flushed
> > >                     // (and therefore deleted) to un-deref
> > >                     sm.setDereferencedDependent(false, false);
> > >                     sm.rollback();
> > >                 } else
> > >                     sm.commit();
> > >             } catch (RuntimeException re) {
> > >                 exceps = add(exceps, re);
> > >             }
> > >          }
> > > I put a check before this "for" loop then the NPE disappeared.
> > > if (!transStates.isEmpty()) {
> > >               for (Iterator itr = transStates.iterator(); itr.hasNext();)
> > {
> > >             sm = (StateManagerImpl) itr.next();
> > >             try {
> > >                 if (rollback) {
> > >                     // tell objects that may have been derefed then
> > flushed
> > >                     // (and therefore deleted) to un-deref
> > >                     sm.setDereferencedDependent(false, false);
> > >                     sm.rollback();
> > >                 } else
> > >                     sm.commit();
> > >             } catch (RuntimeException re) {
> > >                 exceps = add(exceps, re);
> > >             }
> > >          }
> > >         }
> > > The NPE.patch is attached in this jiar.
> >
> > --
> > This message is automatically generated by JIRA.
> > -
> > You can reply to this email to add a comment to the issue online.
> >
> >
>

Re: [jira] Commented: (OPENJPA-261) NullPointerException occurred in BrokerImpl.java

Posted by Teresa Kan <tc...@gmail.com>.
Sorry it was not NPE, it was UnsupportedOperationException. I had the NPE
before and somehow mixed up with two. Anyway, it caused by :
java.lang.UnsupportedOperationException: IteratorChains must contain at
least one Iterator

The Collecitons.EMPTY_LIST.iterator() does not return null.
Here is the exception stack:

4781 emptest TRACE [main] openjpa.Runtime - An exception occurred while
ending the transaction. This exception will be re-thrown.

<0.0.0 nonfatal user error> org.apache.openjpa.util.NoTransactionException:
Can only perform operation while a transaction is active.

at org.apache.openjpa.kernel.BrokerImpl.assertActiveTransaction(
BrokerImpl.java:4307)

at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java
:1806)

at org.apache.openjpa.kernel.LocalManagedRuntime.rollback(
LocalManagedRuntime.java:123)

at org.apache.openjpa.kernel.LocalManagedRuntime.commit(
LocalManagedRuntime.java:104)

at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1319)

at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java
:869)

at org.apache.openjpa.persistence.EntityManagerImpl.commit(
EntityManagerImpl.java:409)

at tutorial.ejb.TestEmpsPerClass.main(TestEmpsPerClass.java:135)

4781 emptest TRACE [main] openjpa.Runtime - An exception occurred while
ending the transaction. This exception will be re-thrown.

<0.0.0 nonfatal store error> org.apache.openjpa.util.StoreException:
IteratorChains must contain at least one Iterator

at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java
:1833)

at org.apache.openjpa.kernel.LocalManagedRuntime.commit(
LocalManagedRuntime.java:93)

at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1319)

at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java
:869)

at org.apache.openjpa.persistence.EntityManagerImpl.commit(
EntityManagerImpl.java:409)

at tutorial.ejb.TestEmpsPerClass.main(TestEmpsPerClass.java:135)

Caused by: java.lang.UnsupportedOperationException: IteratorChains must
contain at least one Iterator

at
org.apache.commons.collections.iterators.IteratorChain.checkChainIntegrity(Unknown
Source)

at org.apache.commons.collections.iterators.IteratorChain.lockChain(Unknown
Source)

at org.apache.commons.collections.iterators.IteratorChain.hasNext(Unknown
Source)

at org.apache.openjpa.kernel.BrokerImpl.endTransaction(BrokerImpl.java:2196)

at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java
:1809)

... 5 more

<0.0.0 fatal store error> org.apache.openjpa.persistence.RollbackException:
IteratorChains must contain at least one Iterator

at org.apache.openjpa.persistence.EntityManagerImpl.commit(
EntityManagerImpl.java:420)

at tutorial.ejb.TestEmpsPerClass.main(TestEmpsPerClass.java:135)

Caused by: <0.0.0 nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: IteratorChains must
contain at least one Iterator

at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java
:1833)

at org.apache.openjpa.kernel.LocalManagedRuntime.commit(
LocalManagedRuntime.java:93)

at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1319)

at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java
:869)

at org.apache.openjpa.persistence.EntityManagerImpl.commit(
EntityManagerImpl.java:409)

... 1 more

Caused by: java.lang.UnsupportedOperationException: IteratorChains must
contain at least one Iterator

at
org.apache.commons.collections.iterators.IteratorChain.checkChainIntegrity(Unknown
Source)

at org.apache.commons.collections.iterators.IteratorChain.lockChain(Unknown
Source)

at org.apache.commons.collections.iterators.IteratorChain.hasNext(Unknown
Source)update different fields

at org.apache.openjpa.kernel.BrokerImpl.endTransaction(BrokerImpl.java:2196)

at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java
:1809)

... 5 more


On 6/19/07, Patrick Linskey (JIRA) <ji...@apache.org> wrote:
>
>
>    [
> https://issues.apache.org/jira/browse/OPENJPA-261?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12506312]
>
> Patrick Linskey commented on OPENJPA-261:
> -----------------------------------------
>
> So you're saying that Collections.EMPTY_LIST.iterator() is returning null?
> That seems surprising. What version of Java are you using? Can you check if
> your Java version is returning null from Collecitons.EMPTY_LIST.iterator
> ()?
>
> > NullPointerException occurred in BrokerImpl.java
> > ------------------------------------------------
> >
> >                 Key: OPENJPA-261
> >                 URL: https://issues.apache.org/jira/browse/OPENJPA-261
> >             Project: OpenJPA
> >          Issue Type: Bug
> >          Components: kernel
> >    Affects Versions: 0.9.7
> >         Environment: Window XP
> >            Reporter: Teresa Kan
> >            Priority: Critical
> >         Attachments: NPE.patch
> >
> >
> > While I was testing against the openjpa code, I got a NPE in the
> BrokerImpl.endtransaction() method. The method set the transState to an
> empty Collection if there is no cache for transactions. Later the code did
> not check this Collection and tried to iterate on it and a
> NullPointerException occurred.
> > Original code:
> > Collection transStates = _transCache;
> >         if (transStates == null)
> >             transStates = Collections.EMPTY_LIST;
> > .....
> > for (Iterator itr = transStates.iterator(); itr.hasNext();) {  <--- NPE
> occurred here.
> >             sm = (StateManagerImpl) itr.next();
> >             try {
> >                 if (rollback) {
> >                     // tell objects that may have been derefed then
> flushed
> >                     // (and therefore deleted) to un-deref
> >                     sm.setDereferencedDependent(false, false);
> >                     sm.rollback();
> >                 } else
> >                     sm.commit();
> >             } catch (RuntimeException re) {
> >                 exceps = add(exceps, re);
> >             }
> >          }
> > I put a check before this "for" loop then the NPE disappeared.
> > if (!transStates.isEmpty()) {
> >               for (Iterator itr = transStates.iterator(); itr.hasNext();)
> {
> >             sm = (StateManagerImpl) itr.next();
> >             try {
> >                 if (rollback) {
> >                     // tell objects that may have been derefed then
> flushed
> >                     // (and therefore deleted) to un-deref
> >                     sm.setDereferencedDependent(false, false);
> >                     sm.rollback();
> >                 } else
> >                     sm.commit();
> >             } catch (RuntimeException re) {
> >                 exceps = add(exceps, re);
> >             }
> >          }
> >         }
> > The NPE.patch is attached in this jiar.
>
> --
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
>
>