You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by "Andrew Gatford (JIRA)" <ji...@apache.org> on 2008/05/06 17:30:57 UTC
[jira] Resolved: (SANDESHA2-147) java.lang.IllegalStateException:
Response already committed (during SequenceAcknowledgement)
[ https://issues.apache.org/jira/browse/SANDESHA2-147?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrew Gatford resolved SANDESHA2-147.
--------------------------------------
Resolution: Fixed
Fixed in revision 653809, thanks
> java.lang.IllegalStateException: Response already committed (during SequenceAcknowledgement)
> ---------------------------------------------------------------------------------------------
>
> Key: SANDESHA2-147
> URL: https://issues.apache.org/jira/browse/SANDESHA2-147
> Project: Sandesha2
> Issue Type: Bug
> Affects Versions: 1.3
> Environment: Fedora Core 7
> Reporter: Enric Jaen
>
> When Sandesha2 receives an RM request with an AckRequested header block, the AckRequestedProcessor.processAckRequestedHeader invokes the AxisEngine.send() and then tries to set setResponseWritten(true), but here comes the problem, as it doesn't find the RequestResponseTransport, so it cannot put setResponseWritten to true.
> As a consequence, later on the SequenceProcessor wrongly thinks that the AckResp has not been sent and sends it again the AckResp doing sendAckNow() , throwing an:
> org.apache.axis2.AxisFault: Sandesha2 got an exception when processing an in message: java.lang.IllegalStateException: Response already committed.
> I think that the problem is that normally the "In" MessageContext inside RequestResponseTransport is set after the Dispatch phase (specificaly in checkPostConditions), but the AckRequestedProcessor handler is executed *before* finishing the Dispatch phase, so the "in" MessageContext has not been set yet.
> I solved this issue by changing the following line of code in AckRequestedProcessor.processAckRequestedHeader():
> TransportUtils.setResponseWritten(ackMsgCtx, true);
> to:
> TransportUtils.setResponseWritten(rmMsgCtx.getMessageContext(), true);
> and it works. Notice that I changed ackMsgCtx (which is an OutOnly message) to rmMsgCtx (which is an InOut message)
> Cheers,
> /Enric
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org