openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Teresa Kan" <tck...@gmail.com>
Subject Re: [jira] Commented: (OPENJPA-261) NullPointerException occurred in BrokerImpl.java
Date Wed, 20 Jun 2007 02:34:00 GMT
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 <Craig.Russell@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) <jira@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!
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message