Repository navigation
Release v3.16.0
Reactor and reducer handlers built and sent every result inline in one GenServer. One large partition blocked the whole observer, and copies of batches the kernel had abandoned piled up behind it.
Added
- Batches for different partitions run concurrently, each in its own process, up to
:max_concurrent_partitions(client option, default16). Batches for one partition run one at a time and in order. The kernel matches results byDeliveryId, so results can complete out of order across partitions.max_concurrent_partitions: 1restores the old serial behavior. (#192) - Replay notifications keep their place. Begin/end replay waits for everything before it, and partition replay begin/end waits for that partition's earlier batches.
- A batch carrying
DeliverWithinMilliseconds(from Cratis/Chronicle#5449) that is only reached after that window, counted from receipt, is answered asFailedwithout running. A kernel that does not send the field gets the previous behavior. - Telemetry:
[:chronicle, :observer, :batch, :start | :stop | :exception],[:chronicle, :observer, :batch, :expired],[:chronicle, :observer, :queue].
Changed
- Reactor and reducer results echo the delivery's
DeliveryId. handle/2can now run in several processes at once. This is documented under Reactors → Concurrency.