square-ruby-sdk icon indicating copy to clipboard operation
square-ruby-sdk copied to clipboard

Connection failure raises "TypeError: Server responded with invalid JSON"

Open ivanbrennan opened this issue 2 years ago • 4 comments

Describe the bug Occasionally, an API request fails due to an intermittent network error, and the SDK raises a TypeError when attempting to parse the error response as JSON. An example error I've observed had the following response body:

upstream connect error or disconnect/reset before headers. reset reason: connection failure

Expected behavior I'm not sure how best to handle this scenario, but I think raising a more semantically-meaningful error would be preferable, as that would help clients implement reasonable error-handling.

To Reproduce Because this is caused by intermittent network failures, I'm not sure how to reliably reproduce the issue.

Backtrace Here's an extract from the backtrace of such an error:

/gems/square.rb-19.0.0.20220420/lib/square/api_helper.rb:130 in rescue in json_deserialize
/gems/square.rb-19.0.0.20220420/lib/square/api_helper.rb:127 in json_deserialize
/gems/square.rb-19.0.0.20220420/lib/square/api/cards_api.rb:58 in list_cards

Caused by JSON::ParserError: 783: unexpected token at 'upstream connect error or disconnect/reset before headers. reset reason: connection failure'

Square SDK version 19.0.0.20220420

ivanbrennan avatar May 26 '22 15:05 ivanbrennan

Thank you for your feedback @ivanbrennan. Improved error messages is something we have on our roadmap for 2022.

wolfadex avatar Jun 06 '22 14:06 wolfadex

I have also encountered the same error while making the complete_payment API call with payment_id as nil. Just want to know, Is it going to be handled in near future.

dawoodmalhi avatar May 27 '23 14:05 dawoodmalhi