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