Skip to content

Responses to partially successful atomicity groups or mass updates #2179

@HeikoTheissen

Description

@HeikoTheissen

If a service implements atomicity with isolation level "read uncommitted", and an atomicity group (or equivalently, a changeset) contains a successful and a failed request, must the corresponding responses both have failure status? This means that responses to an atomicity group cannot be streamed to the client.

Or is the client obliged to treat a success response like a failure if it comes from an atomicity group that also contains failed responses? This means that clients may receive success messages from an atomicity group as part of a streamed response, but must treat them as "provisional", because a failure message may come later in the same atomicity group. So clients must implement a rollback mechanism when interpreting the responses.

The same question applies to mass updates without continue-on-error preference: OData-Protocol, section 11.4.11.1 says:

If the continue-on-error preference has not been applied, and the service is unable to apply all of the changes in the request, then it MUST return an error response and MUST NOT apply any of the changes specified in the request payload.

For services that stream their responses, "returning an error" means producing an in-stream error. By then, clients may already have received parts of the response.

OData-Protocol, section 11.5.5.1 speaks of 4xx status codes in two places. (There may be other such places in the spec.) This should be rephrased to "client error", which can mean either a 4xx status code or an in-stream error following a success status code.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Open

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions