[jboss-jira] [JBoss JIRA] (WFLY-3532) RemoteFailoverTestCase still fails intermittently
Richard Achmatowicz (JIRA)
issues at jboss.org
Mon Jun 23 22:42:24 EDT 2014
[ https://issues.jboss.org/browse/WFLY-3532?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12978747#comment-12978747 ]
Richard Achmatowicz edited comment on WFLY-3532 at 6/23/14 10:42 PM:
---------------------------------------------------------------------
What I think is happening is this:
- request is queued for execution in 10 seconds
- server is shutdown, but takes a while, enough time for the request on the client side to start execution and not be cancelled
- because the request started execution and it is synchronous, an EJBReceiver is chosen, the request *message* is sent asynchronously on the channel to the server and we now wait synchronously for the result to arrive back from the server
- while this is happening, the channel is detected as being broken when the server goes down
- at the Remoting level, the ChannelCloseHandler installed by the ChannelAssociation is called
- this has the effect of calling ChannelAsociation.notifyBrokenChannel() for all pending EJBClient invocations which make use of that channel
- this has the effect of setting the Result for all pending invocations to UnuseableChannelResultProducer(ioException) where IOException
is the reason why the channel close handler was called
- because we are waiting for the the result, the result becomes ready (with the UnuseableChannelResultProducer) and when we call getResult(), the contained IOException is thrown
- because of the design of EJBInvocationHandler, awaiting results is performed after the retries, so the exception gets passed back to the caller and we do not retry based on the exception
was (Author: rachmato):
What I think is happening is this:
- request is queued for execution in 10 seconds
- server is shutdown, but takes a while, enough time for the request on the client side to start execution and not be cancelled
- because the request started execution and it is synchronous, an EJBReceiver is chosen, the request *message* is sent asynchronously on the channel to the server and we now wait synchronously for the result to arrive back from the server
- while this is happening, the channel is detected as being broken when the server goes down
- at the Remoting level, the ChannelCloseHandler installed by the ChannelAssociation is called
- this has the effect of calling ChannelAsociation.notifyBrokenChannel() for all pending EJBClient invocations which make use of that channel
- this has the effect of setting the Result for all pending invocations to UnuseableChannelResultProducer(ioException) where IOException
is the reason why the channel close handler was called
- because we are waiting for the the result, the result becomes ready (with the UnuseableChannelResultProducer) and when we call getResult(), the contained IOException is thrown
- because of the design of EJBInvocationHandler, awaiting results is performed after the retries, so the exception gets passed back to the caller and we do not retry based on the exception
As I said, I think this is what is happening.
> RemoteFailoverTestCase still fails intermittently
> --------------------------------------------------
>
> Key: WFLY-3532
> URL: https://issues.jboss.org/browse/WFLY-3532
> Project: WildFly
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: EJB
> Affects Versions: 9.0.0.Alpha1
> Reporter: Radoslav Husar
> Assignee: Richard Achmatowicz
>
> Fail rate is at 1.5% atm.
> http://brontes.lab.eng.brq.redhat.com/project.html?projectId=WF&testNameId=3213279503671281753&tab=testDetails
> (making affected version alpha, but indeed its master)
--
This message was sent by Atlassian JIRA
(v6.2.6#6264)
More information about the jboss-jira
mailing list