equinox icon indicating copy to clipboard operation
equinox copied to clipboard

V5 checklist

Open bartelink opened this issue 3 years ago • 0 comments

Breaking change/things that are ugly queue:

  • Add OpenTelemetry integration
  • CosmosStore: will shift to using Azure.Cosmos when that happens. When that work might happen is subject to change. Here's an example of some teaser info.
  • Cosmos: Check if newer query engine optimizations might yield a better indexing strategy, see linked article in https://github.com/jet/equinox/issues/274 (perhaps it can borrow the one that works in DynamoDB now given this enhancement?)
  • provide a way to specify a load hint that allows you to target a specific Version (or force a full Reload?)

V4 vs V3:

  • StreamName -> StreamId: stores take the Category name, Decider.forStream/forRequest only take a StreamId #419
  • remove Equinox.Core ref to Equinox; remove Equinox.Core ref from Stores #420
  • migrate to IAsyncEnumerable
  • changed maxAttempts and associated throwing behavior from Decider ctor to Transact's attempts argument #310
  • convert internal impl to task; expose same (but retaining Async as the primary interface in order to avoid leaking continuation token mess) #337 #338
  • EventStoreDb: in CosmosStore, BatchingPolicy/QueryMaxItems etc are de-emphasized - perhaps same should be done for the EventStore equivalents? (e.g. EventStore.Context has an overload that requires one) #338
  • remove explicit full FW support (libs move to netstandard2.1/net6.0 #310
  • run [tests and compilation on net6.0 #310
  • rename Equinox.EventStore.Log.Event -> Metric to match CosmosStore #311
  • rename Equinox.SqlStreamStore.Log.Event -> Metric to match CosmosStore #311
  • fixes Equinox.SqlStreamStore.Log.PropertyTag to "ssEvt" #311
  • adds an overload of Transact(interpret : 'state -> Async<'event list>) #314
  • renames Decider.TransactAsync to Transact #314
  • ~replaces XXXStoreCategory.FromMemento stuff with a LoadOption.FromMemento (The system that previously used this has been decommissioned, so we may consider removing it until we have realistic use case justifying its continued existence) #308~ later removed
  • renames AsyncCacheCell -> TaskCell (and AsyncLazy -> LazyTask) #432

V3 breaking changes compared to V2:

  • Equinox.EventStore V2 depends on EventStore.ClientApi V5.x; V3 depends on 20.6 (NOTE: EventStore Grpc and EventStore.Client 20.x require`protobuf-net 4.x whereas EventStore.Client v5.x requires protobuf-net 3.x).
  • Equinox.Cosmos V2 depends on Microsoft.Azure.DocumentDb.Core V2.x whereas V3 ~will depend on Azure.Cosmos (aka V4)~ targets Microsoft.Azure.Cosmos for now, as MS have parked Azure.Cosmos (aka V4) for the foreseeable
  • V2 supports full FW and/or netcore 1.x, with tools on 2.x, V3 tools are netcoreapp3.1
  • V3 Changed default connection mode to Direct to match V3 SDK #281
  • V3 maxItemsInTip is mandatory in CosmosStoreContext ctor #284
  • V2 and V3 both support inhibiting certificate validation. ~Equinox.Cosmos V4 does not currently implement support for ignoring cert validation for e.g. use with Cosmos Simulator. Now Microsoft.Azure.Cosmos V 3.11 adds a custom HTTP factory, this could be implemented)~ #236 resolves this; presumably V4 will offer similar when rebased

bartelink avatar Aug 10 '20 09:08 bartelink