Synapse
  1. Synapse
  2. SYNAPSE-251

Synapse fails to handle the fault process properly

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.1.1
    • Fix Version/s: 1.2
    • Component/s: None
    • Labels:
      None
    • Environment:
      Ubuntu7.04, JDK1.5.0_14

      Description

      Following scenarios were tried out

      Scenario 1 - Sending a POX request to the server
      ==============================
      1. Create a configuration as below
      <sequence name="xslt_transfom_sequence" onError="fault">
      <in>
      <xslt key="xslt_for_request"/>
      <send>
      <endpoint>
      <address uri="http://[host]:[port]/services/invalid_service" format="pox"/>
      </endpoint>
      </send>
      </in>
      <out>
      <send/>
      </out>
      </sequence>

      2. Send a SOAP request from the client and convert it into a POX message before sending to the server.
      3. Since the service URL does not exist it will return a SOAP fault but since a POX message is sent to the server, the fault returned should also be POX. But actually it just sends back an exception and not a POX fault.

      Scenario 2 - Sending a REST request to the server
      ==============================
      Similarly when a REST request is sent it just sends an error and not a REST fault

      Therefore seems that Synapse cannot process faults properly

        Activity

        Evanthika Amarasiri created issue -
        Ruwan Linton made changes -
        Field Original Value New Value
        Assignee Ruwan Linton [ ruwan ]
        Hide
        Ruwan Linton added a comment -

        This issue seems confusing, Evanthika, I think you got the issue text messed up and the request to Synapse has to be a POX and it is converted to a SOAP request to the server.

        Isn't it? If not I don't see an issue here

        Ruwan

        Show
        Ruwan Linton added a comment - This issue seems confusing, Evanthika, I think you got the issue text messed up and the request to Synapse has to be a POX and it is converted to a SOAP request to the server. Isn't it? If not I don't see an issue here Ruwan
        Hide
        Evanthika Amarasiri added a comment -

        I'm sorry for making it confusing. The actual issue is that when I send a POX request from the client, Synapse would convert it to a POX message. Then when the fault is sent back to the client it should be sent as a SOAP fault and not as a POX message. This is what I was trying to say. But anyway the fault is sent to the client in the SOAP format but it is not sent as a SOAP fault. Instead, it is being sent as a normal exception message as below. Is this correct? Please clarify.

        <?xml version='1.0' encoding='UTF-8'?>
        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        <soapenv:Body>
        <Exception>org.apache.axis2.AxisFault: The service cannot be found for the endpoint reference (..................</Exception>
        </soapenv:Body>
        </soapenv:Envelope>

        Show
        Evanthika Amarasiri added a comment - I'm sorry for making it confusing. The actual issue is that when I send a POX request from the client, Synapse would convert it to a POX message. Then when the fault is sent back to the client it should be sent as a SOAP fault and not as a POX message. This is what I was trying to say. But anyway the fault is sent to the client in the SOAP format but it is not sent as a SOAP fault. Instead, it is being sent as a normal exception message as below. Is this correct? Please clarify. <?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <Exception>org.apache.axis2.AxisFault: The service cannot be found for the endpoint reference (..................</Exception> </soapenv:Body> </soapenv:Envelope>
        Hide
        Ruwan Linton added a comment -

        OK, now I got the issue correctly.

        Well, this is an acceptable scenario (basically the issue resides on the non standard POX fault it self). There is no standard on sending a Fault through POX, so there is no way that we can detect whether this is an application message or a fault message unless through the HTTP status code, which will not be there for a JMS message? So I think this we can not handle uniformly.

        Then if you look at the vise versa, that is sending a POX message to synapse and convert that to SOAP to talk to server, this also wrong and can be fixed. So I have fixed that path .

        If you want a pox message to be converted to a SOAPFault then you have to do it through configuration by checking whether a specific error element is present or not. I think this makes sense.

        Show
        Ruwan Linton added a comment - OK, now I got the issue correctly. Well, this is an acceptable scenario (basically the issue resides on the non standard POX fault it self). There is no standard on sending a Fault through POX, so there is no way that we can detect whether this is an application message or a fault message unless through the HTTP status code, which will not be there for a JMS message? So I think this we can not handle uniformly. Then if you look at the vise versa, that is sending a POX message to synapse and convert that to SOAP to talk to server, this also wrong and can be fixed. So I have fixed that path . If you want a pox message to be converted to a SOAPFault then you have to do it through configuration by checking whether a specific error element is present or not. I think this makes sense.
        Hide
        Ruwan Linton added a comment -

        Part of this issue is invalid, but I have figured an relevant issue in processing faults in synapse, and fixed that.

        Show
        Ruwan Linton added a comment - Part of this issue is invalid, but I have figured an relevant issue in processing faults in synapse, and fixed that.
        Ruwan Linton made changes -
        Fix Version/s 1.2 [ 12312892 ]
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Hide
        Evanthika Amarasiri added a comment -

        When a SOAP message is sent and if it is being converted to a POX/REST message at Synapse level and then if a SOAP fault occurs it is converted into a POX fault. Resolved in Version 1.2_QA_B1 . Therefore will be closing the issue

        Show
        Evanthika Amarasiri added a comment - When a SOAP message is sent and if it is being converted to a POX/REST message at Synapse level and then if a SOAP fault occurs it is converted into a POX fault. Resolved in Version 1.2_QA_B1 . Therefore will be closing the issue
        Evanthika Amarasiri made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

          • Assignee:
            Ruwan Linton
            Reporter:
            Evanthika Amarasiri
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development