Skip to content

Releases: mizrael/OpenSleigh

v3.1.0

10 Jan 21:02

Choose a tag to compare

Release Date: January 10, 2026

NEW FEATURES

✨ Multiple Saga Starters Support (#101)

  • Sagas can now be initiated by multiple message types
  • Optimistic concurrency prevents duplicate saga creation
  • Full E2E test coverage for sequential/parallel scenarios

IMPROVEMENTS

🚀 RabbitMessageSubscriber: Proper cancellation token propagation

  • Enables graceful shutdown of long-running handlers

CONTRIBUTORS

@arootbeer - Multiple saga starters implementation
@mizrael - Bug fixes and testing

v3.0.7

10 Jan 17:46
10b1903

Choose a tag to compare

🎉 Major Features

Multiple Saga Starters (#101)

  • BREAKING CHANGE: Sagas can now be started by multiple message types instead of just one
    • SagaDescriptor.InitiatorType (Type) → SagaDescriptor.InitiatorTypes (ISet)
    • A saga can implement multiple IStartedBy interfaces
    • Each starter message type can independently create saga instances
  • Added OptimisticLockException to handle concurrent saga creation when multiple starter messages arrive simultaneously
  • Enhanced retry logic in RabbitMessageSubscriber and InMemorySubscriber to handle optimistic concurrency conflicts
  • Improved saga instance lifecycle management for parallel message processing

✅ Testing

E2E Test Coverage

  • Added comprehensive E2E tests for optimistic concurrency scenarios
  • Added E2E tests for in-memory transport and persistence layers
  • New test scenarios:
    • ParallelMultiStartSagaScenario - concurrent saga creation from different starter messages
    • SequentialMultiStartSagaScenario - sequential saga creation from different starter messages
    • Tests for SQL Server, PostgreSQL, RabbitMQ, and in-memory implementations
  • Created reusable E2ETestsBase class for test infrastructure

🏗️ Infrastructure & DevOps

CI/CD Improvements

  • Migrated from Coveralls to CodeCov for code coverage reporting
  • Integrated SonarCloud for code quality and security analysis
  • Updated CircleCI configuration with improved test execution
  • Enhanced codecov.yaml configuration

Dependencies

  • Updated Kafka Docker image to latest version
  • Various minor dependency updates

📚 Documentation

  • Added CLAUDE.md: Comprehensive architecture and development guide covering:
    • Repository overview and build commands
    • Three-layer architecture with detailed component descriptions
    • Message lifecycle flow diagrams
    • Critical patterns (idempotency, pessimistic locking, correlation)
    • Debugging guidance and test organization
  • Added .github/copilot-instructions.md for GitHub Copilot integration
  • Updated README.md with latest information

🔧 Refactoring & Code Quality

  • Extensive refactoring and code cleanup across transport and persistence layers
  • Fixed message type resolution logic in TypeExtensions
  • Removed unnecessary dynamic casts
  • Improved RabbitMQ infrastructure cleanup
  • Renamed PostgreSqlOutboxRepository → PostgreSQLOutboxRepository (consistent casing)
  • Enhanced SQL saga state repository with better concurrency handling

🐛 Bug Fixes

  • Fixed test execution issues across integration test suites
  • Fixed RabbitMQ infrastructure cleanup in test environments
  • Fixed configuration issues in CI pipeline
  • Various minor fixes for test stability

Migration Guide (v3.0.6 → v3.0.7)

Breaking Change: If you have custom code that accesses SagaDescriptor.InitiatorType:

// Before (v3.0.6)
Type initiatorType = descriptor.InitiatorType;

// After (v3.0.7)
ISet initiatorTypes = descriptor.InitiatorTypes;
// or to get the first one:
Type firstInitiatorType = descriptor.InitiatorTypes.First();

New Feature: To create a saga with multiple starters:

public class MySaga : Saga,
IStartedBy, // Can start the saga
IStartedBy, // Can also start the saga
IHandleMessage // Regular handler
{
// Both FirstStarterMessage and SecondStarterMessage can create new saga instances
// If concurrent starter messages arrive, OptimisticLockException will be thrown
// and the transport layer will retry automatically
}


Contributors: David Guida (@mizrael), Matt Mills (@arootbeer)

v3.0.6

24 Oct 19:33

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v3.0.4...v3.0.6

v3.0.5

23 Jun 19:33
814f965

Choose a tag to compare

What's Changed

Full Changelog: v3.0.4...v3.0.5

v3.0.4

16 Apr 01:21

Choose a tag to compare

What's Changed

Full Changelog: v3.0.2-alpha...v3.0.4

v3.0.2-alpha

04 Aug 17:07
935ed55

Choose a tag to compare

OpenSleigh v3.0.1-alpha

04 Aug 16:21

Choose a tag to compare

What's Changed

Full Changelog: v3.0.0-alpha...v3.0.1-alpha

OpenSleigh v3.0.0-alpha

22 Apr 00:38
49cc02f

Choose a tag to compare

Pre-release

What's Changed

Full Changelog: v2.0.7...v3.0.0-alpha

OpenSleigh v2.0.7

OpenSleigh v.2.0.6