Skip to content

Idempotent methods: hide exceptions on retries if there is evidence the original operation succeeded #924

@mderka

Description

@mderka

This issue follows up on #883. Some idempotent methods can report an exception when retries. This was observed for example within #808 and #816. The intuition is that there are cases when the socket connection reports a timeout while waiting for a server response. A subsequent retry then receives an error because the operation finished in the meantime.

We introduced a new attribute rejected in BaseServiceException which indicates if an error has been certainly refused by the server (for example when quota has been exceeded). We need to adjust error handling in all the modules to properly work with idempotent and rejected attributes. The discussion regarding create and delete operations in #883 should be kept in mind.

We established that 500-type errors should not be treated as rejected because we cannot guarantee that the server did not process anything. We should assume that we can get a 500 while the request has been processed and committed on the service side.

Metadata

Metadata

Labels

api: corepriority: p2Moderately-important priority. Fix may not be included in next release.type: feature request‘Nice-to-have’ improvement, new feature or different behavior or design.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions