[ https://issues.apache.org/jira/browse/ARIES-1885?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16756016#comment-16756016 ]
ASF subversion and git services commented on ARIES-1885: -------------------------------------------------------- Commit f637f77f75500eb0932e48b4e421fa3a32322918 in aries-jpa's branch refs/heads/master from Nicolas Dutertry [ https://gitbox.apache.org/repos/asf?p=aries-jpa.git;h=f637f77 ] [ARIES-1885] End coordination in case of exception in JpaInterceptor > 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 > Assignee: Christian Schneider > Priority: Major > Fix For: jpa-2.7.2 > > Time Spent: 20m > Remaining Estimate: 0h > > 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)