[jboss-jira] [JBoss JIRA] (WFLY-3532) RemoteFailoverTestCase still fails intermittently
Richard Achmatowicz (JIRA)
issues at jboss.org
Tue Jun 24 11:37:26 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/24/14 11:36 AM:
---------------------------------------------------------------------
What I think is happening is this:
- requests are arriving for execution every 10 milliseconds
- server is shutdown, and as it is being shutdown, some requests continue to arrive; some of these requests are processed correctly, but at some point in time, the server starts responding with EJBComponentUnavailable exception, indicating that the bean is no longer available
- at a further point in time, a request has been sent to the server and is waiting for its reply
- 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
> 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