Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SOAPFault error for operation 'set_json_quote_pricing' after upgrading from Savon 2.12 to 2.15 #1015

Open
yrmallu opened this issue Aug 23, 2024 · 3 comments

Comments

@yrmallu
Copy link

yrmallu commented Aug 23, 2024

Description

After upgrading Savon from version 2.12 to 2.15, I've started encountering a SOAPFault error when attempting to call the set_json_quote_pricing operation, which exists in the WSDL. The error message is:

Savon::SOAPFault: (SOAP-ENV:Server) Procedure 'setJSONQuotePricingIn' not present

It's important to note that the operation set_json_quote_pricing and the error message refer to setJSONQuotePricingIn, which appears to be related to the input message name in the WSDL, not the operation name itself.

Steps to Reproduce

  1. Upgrade Savon gem from version 2.12 to 2.15.
  2. Attempt to call the set_json_quote_pricing operation with appropriate parameters as shown in the code sample below.
  3. Observe that a SOAPFault error is being raised with the mentioned error message.

Code Sample

require 'savon'

client = Savon.client(wsdl: 'http://example/quote?wsdl')
response = client.call(:set_json_quote_pricing, message: { data: pricing_json })

Expected Behavior
The expected behavior is for the set_json_quote_pricing operation to be successfully called without any SOAPFault being raised, as was the case with Savon version 2.12.

Actual Behavior
When calling the set_json_quote_pricing operation, a SOAPFault error occurs indicating an issue with a procedure named setJSONQuotePricingIn.

Environment
Ruby version: 3.3.4
Savon version: 2.15
HTTPi version: 4.0.4
@pcai
Copy link
Member

pcai commented Aug 23, 2024

Thanks. Can you provide an example wsdl (or the relevant part of it)? Or can you record the calls in both versions (enable http logging) and post the output from savon so we can see what changed?

Won't be able to reproduce your issue to fix it otherwise.

@yrmallu
Copy link
Author

yrmallu commented Aug 24, 2024

@pcai Thank you for your prompt response. Below are the SOAP request and response logs for both version 2.12.0 (which works as expected) and version 2.15.1 (where the issue occurs).

MY WSDL file looks like

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://example/quote" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" name="ServiceController" targetNamespace="http://example/quote">

<operation name="setVendorQuoteStatus">
  <documentation>setVendorQuoteStatus</documentation>
  <input message="tns:setVendorQuoteStatusIn"/>
  <output message="tns:setVendorQuoteStatusOut"/>
</operation>
<message name="setVendorQuoteStatusIn">
  <part name="data" type="xsd:string"/>
</message>
<message name="setVendorQuoteStatusOut">
  <part name="return" type="xsd:boolean"/>
</message>
<binding name="ServiceControllerBinding" type="tns:ServiceControllerPort">
  <operation name="setVendorQuoteStatus">
    <soap:operation soapAction="http://example/quote#setVendorQuoteStatus"/>
    <input>
      <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://example/quote"/>
    </input>
    <output>
      <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://example/quote"/>
    </output>
  </operation>
</binding>


<operation name="setJSONQuotePricing">
  <documentation>setJSONQuotePricing</documentation>
  <input message="tns:setJSONQuotePricingIn"/>
  <output message="tns:setJSONQuotePricingOut"/>
</operation>
<message name="setJSONQuotePricingIn">
  <part name="data" type="xsd:string"/>
</message>
<message name="setJSONQuotePricingOut">
  <part name="return" type="xsd:boolean"/>
</message>
<binding name="ServiceControllerBinding" type="tns:ServiceControllerPort">
  <operation name="setJSONQuotePricing">
    <soap:operation soapAction="http://example/quote#setJSONQuotePricing"/>
    <input>
      <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://example/quote"/>
    </input>
    <output>
      <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://example/quote"/>
    </output>
  </operation>
</binding>

Version 2.12.0 Logs:

Request:

