Skip to content

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

@ivanbrennan

Description

@ivanbrennan

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions