You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by Teresa Kan <tc...@gmail.com> on 2007/06/20 00:58:03 UTC
Re: [jira] Commented: (OPENJPA-261) java.lang.UnsupportedOperationException occurred in BrokerImpl.java
Sorry, it was not a NPE, but it was the *
java.lang.UnsupportedOperationException.* Somehow I wrote down the
old exception. I changed the subject with the right exception. This
exception only occurred in an inheritance strategy of TABLE_PER_CLASS.
The Collecitons.EMPTY_LIST.iterator() returns
java.util.AbstractList$Itr@25ec25ec.
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
Teresa
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.
>
>