worker-1  | I, [2024-08-24T03:34:57.213633 #1]  INFO -- : SOAP request: http://example/quote
worker-1  | I, [2024-08-24T03:34:57.214002 #1]  INFO -- : SOAPAction: "http://example/quote#setJSONQuotePricing", Content-Type: text/xml;charset=UTF-8, Content-Length: 39253
worker-1  | D, [2024-08-24T03:34:57.218191 #1] DEBUG -- : <?xml version="1.0" encoding="UTF-8"?>
worker-1  | <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://example/quote" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
worker-1  |   <env:Body>
worker-1  |     <tns:setJSONQuotePricing>
worker-1  |       <data>...</data>
worker-1  |     </tns:setJSONQuotePricing>
worker-1  |   </env:Body>
worker-1  | </env:Envelope>

Response:

worker-1  | I, [2024-08-24T03:34:57.672429 #1]  INFO -- : SOAP response (status 200)
worker-1  | D, [2024-08-24T03:34:57.672762 #1] DEBUG -- : <?xml version="1.0" encoding="UTF-8"?>
worker-1  | <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://example/quote" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
worker-1  |   <SOAP-ENV:Body>
worker-1  |     <ns1:setJSONQuotePricingResponse>
worker-1  |       <return xsi:type="xsd:boolean">true</return>
worker-1  |     </ns1:setJSONQuotePricingResponse>
worker-1  |   </SOAP-ENV:Body>
worker-1  | </SOAP-ENV:Envelope>

Version 2.15.1 Logs:

Request:

api-1     | I, [2024-08-24T03:59:57.888515 #1]  INFO -- : SOAP request: http://example/quote
api-1     | I, [2024-08-24T03:59:57.888681 #1]  INFO -- : SOAPAction: "http://example/quote#setVendorQuoteStatus"
api-1     | Content-Type: text/xml;charset=UTF-8
api-1     | Content-Length: 698
api-1     | D, [2024-08-24T03:59:57.890289 #1] DEBUG -- : <?xml version="1.0" encoding="UTF-8"?>
api-1     | <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://example/quote" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/">
api-1     |   <env:Body>
api-1     |     <tns:setVendorQuoteStatusIn>
api-1     |       <data>{"quoteReference":"test","message":null,"vendor":null,"status":0}</data>
api-1     |     </tns:setVendorQuoteStatusIn>
api-1     |   </env:Body>
api-1     | </env:Envelope>

Response:

Response:
api-1     | I, [2024-08-24T03:59:58.033572 #1]  INFO -- : SOAP response (status 500)
api-1     | D, [2024-08-24T03:59:58.033741 #1] DEBUG -- : date: Sat, 24 Aug 2024 03:59:57 GMT
api-1     | server: Apache
api-1     | content-length: 313
api-1     | content-type: text/xml; charset=utf-8
api-1     | D, [2024-08-24T03:59:58.034075 #1] DEBUG -- : <?xml version="1.0" encoding="UTF-8"?>
api-1     | <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
api-1     |   <SOAP-ENV:Body>
api-1     |     <SOAP-ENV:Fault>
api-1     |       <faultcode>SOAP-ENV:Server</faultcode>
api-1     |       <faultstring>Procedure 'setVendorQuoteStatusIn' not present</faultstring>
api-1     |     </SOAP-ENV:Fault>
api-1     |   </SOAP-ENV:Body>
api-1     | </SOAP-ENV:Envelope>

Log trace:

| I, [2024-08-24T03:59:58.057232 #1]  INFO -- : SOAPFault: (SOAP-ENV:Server) Procedure 'setVendorQuoteStatusIn' not present  ["/usr/local/bundle/gems/savon-2.15.1/lib/savon/response.rb:132:in `raise_soap_and_http_errors!'", "/usr/local/bundle/gems/savon-2.15.1/lib/savon/response.rb:20:in `initialize'", "/usr/local/bundle/gems/savon-2.15.1/lib/savon/operation.rb:76:in `new'", "/usr/local/bundle/gems/savon-2.15.1/lib/savon/operation.rb:76:in `create_response'", "/usr/local/bundle/gems/savon-2.15.1/lib/savon/operation.rb:65:in `call'", "/usr/local/bundle/gems/savon-2.15.1/lib/savon/client.rb:37:in `call'", "/app/app/models/psp.rb:70:in `set_vendor_quote_status'", "/app/app/models/health.rb:225:in `psp_connection'", "/app/app/models/health.rb:96:in `initialize'", "/app/app/models/health.rb:74:in `new'", "/app/app/models/health.rb:74:in `get'", "/app/app/controllers/utils_controller.rb:4:in `health'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/abstract_controller/base.rb:228:in `process_action'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_controller/metal/rendering.rb:30:in `process_action'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/abstract_controller/callbacks.rb:42:in `block in process_action'", "/usr/local/bundle/gems/activesupport-6.1.7.8/lib/active_support/callbacks.rb:98:in `run_callbacks'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/abstract_controller/callbacks.rb:41:in `process_action'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_controller/metal/rescue.rb:22:in `process_action'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'", "/usr/local/bundle/gems/activesupport-6.1.7.8/lib/active_support/notifications.rb:203:in `block in instrument'", "/usr/local/bundle/gems/activesupport-6.1.7.8/lib/active_support/notifications/instrumenter.rb:24:in `instrument'", "/usr/local/bundle/gems/activesupport-6.1.7.8/lib/active_support/notifications.rb:203:in `instrument'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_controller/metal/instrumentation.rb:33:in `process_action'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_controller/metal/params_wrapper.rb:249:in `process_action'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/abstract_controller/base.rb:165:in `process'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_controller/metal.rb:190:in `dispatch'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_controller/metal.rb:254:in `dispatch'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/routing/route_set.rb:50:in `dispatch'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/routing/route_set.rb:33:in `serve'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/journey/router.rb:50:in `block in serve'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/journey/router.rb:32:in `each'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/journey/router.rb:32:in `serve'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/routing/route_set.rb:842:in `call'", "/usr/local/bundle/gems/rack-2.2.9/lib/rack/session/abstract/id.rb:266:in `context'", "/usr/local/bundle/gems/rack-2.2.9/lib/rack/session/abstract/id.rb:260:in `call'", "/usr/local/bundle/gems/rack-2.2.9/lib/rack/etag.rb:27:in `call'", "/usr/local/bundle/gems/rack-2.2.9/lib/rack/conditional_get.rb:27:in `call'", "/usr/local/bundle/gems/rack-2.2.9/lib/rack/head.rb:12:in `call'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'", "/usr/local/bundle/gems/activesupport-6.1.7.8/lib/active_support/callbacks.rb:98:in `run_callbacks'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/middleware/callbacks.rb:26:in `call'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/middleware/executor.rb:14:in `call'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'", "/usr/local/bundle/gems/lograge-0.11.2/lib/lograge/rails_ext/rack/logger.rb:15:in `call_app'", "/usr/local/bundle/gems/railties-6.1.7.8/lib/rails/rack/logger.rb:28:in `call'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'", "/usr/local/bundle/gems/request_store-1.7.0/lib/request_store/middleware.rb:19:in `call'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/middleware/request_id.rb:26:in `call'", "/usr/local/bundle/gems/rack-2.2.9/lib/rack/runtime.rb:22:in `call'", "/usr/local/bundle/gems/activesupport-6.1.7.8/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/middleware/executor.rb:14:in `call'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/middleware/static.rb:24:in `call'", "/usr/local/bundle/gems/rack-2.2.9/lib/rack/sendfile.rb:110:in `call'", "/usr/local/bundle/gems/actionpack-6.1.7.8/lib/action_dispatch/middleware/host_authorization.rb:142:in `call'", "/usr/local/bundle/gems/railties-6.1.7.8/lib/rails/engine.rb:539:in `call'", "/usr/local/bundle/gems/puma-5.6.8/lib/puma/configuration.rb:252:in `call'", "/usr/local/bundle/gems/puma-5.6.8/lib/puma/request.rb:77:in `block in handle_request'", "/usr/local/bundle/gems/puma-5.6.8/lib/puma/thread_pool.rb:340:in `with_force_shutdown'", "/usr/local/bundle/gems/puma-5.6.8/lib/puma/request.rb:76:in `handle_request'", "/usr/local/bundle/gems/puma-5.6.8/lib/puma/server.rb:443:in `process_client'", "/usr/local/bundle/gems/puma-5.6.8/lib/puma/thread_pool.rb:147:in `block in spawn_thread'"]

@pcai
Copy link
Member

pcai commented Oct 1, 2024

I suspect its an issue with wasabi. mind checking if this fixes the issue?

gem "wasabi", github: "savonrb/wasabi", ref: "d4984c7a"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants