You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Ross Black (JIRA)" <ji...@apache.org> on 2006/04/26 04:41:03 UTC
[jira] Created: (JCR-412) JCA Concurrent Modification Exception
when JCAManagedConnection.cleanup() called
JCA Concurrent Modification Exception when JCAManagedConnection.cleanup() called
--------------------------------------------------------------------------------
Key: JCR-412
URL: http://issues.apache.org/jira/browse/JCR-412
Project: Jackrabbit
Type: Bug
Components: jca
Versions: 1.0
Environment: JDK1.4.2
SunOne AppServer 7
Reporter: Ross Black
Priority: Minor
The JCAManagedConnection.closeHandles() method causes a ConcurrentModificationException if the handles list is not empty.
This is caused by modification of the handles list by removeHandle(), while closeHandles() is iterating over the list.
Under SunOne AppServer 7 this can be caused simply by not closing the Session handle before the transaction commits.
It is probably not even necessary to send connectionClosed events during cleanup(). According to the API for connectionClosed, the event indicates that an application component has closed the connection handle. cleanup() is a container initiated action, and so the connectionClosed event is not applicable.
java.util.ConcurrentModificationException
at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:552)
at java.util.LinkedList$ListItr.next(LinkedList.java:488)
at org.apache.jackrabbit.jca.JCAManagedConnection.closeHandles(JCAManagedConnection.java:382)
at org.apache.jackrabbit.jca.JCAManagedConnection.cleanup(JCAManagedConnection.java:145)
at com.sun.enterprise.resource.IASPoolObjectImp.cleanup(IASPoolObjectImp.java:243)
at com.sun.enterprise.resource.IASGenericPoolObjects.transactionCompleted(IASGenericPoolObjects.java:794)
at com.sun.enterprise.resource.ResourcePoolManagerImpl.transactionCompleted(ResourcePoolManagerImpl.java:347)
at com.sun.enterprise.resource.ResourcePoolManagerImpl$SynchronizationListener.afterCompletion(ResourcePoolManagerImpl.java:644)
at com.sun.jts.jta.SynchronizationImpl.after_completion(SynchronizationImpl.java:70)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Resolved: (JCR-412) JCA Concurrent Modification Exception
when JCAManagedConnection.cleanup() called
Posted by "Edgar Poce (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/JCR-412?page=all ]
Edgar Poce resolved JCR-412:
----------------------------
Resolution: Fixed
thanks for reporting the issue Ross.
> JCA Concurrent Modification Exception when JCAManagedConnection.cleanup() called
> --------------------------------------------------------------------------------
>
> Key: JCR-412
> URL: http://issues.apache.org/jira/browse/JCR-412
> Project: Jackrabbit
> Type: Bug
> Components: jca
> Versions: 1.0
> Environment: JDK1.4.2
> SunOne AppServer 7
> Reporter: Ross Black
> Assignee: Edgar Poce
> Priority: Minor
>
> The JCAManagedConnection.closeHandles() method causes a ConcurrentModificationException if the handles list is not empty.
> This is caused by modification of the handles list by removeHandle(), while closeHandles() is iterating over the list.
> Under SunOne AppServer 7 this can be caused simply by not closing the Session handle before the transaction commits.
> It is probably not even necessary to send connectionClosed events during cleanup(). According to the API for connectionClosed, the event indicates that an application component has closed the connection handle. cleanup() is a container initiated action, and so the connectionClosed event is not applicable.
> java.util.ConcurrentModificationException
> at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:552)
> at java.util.LinkedList$ListItr.next(LinkedList.java:488)
> at org.apache.jackrabbit.jca.JCAManagedConnection.closeHandles(JCAManagedConnection.java:382)
> at org.apache.jackrabbit.jca.JCAManagedConnection.cleanup(JCAManagedConnection.java:145)
> at com.sun.enterprise.resource.IASPoolObjectImp.cleanup(IASPoolObjectImp.java:243)
> at com.sun.enterprise.resource.IASGenericPoolObjects.transactionCompleted(IASGenericPoolObjects.java:794)
> at com.sun.enterprise.resource.ResourcePoolManagerImpl.transactionCompleted(ResourcePoolManagerImpl.java:347)
> at com.sun.enterprise.resource.ResourcePoolManagerImpl$SynchronizationListener.afterCompletion(ResourcePoolManagerImpl.java:644)
> at com.sun.jts.jta.SynchronizationImpl.after_completion(SynchronizationImpl.java:70)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Assigned: (JCR-412) JCA Concurrent Modification Exception
when JCAManagedConnection.cleanup() called
Posted by "Edgar Poce (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/JCR-412?page=all ]
Edgar Poce reassigned JCR-412:
------------------------------
Assign To: Edgar Poce
> JCA Concurrent Modification Exception when JCAManagedConnection.cleanup() called
> --------------------------------------------------------------------------------
>
> Key: JCR-412
> URL: http://issues.apache.org/jira/browse/JCR-412
> Project: Jackrabbit
> Type: Bug
> Components: jca
> Versions: 1.0
> Environment: JDK1.4.2
> SunOne AppServer 7
> Reporter: Ross Black
> Assignee: Edgar Poce
> Priority: Minor
>
> The JCAManagedConnection.closeHandles() method causes a ConcurrentModificationException if the handles list is not empty.
> This is caused by modification of the handles list by removeHandle(), while closeHandles() is iterating over the list.
> Under SunOne AppServer 7 this can be caused simply by not closing the Session handle before the transaction commits.
> It is probably not even necessary to send connectionClosed events during cleanup(). According to the API for connectionClosed, the event indicates that an application component has closed the connection handle. cleanup() is a container initiated action, and so the connectionClosed event is not applicable.
> java.util.ConcurrentModificationException
> at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:552)
> at java.util.LinkedList$ListItr.next(LinkedList.java:488)
> at org.apache.jackrabbit.jca.JCAManagedConnection.closeHandles(JCAManagedConnection.java:382)
> at org.apache.jackrabbit.jca.JCAManagedConnection.cleanup(JCAManagedConnection.java:145)
> at com.sun.enterprise.resource.IASPoolObjectImp.cleanup(IASPoolObjectImp.java:243)
> at com.sun.enterprise.resource.IASGenericPoolObjects.transactionCompleted(IASGenericPoolObjects.java:794)
> at com.sun.enterprise.resource.ResourcePoolManagerImpl.transactionCompleted(ResourcePoolManagerImpl.java:347)
> at com.sun.enterprise.resource.ResourcePoolManagerImpl$SynchronizationListener.afterCompletion(ResourcePoolManagerImpl.java:644)
> at com.sun.jts.jta.SynchronizationImpl.after_completion(SynchronizationImpl.java:70)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Updated: (JCR-412) JCA Concurrent Modification Exception
when JCAManagedConnection.cleanup() called
Posted by "Jukka Zitting (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/JCR-412?page=all ]
Jukka Zitting updated JCR-412:
------------------------------
Fix Version: 1.1
Version: 1.0.1
> JCA Concurrent Modification Exception when JCAManagedConnection.cleanup() called
> --------------------------------------------------------------------------------
>
> Key: JCR-412
> URL: http://issues.apache.org/jira/browse/JCR-412
> Project: Jackrabbit
> Type: Bug
> Components: jca
> Versions: 1.0, 1.0.1
> Environment: JDK1.4.2
> SunOne AppServer 7
> Reporter: Ross Black
> Assignee: Edgar Poce
> Priority: Minor
> Fix For: 1.1
>
> The JCAManagedConnection.closeHandles() method causes a ConcurrentModificationException if the handles list is not empty.
> This is caused by modification of the handles list by removeHandle(), while closeHandles() is iterating over the list.
> Under SunOne AppServer 7 this can be caused simply by not closing the Session handle before the transaction commits.
> It is probably not even necessary to send connectionClosed events during cleanup(). According to the API for connectionClosed, the event indicates that an application component has closed the connection handle. cleanup() is a container initiated action, and so the connectionClosed event is not applicable.
> java.util.ConcurrentModificationException
> at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:552)
> at java.util.LinkedList$ListItr.next(LinkedList.java:488)
> at org.apache.jackrabbit.jca.JCAManagedConnection.closeHandles(JCAManagedConnection.java:382)
> at org.apache.jackrabbit.jca.JCAManagedConnection.cleanup(JCAManagedConnection.java:145)
> at com.sun.enterprise.resource.IASPoolObjectImp.cleanup(IASPoolObjectImp.java:243)
> at com.sun.enterprise.resource.IASGenericPoolObjects.transactionCompleted(IASGenericPoolObjects.java:794)
> at com.sun.enterprise.resource.ResourcePoolManagerImpl.transactionCompleted(ResourcePoolManagerImpl.java:347)
> at com.sun.enterprise.resource.ResourcePoolManagerImpl$SynchronizationListener.afterCompletion(ResourcePoolManagerImpl.java:644)
> at com.sun.jts.jta.SynchronizationImpl.after_completion(SynchronizationImpl.java:70)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira