jet / jet/propulsion

V3 checklist

Open
#116 0 comments 1 reaction 0 assignees View on GitHub
Dominant language
F#
Stars
190
Forks
24
PR merge metrics
No merged PRs in 30d

Description

- [x] Cosmos: continues to target Equinox.Cosmos >= 2.6.0, so can not be used side by side with Propulsion.* >=3.0.0. _Probably remove in 3.x_
- [x] CosmosStore: target non-preview CFP logic (I believe that will be in Microsoft.Azure.Cosmos 3.21.0 see [PR](https://github.com/Azure/azure-cosmos-dotnet-v3/pull/2650#event-5113154424))
- [x] rename maxDocuments to maxItems [for CosmosStore]( https://github.com/jet/propulsion/blob/56c7723c533bec2d671d7fc9a2874aadb8817f75/src/Propulsion.CosmosStore/ChangeFeedProcessor.fs#L50)
- [x] Add `AwaitWithStopOnCancellation`
- [x] Kafka: target FsKafka/CK `~1.7` https://github.com/jet/FsKafka/issues/48
- [x] Kafka0: remove see https://github.com/jet/FsKafka/issues/48
- [x] *remove `net461` multitargeting*
- [x] `EventStore`: update to target Equinox.* 3.0.0. _Probably remove in 3.x_
- [x] `SqlStreamStore`: update to target Equinox.* 3.0.0 (currently does not bind to Equinox)
- [x] `CosmosStore3`: target `Equinox.CosmosStore` 3.x
- [x] `CosmosStore`: target `Equinox.CosmosStore` >= 4
- [x] `EventStoreDb`: target `Equinox.EventStoreDb` >= 4
- [x] remove dependency on `.Destructure.FSharpTypes` by replacing `Option` with `Nullable` and `list` with `Array`
- [x] Replace all tuples with `ValueTuple` and other cleanup (see #169)
- [x] Propulsion: push StreamSpan and/or an equivalent down into FsCodec (or perhaps use tuples for signatures)
- [ ] Propulsion, CosmosStore, Cosmos: separate out .Prometheus packages
- [ ] Propulsion: Consider removing Parallel stuff and/or shifting it out to a specific package as
a) it has no metrics
b) it has low usage
c) while its arguably an on-ramp to understanding the streams impl, it also increases the concept count
- Improve serverless support and resource consumption by:
- [x] replacing combinations of `SemaphoreSlim` + `ConcurrentQueue` + `Async` Write APIs with usage of `System.Threading.Channels`
- [x] provide a Lambda-hosted DynamoStore projection loop mode which (subject to a timeout and linger period), reads from the index, runs the projections (and/or cancels them if if the timeout has been reached), checkpoints until one of:
- timed out
- index tail reached and linger period expired
- [ ] provide an Azure Functions mode where
- the trigger feeds in a batch, which is fed into the Sink
- chain completes when the batch has completed, roughly like how [`MemoryStoreProjector` provides an `AwaitWithStopOnCancellation`](https://github.com/jet/dotnet-templates/blob/736df9c2d1103f2215483750ad10b9f0d4ddecc2/equinox-shipping/Watchdog.Integration/MemoryStoreProjector.fs#L41)
- [ ] Kafka: Separate Sink from Consumer/Source in the StreamsProjector in manner equivalent to how it works for other sources in order that Kafka does not need to be special-cased wrt `SourceArgs` in the `dotnet-templates` `proReactor` template
- [ ] `EventStore`: Merge the striped reader support into `EventStoreDb` and remove

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.