Skip to content

Implement transaction support for batch requests with POST operations #88

Description

@kbarbounakis

Background
The batch feature in OData v4 allows for complex workflows involving multiple operations within a single request. However, when multiple POST requests (inserts) are included in a batch, it's crucial to ensure that either all operations succeed or the batch is rolled back if any fail, maintaining data integrity.

Task

  • Design and implement transaction handling for batch requests containing POST operations.
  • Ensure that if any POST operation in a batch fails, all changes from that batch are rolled back to prevent partial insertions.
  • Support atomicityGroup/changeset semantics according to OData v4 standards.
  • Handle errors correctly (e.g., 424 Failed Dependency when dependencies exist and a parent operation fails).
  • Provide appropriate feedback in the batch response for transaction outcomes.

Acceptance Criteria

  • POST requests in a batch are executed in an atomic transaction group.
  • On failure of one or more POSTs, all requests in the group are rolled back.
  • Tests are provided for success, failure, and rollback scenarios.
  • The feature is documented (examples, API usage, edge-cases involving nested objects or arrays).

References

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions