Bugs item #634910, was opened at 2002-11-07 13:03
Message generated for change (Comment added) made by loubyansky
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=634910&group_id=22866

Category: JBossCMP
Group: v3.0 Rabbit Hole
>Status: Closed
>Resolution: Out of Date
Priority: 5
Submitted By: Alexei Yudichev (sflexus)
Assigned to: Alexey Loubyansky (loubyansky)
Summary: arbitrary Exception: iterator of a CMR..

Initial Comment:
Jboss 3.0.4, CMP2.0 bean, simple business method is called by 
remote client. Method declaration is:

public String 
getSizeAsString(Locale locale) {
try {
int size = 0;
316: 
for (Iterator i = getSlides().iterator(); i.hasNext(); ) 
{
size+=((Slide)i.next()).getSize();
}
size+=getXml(false, 
false, -1, locale).toString().getBytes("UTF-8").length;
return 
new 
DecimalFormat("0.00").format((double)size/1024D);
}catch 
(UnsupportedEncodingException ex) {
throw new 
EJBException(ex);
}
}

>From time to time (not every 
time, approx one time for 20 invocations) I get the exception below. 
All transaction attributes for all beans in application declared 
as:

<container-
transaction>
<method>
<description />
<ejb-
name>SMIL</ejb-name>
<method-name>*</method-
name>
</method>
<trans-attribute>Required</trans-
attribute>
</container-transaction>

Looks pretty 
much like a bug with instable reproduce. I cannot provide a 
testcase as well because it happens rarely. What can be the 
cause? Can I help somehow else?

2002-11-05 
17:54:20,987 ERROR [org.jboss.ejb.plugins.LogInterceptor] 
RuntimeException:
java.lang.IllegalStateException: The 
iterator of a CMR collection may only be used within the transction 
in which it was created

at 
org.jboss.ejb.plugins.cmp.jdbc.bridge.RelationSet$1.verifyIteratorIsValid(RelationSet.java:309)
at 
org.jboss.ejb.plugins.cmp.jdbc.bridge.RelationSet$1.hasNext(RelationSet.java:269)
at 
com.tw.mms.ejb.SMILBean.getSizeAsString(SMILBean.java:316)
at 
sun.reflect.GeneratedMethodAccessor75.invoke(Unknown 
Source)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at 
java.lang.reflect.Method.invoke(Method.java:324)
at 
org.jboss.ejb.EntityContainer$ContainerInterceptor.invoke(EntityContainer.java:1194)
at 
org.jboss.ejb.plugins.cmp.jdbc.JDBCRelationInterceptor.invoke(JDBCRelationInterceptor.java:95)
at 
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:297)
at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)

at 
org.jboss.ejb.plugins.EntityReentranceInterceptor.invoke(EntityReentranceInterceptor.java:90)
at 
org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:163)
at 
org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:107)
at 
org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationInterceptor.java:69)
at 
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:107)
at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:178)
at 
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:60)
at 
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:130)
at 
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204)
at 
org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:493)
at 
org.jboss.ejb.Container.invoke(Container.java:712)
at 
org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:1058)
at 
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at 
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:382)
at 
sun.reflect.GeneratedMethodAccessor59.invoke(Unknown 
Source)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at 
java.lang.reflect.Method.invoke(Method.java:324)
at 
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
at 
sun.rmi.transport.Transport$1.run(Transport.java:148)
at 
java.security.AccessController.doPrivileged(Native 
Method)
at 
sun.rmi.transport.Transport.serviceCall(Transport.java:144)
at 
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
at 
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
at 
java.lang.Thread.run(Thread.java:536)

----------------------------------------------------------------------

>Comment By: Alexey Loubyansky (loubyansky)
Date: 2004-08-12 11:58

Message:
Logged In: YES 
user_id=543482

Alexei, thanks for the update. I am closing it then.

Jernej, if you have a similar problem with recent versions,
submit a new bug report with container and other
configuration details. The hint to the problem does not make
sense to me.

Thanks.

----------------------------------------------------------------------

Comment By: Alexei Yudichev (sflexus)
Date: 2004-08-12 09:49

Message:
Logged In: YES 
user_id=345880

I haven't seen this happenig since ages ago (I have 3.2.2RC1 
in production now). It has most likely been fixed since 3.0.4.

----------------------------------------------------------------------

Comment By: Alexey Loubyansky (loubyansky)
Date: 2004-08-11 19:12

Message:
Logged In: YES 
user_id=543482

Still can't reproduce. What is the environment? Container
and other configurations?


----------------------------------------------------------------------

Comment By: Jernej Srebrnič (jernej4321)
Date: 2004-03-30 11:52

Message:
Logged In: YES 
user_id=990160

I'm able to reproduce on 3.2.3 and 3.2.4RC1 
we have bean A and bean B
1:N relation 
CMP beans

metod:
col=A.getBs();
i=col.iterator();
foj(int j=0; j<col.size;j++){
   i.next();
   if(j==2) break;
}

steps (transaction mod is not relevant):
  col this metod with the same data in paralel (2 or more
clients)

explanation:  
if you do not iterate throw the entaire collection zou get
the exception. that's way the proposed workaround works (new
ArrayList(col) does the iteration).

hint to the problem:
beause its a cmb ration it is allways in a transaction,
transaction   setings dont meter. the retrived beans are
locked... the itrated one are "marked" when iterating so at
the end of the transaction the are unlocked. the beans we
did not interact with are not "marked" so their remain locked..


pleas rise priority

----------------------------------------------------------------------

Comment By: Alexei Yudichev (sflexus)
Date: 2002-11-11 09:34

Message:
Logged In: YES 
user_id=345880

Today I saw exception of this kind at the point where it never happened 
before. Something is really wrong with RelationSet transaction check. It 
cannot be in a different transaction when I directly invoke new 
ArrayList(getSlides()) where getSlides() is a cmr getter.
In the 
stacktace getXml() and getOrderedSlideList() are private bean 
methods.

BTW I overcame the problem I described in the original 
comment (at least it never happened since I did that) simply by invoking 
new ArrayList(getSlides()).iterator() instead of getSlides().iterator() 
by this bypassing direct iterator() call on CMR collection.

Here's 
the new exception:

2002-11-09 18:11:49,993 ERROR 
[org.jboss.ejb.plugins.LogInterceptor] 
RuntimeException:
java.lang.IllegalStateException: A CMR 
collection may only be used within the transction in which it was 
created
        at 
org.jboss.ejb.plugins.cmp.jdbc.bridge.RelationSet.getIdList(RelationSet.java:58)
        at 
org.jboss.ejb.plugins.cmp.jdbc.bridge.RelationSet.size(RelationSet.java:65)
        at 
java.util.ArrayList.&lt;init&gt;(ArrayList.java:128)
        at 
com.tw.mms.ejb.SMILBean.getOrderedSlideList(SMILBean.java:89)
        at 
com.tw.mms.ejb.SMILBean.getXml(SMILBean.java:72)
        at 
com.tw.mms.ejb.SMILBean.getXmlWithData(SMILBean.java:314)
        at 
sun.reflect.GeneratedMethodAccessor110.invoke(Unknown 
Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at 
java.lang.reflect.Method.invoke(Method.java:324)
        at 
org.jboss.ejb.EntityContainer$ContainerInterceptor.invoke(EntityContainer.java:1194)
        at 
org.jboss.ejb.plugins.cmp.jdbc.JDBCRelationInterceptor.invoke(JDBCRelationInterceptor.java:95)
        at 
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:297)
        at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
        at 
org.jboss.ejb.plugins.EntityReentranceInterceptor.invoke(EntityReentranceInterceptor.java:90)
        at 
org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:163)
        at 
org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:107)
        at 
org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationInterceptor.java:69)
        at 
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:107)
        at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:178)
        at 
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:60)
        at 
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:130)
        at 
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204)
        at 
org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:493)
        at 
org.jboss.ejb.Container.invoke(Container.java:712)
        at 
org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:1058)
        at 
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
        at 
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:382)
        at 
sun.reflect.GeneratedMethodAccessor59.invoke(Unknown 
Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at 
java.lang.reflect.Method.invoke(Method.java:324)
        at 
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
        at 
sun.rmi.transport.Transport$1.run(Transport.java:148)
        at 
java.security.AccessController.doPrivileged(Native Method)
        at 
sun.rmi.transport.Transport.serviceCall(Transport.java:144)
        at 
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
        at 
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
        at 
java.lang.Thread.run(Thread.java:536)

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=634910&group_id=22866


-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
JBoss-Development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to