Class IncompatibleConcurrencyScopesForEventSource

Namespace
Cratis.Chronicle.EventSequences.Concurrency
Assembly
Cratis.Chronicle.dll

The exception that is thrown when a batch appended through event source definitions needs different concurrency guards for the same event source id, which the append protocol cannot represent.

public class IncompatibleConcurrencyScopesForEventSource : Exception, ISerializable
Inheritance
IncompatibleConcurrencyScopesForEventSource
Implements
Inherited Members
Extension Methods

Remarks

An append carries one concurrency scope per event source id. Rather than guarding one of the events and silently leaving the others unguarded, or widening the guard beyond what any definition asked for, the append is rejected before anything is written. Supply an explicit scope for the event source id that suits every event in the batch, or append the events in separate batches.

Constructors

IncompatibleConcurrencyScopesForEventSource(EventSourceId, IReadOnlyList<ConcurrencyScope>)

The exception that is thrown when a batch appended through event source definitions needs different concurrency guards for the same event source id, which the append protocol cannot represent.

public IncompatibleConcurrencyScopesForEventSource(EventSourceId eventSourceId, IReadOnlyList<ConcurrencyScope> scopes)

Parameters

eventSourceId EventSourceId

The EventSourceId that the guards compete for.

scopes IReadOnlyList<ConcurrencyScope>

The distinct guards that were required.

Remarks

An append carries one concurrency scope per event source id. Rather than guarding one of the events and silently leaving the others unguarded, or widening the guard beyond what any definition asked for, the append is rejected before anything is written. Supply an explicit scope for the event source id that suits every event in the batch, or append the events in separate batches.

Properties

EventSourceId

Gets the EventSourceId that the guards compete for.

public EventSourceId EventSourceId { get; }

Property Value

EventSourceId

Scopes

Gets the distinct guards that were required.

public IReadOnlyList<ConcurrencyScope> Scopes { get; }

Property Value

IReadOnlyList<ConcurrencyScope>