Task/ValueTuple/ReadOnlyMemory/Channels migration. Add .MemoryStore, .DynamoStore, .MessageDb; Support non-event sourced pipelines
LatestAdded
Feed:Monitor.AwaitCompletionenables quasi deterministic waiting for the processing of async reactions within integration tests #170Feed:Checkpointenables committing progress (and obtaining the achieved positions) without stopping the Sink #162Feed.SinglePassFeedSource: Coordinates reads of a set of tranches until each reaches its Tail #179Streams.Stats.abendThreshold: Abends Sink's processing with aHealthCheckExceptionif a stream continually fails to progress, or continually errors with non-transient exceptions #246Streams.Stats.Categorize: Break downokhandler outcomes by stream category #258Streams.Stats.Latency.Record(Ok|Outcom|Exn): Gather custom Handler latency metrics #258StreamFilter: Generic logic for filtering source events based on Category name, Stream name or Event type #252Ingester, Sinks: Expose optionalingesterStateIntervalandcommitIntervalcontrol on Sink factories #154 #239Scheduler: Split out stats rerateLimitedandtimedOutvsexceptions#194Scheduler: Addedindex,eventTypeto error logging #237Scheduler:purgeIntervalto control memory usage #97Scheduler:wakeForResultsoption to maximize throughput (without having to drop sleep interval to zero) #161Internal.Async.AwaitKeyboardInterruptAsTaskCanceledException: Honored cancellation; moved toPropulsion.Internal#160Propulsion.EventStoreDb: PortedEventStoreto targetEquinox.EventStore>=4.0.0(using the gRPC interface) #139Propulsion.CosmosStore3: Special cased version ofPropulsion.CosmosStoreto targetEquinox.CosmosStorev[3.0.7-3.99.0]Deprecated; Please migrate toPropulsion.CosmosStoreby updatingEquinox.CosmosStoredependencies to4.0.0#139Propulsion.DynamoStore:Equinox.CosmosStore-equivalent functionality forEquinox.DynamoStore. Combines elements ofCosmosStore,SqlStreamStore,Feed#140 #140 #177Propulsion.MessageDb:FeedSourceandCheckpointStorefor MessageDb #181 🙏 @nordfjordPropulsion.MemoryStore:MemoryStoreSourceto align with other sources for integration testing. Includes deterministicAwaitCompletionas perPropulsion.Feed-based Sources #165Propulsion.SqlStreamStore: AddedstartFromTail#173Propulsion.Tool:checkpointcommandline option; enables viewing or overriding checkpoints #141Propulsion.Tool:sync <kafka|stats>supportsfrom jsonsource option #250Propulsion.Tool: Add support for autoscaling throughput of Cosmos containers and databases #142 🙏 @brihadishPropulsion.Tool:sync cosmos from <cosmos|json>#252 #263
Changed
- Targeted
net6.0with6.0.300SDK,FSharp.Corev6.0.0,FSharp.Control.TaskSeqv0.4.0,MathNet.Numericsv4.15.0 - Changed all
Tupletypes tostructtuples (System.ValueTuple) #169 - Changed all
AsynctoTask#192 Dispatcher: ReplacedGetConsumingEnumerablewithSystem.Threading.Channels#155Ingester,Submitter: ReplacedAsync.SleepwithTask.WhenAny; Condensed logging #154Pipeline: RenamedAwaitShutdowntoAwait, addedWait#192Projector: ReplacedAsyncwithtaskfor projector supervision #156Scheduler: ReplacedConcurrent*withSystem.Threading.Channels#156Scheduler:Struct/voptionconversions; buffer reuse #157Scheduler: ReplacedThead.SleepwithTask.WhenAny; Added Sleep time logging #161Streams: Changed dominantITimelineEventEventBodytype frombyte[]toSystem.ReadOnlyMemory<byte>(Sinks.EventBody) #169 #208Propulsion.CosmosStore: Changed to targetEquinox.CosmosStorev4.0.0#139Propulsion.CosmosStore.CosmosSource: Changed parsing to useSystem.Text.Json#139Propulsion.CosmosStore.CosmosStoreSink+CosmosStorePruner: Exposed*Stats#226Propulsion.EventStore: Pinned to targetEquinox.EventStorev[3.0.7-3.99.0]Deprecated; Please migrate toPropulsion.EventStoreDb#139Propulsion.EventStoreDb.EventStoreSource: Changed API to matchPropulsion.SqlStreamStoreAPI rather thanPropulsion.EventStore#139Propulsion.Feed: Moved implementations into mainPropulsionlibrary. While this adds aFSharp.Control.TaskSeqdependency, it makes maintenance and navigation easier #265Propulsion.Feed,Kafka: ReplacedAsyncwithtaskfor supervision #158, #159Propulsion.Kafka: TargetFsCodec.NewtonsoftJsonv3.0.0#139Propulsion.Prometheus: ExtractedPropulsion.PrometheusandPropulsion.Feed.Prometheusin order to removePrometheusdependency from core package #265Propulsion.Tool:projectrenamed tosync; sources now have afromprefix #252
Removed
Streams.StreamSpan: Changed from a record to individual arguments ofFsCodec.StreamNameandSinks.Event[]#169 #208Streams.SpanResult: Replaced withint64to reflect the updated position #264 #208Streams:statsIntervalis obtained from theStatswherever one is supplied #208Propulsion.Cosmos: Should not be in general use - users should port toPropulsion.CosmosStore3, thenPropulsion.CosmosStore#193Destructurama.FSharpdependency #152Ingester,Submitter: Removed requirement to specify sleep intervals #154Scheduler: Removed need to tuneidleDelayexcept in extreme circumstances #161
Fixed
Propulsion.CosmosStore.CosmosStoreSource: PropagatecorrelationId/causationId#260Propulsion.SqlStreamStore: Replaced incorrect/meaningless stream name forSqlStreamStoreSource#139- Synced
AwaitTaskCorrectwith official version 3c11142 Projector,Ingester,Submitter,Scheduler: Deterministic shutdown via Cancellation and/or unhandled exceptions #154
New Contributors
- @brihadish made their first contribution in #142
- @nordfjord made their first contribution in #181
- @benjstephenson made their first contribution in #196
Full Changelog: 2.12.2...3.0.0