openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Craig L Russell <Craig.Russ...@Sun.COM>
Subject Re: [jira] Commented: (OPENJPA-261) NullPointerException occurred in BrokerImpl.java
Date Tue, 19 Jun 2007 23:30:25 GMT
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
View raw message