[
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)