[jira] [Created] (ARIES-1885) JpaInterceptor does not properly end coordination in case of Exception

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (ARIES-1885) JpaInterceptor does not properly end coordination in case of Exception

JIRA jira@apache.org
Nicolas Dutertry created ARIES-1885:
---------------------------------------

             Summary: JpaInterceptor does not properly end coordination in case of Exception
                 Key: ARIES-1885
                 URL: https://issues.apache.org/jira/browse/ARIES-1885
             Project: Aries
          Issue Type: Bug
          Components: JPA
    Affects Versions: jpa-2.7.1
            Reporter: Nicolas Dutertry


In class JpaInterceptor the method postCallWithException calls Coordination.fail() but not Coordination.end():
{code:java}
@Override
public void postCallWithException(ComponentMetadata cm, Method m, Throwable ex, Object preCallToken) {
    LOG.debug("PostCallWithException for bean {}, method {}", cm.getId(), m.getName(), ex);
    if (preCallToken != null) {
        ((Coordination)preCallToken).fail(ex);
    }
}

{code}
 

However, the javadoc of Coordination.fail() states:
{code:none}
If this Coordination has been {@link #push() pushed} onto a thread local Coordination stack, this Coordination is not removed from the stack. The creator of this Coordination must still call {@link #end()} on this Coordination to cause it to be removed from the thread local Coordination stack.
{code}
This is causing issues for subsequent calls to jpa service because the coordination is not removed from the stack.

The method postCallWithException should be implemented like this:
{code:java}
@Override
public void postCallWithException(ComponentMetadata cm, Method m, Throwable ex, Object preCallToken) {
    LOG.debug("PostCallWithException for bean {}, method {}", cm.getId(), m.getName(), ex);
    if (preCallToken != null) {
        Coordination coordination = (Coordination)preCallToken;
        coordination.fail(ex);
        coordination.end();
    }
}
{code}
 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)