Closed bartelink closed 1 month ago
but this would be a new major version since the user facing API seems to be changing
You are not wrong of course... But I have some buts:
This handler signature was only introduced in the V3 timeframe, and I believe it to have been a misdesign - you want calculating the next version (or having it flow from what the sycing is going into) be foremost in people's minds
For a V4, I think Propulsion.Feed and Propulsion should be merged as lots of modules depend on Propulsion.Feed and it in turn depends on Propulsion
What if I promised to mint a V4 as soon as Equinox.CosmosStore 4.1.0 is final ? (and kill Propulsion.CosmosStore3 the minute that's done)
Other things on the list that I'd like to do at some point (which don't change the V4 API but simplify the whole deal):
Enhances the pipeline to support propagation of
Unfold
events through the pipeline:EquinoxSystemTextJsonParser.eventsAndUnfoldsWhereStream
extracts the unfolds in addition to the eventsStreamSpan.merge
ensures we only retain the most recent ones as inputs are coalescedspan
(assuming they fit inside the limit)IsUnfold = true
andIndex
= version, where version is the Index of the last 'real' event +1maxBytes
limit will include/exclude either all or none of the unfoldsAs before, given a
Propulsion.Sink.Event[]
, you compute:Propulsion.Sink.Event.index
Propulsion.Sink.Event.nextIndex
(even if there are unfolds at the end of the sequence)Note that the following assumptions no longer hold if you have unfolds in an
Event[]
:nextIndex
<->index events + events.Length
(renamed tonext
as intentional breaking change)events.Length
What is the use case? If you're running a ChangeFeedProcessor from an Equinox.CosmosStore, the changefeed includes:
RollingState
state as held in the tipBeing able to route the Unfolds to the Handler alongside normal events enables:
propulsion sync cosmos
orpropulsion sync file cosmos
)