Skip to content

Implement atomic multi-stream event append across all event store implementations  #511

@qodo-free-for-open-source-projects

Description

Description

  • Enable appending events to multiple streams in a single atomic operation
  • Provide store-specific implementations leveraging native atomic capabilities where available
  • Maintain backward compatibility with existing single-stream append operations
  • Support both application-layer and low-level event append patterns

Deliverables

  • Core Interface: Add NewStreamAppend type and multi-stream AppendEvents overload to IEventWriter with sequential fail-fast default
  • KurrentDB Support: Implement native atomic multi-stream append using MultiStreamAppendAsync (requires KurrentDB 25.1+)
  • SQL Implementations: Add atomic multi-stream append via single database transaction for PostgreSQL, SQL Server, and SQLite
  • Decorator Support: Extend TracedEventWriter, TracedEventStore, and TieredEventStore to handle multi-stream operations
  • Application Extensions: Provide Store extension methods for ProposedAppend[] and raw event collections
  • Test Coverage: Add base test class with three test cases inherited by all store implementations
  • Documentation: Update event store documentation with atomicity guarantees per implementation

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