The repo is versioned based on SemVer 2.0 using the tiny-but-mighty MinVer from @adamralph. See here for more information on how it works.
All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.
The Unreleased
section name is replaced by the expected version of next release. A stable version's log contains all changes between that version and the previous stable version (can duplicate the prereleases logs).
Equinox.CosmosStore
: Group metrics by Container Name #449Equinox.CosmosStore
: Group metrics by Category; split outTip
activity #453Equinox.CosmosStore
: Support Ingesting unfolds #460Equinox.CosmosStore.EventsContext.Sync
: Support syncing of unfolds #460eqx stats
:-O
,-N
flags extract oldest and newest_ts
within a store #459eqx
:-Q
flag omits timestamps from console output logging #459
Equinox.*Store
,Equinox.*Store.Prometheus
: PinEquinox
dependencies to[4.0.0, 5.0.0)
] #448Equinox.CosmosStore
: UpdateSystem.Text.Json
dep to6.0.10
per CVE-2024-43485 #470Equinox.MessageDb
: Up minNpgsql
to v7.0.7
as7.0.0
is on CVE blacklist
eqx stats
:-A
(all stats) is now the default unless you specify >=1 of the individual stats viaESDNO
flags #459
4.0.4 - 2024-05-08
Equinox.Core.Batcher
: Add SettableLinger
#454
4.0.3 - 2024-04-11
Equinox
:LoadOption.AnyCachedValue
,LoadOption.AllowStale
prevent yielding of superseded value where overlapping call in flight #452Equinox
:LoadOption.AnyCachedValue
,LoadOption.AllowStale
prevent incorrectTaskCanceledException
outcome where overlapping call cancelled #452Equinox
:LoadOption.AnyCachedValue
,LoadOption.AllowStale
correct to ensure optimal loading where first flight was in progress #452
4.0.2 - 2024-04-08
Equinox
:LoadOption.AnyCachedValue
,LoadOption.AllowStale
caches and continually yieldsTaskCanceledException
where request cancelled #451
4.0.0 - 2024-03-20
Equinox
:Decider.Transact
,TransactEx
overloads #325Equinox.LoadOption.RequireLeader
: support for requesting a consistent read of a stream #341Equinox.LoadOption.AllowStale
: Read mode that limits reads to a maximum of one retrieval per the defined time window #386Equinox.Category
base class, withDecider
andStream
helpermodule
s #337Equinox.DeciderCore
: C# friendly equivalent ofDecider
(i.e.Func
andTask
) #338Equinox.ISyncContext.StreamEventBytes
: Exposes stored size of events in the stream (initial impl provides it forDynamoStore
only) #326Equinox.Core.Batching
:BatcherDictionary
,BatcherCache
to host concurrentBatchers
#390Equinox.Core.Batching
: Addlimiter: SemaphoreSlim
argument to extend linger phase #427CosmosStore.CosmosStoreConnector
:Connect
,ConnectAsync
#421CosmosStore.Exceptions
: Active patterns to simplify classification in the context of Propulsion handlers #416CosmosStore.Prometheus
: Addrut
tag to enable filtering/grouping by Read vs Write activity as perDynamoStore
#321DynamoStore
/DynamoStore.Prometheus
: Implements the majority of theCosmosStore
functionality viaFSharp.AWS.DynamoDB
#321EventStore
: Revise test rig to target a Docker-hosted cluster #317EventStoreDb
: As perEventStore
module, but using the modernEventStore.Client.Grpc.Streams
client #196MessageDb
: Implements a message-db storage backend #339 with OpenTelemetry tracing and snapshotting support #348 🙏 @nordfjordeqx init --indexUnfolds cosmos
: enables querying uncompressed unfolds (seeshouldCompress
) #434eqx query cosmos
: Queries based on uncompressed unfolds (seeeqx init -U
) #434eqx query -o FILEPATH cosmos
: Allows capture of raw JSON to a file #444eqx dump
:-s
flag is now optionaleqx stats
:-A
flag to request all stats (equivalent to requesting-ESD
) #424
- Change surface APIs that use Tuples and Options to
struct
equivalents. Some due tostruct
changes inFsCodec
#82, and usetask
in hot paths #337 - Change surface APIs that use
'event list
or'event seq
to'event[]
#411 - Raise
FSharp.Core
req to6.0.7
, framework req tonet6.0
#310 #337 #33 #411 - Replace
AsyncSeq
usage withFSharp.Control.TaskSeq
v0.4.0
#361 #391 Equinox
: MoveSerilog
dependency fromDecider
constructor toCategory
/Decider.forStream
#337 #419Equinox
:FsCodec.StreamId
replaces usage ofFsCodec.StreamName
#353 #378 #419Equinox.ResolveOption
: rename toLoadOption
#308 #413Equinox.LoadOption
: RenameAllowStale
toAnyCachedValue
#386Equinox.Decider
: Replace'event list
with'event[]
#411Equinox.Decider
: ReplacemaxAttempts
with a default policy and an optional argument onTransact*
APIs #337Equinox.Decider
: renameDecider.TransactAsync
,Decider.TransactExAsync
toTransact
#314Equinox.Core.AsyncBatchingGate
: renamed toBatching.Batcher
#390Equinox.Core.AsyncCacheCell
: renamed toTaskCell
#433Equinox.Core
: Now a free-standing library that a) does not depend onEquinox
b) is not depended on by the Stores (thoughCosmosStore
inlinesTaskCell
) #420- Stores: Change Event Body types, requiring
FsCodec
v3.0.0
, withEventBody
types switching frombyte[]
toReadOnlyMemory<byte>
and/orJsonElement
see FsCodec#75 #323 - Stores:
*Category.Resolve
: ReplaceResolve(sn, ?ResolveOption, ?requestContext)
with?load = LoadOption
parameter on allTransact
andQuery
methods, andDecider.forStream
/Decider.forRequest
to convey request context #308 - Stores:
*Category
ctor: Add mandatoryname
argument, andName
property #410 - Stores:
*Category
ctor: Changefold
to be aFunc
(no changes to F# code required) #421 - Stores:
*Category
ctor: Changecaching
to be last argument, to reflect that it is applied over the top #410 - Stores:
*Category
ctor: Changecaching
andaccess
to be mandatory, addingNoCaching
andUnoptimized
modes to represent the former defaults #417 CosmosStore
: RequireMicrosoft.Azure.Cosmos
v3.35.4
#310CosmosStore
: Switch to natively usingJsonElement
event bodies #305 🙏 @ylibrachCosmosStore
: Switch to natively usingSystem.Text.Json
for serialization of allMicrosoft.Azure.Cosmos
round-trips #305 🙏 @ylibrachCosmosStore
: Only logbytes
when log level isDebug
#305CosmosStore.AccessStrategy.MultiSnapshot
,Custom
: Changelist
andseq
types toarray
#338CosmosStore.CosmosStoreCategory
: GeneralizecompressUnfolds
toshouldCompress
predicate #436CosmosStore.CosmosStoreCategory.TryHydrateTip
: Generates a Stream State Momento based on externally loadedu
nfold state #434CosmosStore.CosmosStoreCategory.TryLoad
: Renders a'state
based on an Unfold #434CosmosStore.Core.Initialization.initAux
: Replace hard-coded manual 400 RU withmode
parameter #328 🙏 @brihadishCosmosStore.CosmosClientFactory
: Moved to Core #430EventStore
: TargetEventStore.Client
v22.0.0
; renameConnector
->EventStoreConnector
#317Tool
/samples/
: switched to useEquinox.EventStoreDb
#196
Equinox.ISyncContext.CreateMemento
#413- Stores: Removed
Equinox.Core
dependency; everything a store needs is either inlined privately, or lives inEquinox
#420 - Remove explicit
net461
handling; minimum target nownet6.0
/FSharp.Core
v6.0.0
#310 #323 #354 - Remove
Equinox.Core.ICache
(there is/was only one impl, and the interface has changed as part of #386) #389 CosmosStore.CosmosStoreConnector
: RemovedbypassCertificateValidation
(superseded by connection stringIgnoreEndpointCertificate
) #443
EventStore/SqlStreamStore
: renameEquinox.XXXStore.Log.Event
->Metric
to matchCosmosStore
#311SqlStreamStore
: FixMetric
key to bessEvt
(wasesEvt
) #311
3.0.7 - 2022-05-12
eqx dump
/Equinox.Tool
: Add-F
option to opt out of pretty printing unfolds #319eqx dump
/Equinox.Tool
: Show payload statistics #323eqx dump
/Equinox.Tool
: Add-B
option to prevent assuming UTF-8 bodies #323
eqx dump
/Equinox.Tool
: Flip-P
option to opt in to pretty printing for events #313
CosmosStore
: Fixed mis-Indexing of Unfolds when >1 Unfold present #322 #324eqx dump
/Equinox.Tool
: UseSystem.Text.Json
for pretty printing to handlenull
values correctly #319
3.0.6 - 2022-01-19
CosmosStore
: CleanupMicrosoft.Azure.Cosmos
calls #303
- Removed Grafana spec now that canonical is in
dotnet-templates
#304
CosmosStore
: Fix Loading Fallback to archive algorithm bug when all events pruned from Tip #306
3.0.5 - 2021-11-18
- Stores: Expose
.Log.PropertyTag
Literals to enable log filtering #298 Equinox.Tool
: Add support for autoscaling throughput of Cosmos containers and databases #302 🙏 @belcher-rok
MemoryStore
: Fixed incorrectVersion
computation forTransactEx
post-State #296
3.0.4 - 2021-10-15
CosmosStore
: Fixed event retrieval bug forReload
for bothQuery
with cached value and resync cases #295 🙏 @ragiano215
3.0.3 - 2021-09-16
EventStore
: Addcustomize
hook toConnector
#286 (cherry-pick from2.6.0
)
3.0.2 - 2021-09-13
- Fix CI to stop emitting builds with incorrect
AssemblyVersion 1.0.0.0
(updated MinVer to2.5.0
) - Update global.json to use SDK version
5.0.200
3.0.1 - 2021-06-11
CosmosStore.CosmosStoreConnector
: Wrapper forCosmosClientFactory
enabling cleaner consumer code #292
3.0.0 - 2021-05-13
CosmosStore.Prometheus.LogSink
: Aligned signature with Equivalent Propulsion one 🙏 @deviousasti
3.0.0-beta.4 - 2021-04-28
CosmosStore.Prometheus.LogSink
: Generalizedapp
tag to arbitrary custom tags as perCosmos
#287
3.0.0-beta.3 - 2021-04-06
CosmosStore.CosmosStoreClient
: Merge ofCosmosStore.CosmosStoreConnector
andCosmosStoreConnection
#280CosmosStore.Discovery.Endpoint
: Enables parsing of Endpoint Uri from connection string #284 #280
CosmosStore
: Add stream name to "EqxCosmos Tip" log entries
Equinox.Tool
: Fix incorrectAzure.Cosmos.Direct
reference #280
3.0.0-beta.2 - 2021-03-12
CosmosStore.CosmosStoreConnector
: Uses the CosmosDB SDK 3.17CreateAndInitialize
to correctly connect and initialize a CosmosClient for an application #279
CosmosStore
: Default Connection Mode nowDirect
to align with V3 SDK (previous default wasGateway
to match V2 SDK) #281CosmosStore
: TargetMicrosoft.Azure.Cosmos
v3.17.0
#278
CosmosStore
:Dispose()
as required by updated CosmosDB SDKFeedIterator
interface #278
3.0.0-beta.1 - 2021-02-24
Equinox.CosmosStore
: Forked fromEquinox.Cosmos
to add significant new features (see Removed section for deprecation policy info).- Added support for accumulating events in Tip, i.e. being able to operate with a single document per stream until the events (if any) overflow a defined size threshold #251 see also #110
- Added Archive store Fallback for Event loading, enabling streams to be hot-migrated (archived to a secondary/clone, then pruned from the primary/active) between Primary and Archival stores #247, #259
- Added support for pruning events within the Tip document #258 see also #233
- Added Prometheus integration package #266 see also #267
- target
Microsoft.Azure.Cosmos
v3.9.0
(instead ofMicrosoft.Azure.DocumentDB
[.Core
] v 2.x) #144 - Replaced
BatchingPolicy
,RetryPolicy
withTipOptions
,QueryOptions
to better align with Cosmos SDK V4 #253 - Reorganized
QueryRetryPolicy
to handleIAsyncEnumerable
coming in Cosmos SDK V4 #246 🙏 @ylibrach - Remove exceptions from 304/404 paths when reading Tip #257
- Removed warmup call
- Rename
Equinox.Cosmos
DLL and namespace toEquinox.CosmosStore
#243- Rename
Equinox.Cosmos.Store
->Equinox.CosmosStore.Core
Core
sub-namespace- Rename
Equinox.Cosmos.Core.Context
->Equinox.CosmosStore.Core.EventsContext
- Change
Equinox.Cosmos.Core.Connection
->Equinox.CosmosStore.Core.RetryPolicy
- Rename
Equinox.Cosmos.Core.Gateway
->Equinox.CosmosStore.Core.StoreClient
- Rename
- Rename
Equinox.Cosmos.Containers
->Equinox.CosmosStore.CosmosStoreConnection
- Rename
Equinox.Cosmos.Context
->Equinox.CosmosStore.CosmosStoreContext
- Rename
Equinox.Cosmos.Resolver
->Equinox.CosmosStore.CosmosStoreCategory
- Rename
Equinox.Cosmos.Connector
->Equinox.CosmosStore.CosmosStoreClientFactory
- Rename
-
Equinox
: Renametype Stream
toDecider
#272 🙏 @thinkbeforecoding -
Equinox.Core
: SimplifyAsyncCacheCell
#229 -
Equinox.EventStore
: targetEventStore.Client
v20.6
(instead of v5.0.x
) #224 -
All Stores:
FSharp.Control.AsyncSeq
v2.0.23
-
Equinox.Tool
: TargetFSharp.Core
v4.7.1
-
Equinox.Tool
: Add<RollForward>Major</RollForward>
#270 -
All Stores: Standardise naming of top level structure:
<StoreName>Connection
(wraps the relevant*Client
for that store),Context
,Category
#276- Rename
Resolver
-><StoreName>Category
- Rename
Context
-><StoreName>Context
- Rename
-
Update AzDO CI/CD to use
windows-latest
-
Update to
3.1.101
SDK -
Remove
module Commands
convention from examples -
Remove separated
Backend
project from examples (support for architecturally separating all domain logic from Equinox and Domain Service logic from Concrete Stores remains) -
Retarget
netcoreapp2.1
sample apps tonetcoreapp3.1
withSystemTextJson
-
Retarget Todobackend to
aspnetcore
v3.1
-
Revise semantics of Cart Sample Command handling
Equinox.Cosmos
: for now, there is no intention to release a3.x
version; insteadEquinox.CosmosStore
maintains forward compatibility of the2.x
data format but moves toMicrosoft.Azure.Cosmos
. Version2.x
releases (which continue to depend onMicrosoft.Azure.DocumentDb.Core
are published from the https://github.com/jet/equinox/tree/v2 branch
Equinox
: changecreateAttemptsExhaustedException
to allow anyexn
-derivedtype
#275
2.6.0 - 2021-04-28
Cosmos.Discovery.Endpoint
: Extracts Uri for diagnostic purposes #284Cosmos.Prometheus.LogSink
: Generalizedapp
tag to arbitrary custom tags #287
EventStore
: Addcustomize
hook toConnector
#286EventStore
: PinEventStore.Client
to[5.0.11,6)
#286EventStore
: AddedSetAutoCompatibilityMode("auto")
to default wireup #286
2.5.1 - 2021-03-12
ISyncContext.Version
: documented value as being0
-based, rather than whatever a given store happens to use internally (which happens to align with the native version representation inEquinox.Cosmos
) #282MemoryStore
/SqlStreamStore
/EventStore
: aligned implementations to representVersion
in a store-neutral manner per the documentation change #282
Cosmos
/ISyncContext.Version
: fixed erroneous0
value when re-reading with caching but without snapshots inCosmos
store #282
2.5.0 - 2021-02-24
Stream.TransactEx
: extended signature, replacingTransactAsyncEx
. Provides theISyncContext
both before and after thedecide
so pre-flight checks can be performed (asmaster
#263) #277
Cosmos.Prometheus
: Correct namespace (was erroneouslyEquinox.CosmosStore.Prometheus
) #271
2.4.0 - 2020-12-03
MemoryStore
: SerializeCommitted
events to guarantee consumption in eventIndex
order re #265 #269 🙏 @fnipoCosmos
: Fix defaulting forcompressUnfolds
in C# #261
2.3.0 - 2020-11-04
CachingStrategy.FixedTimeSpan
: Support for fixed caching periods #255
Cosmos
: FinalizePrune
API to align withmaster
#258
2.3.0-rc2 - 2020-10-02
Cosmos
: Support Serverless Account Mode ineqx init
; default RU/s to 400 if unspecified #244 🙏 @OmnipotentOwlCosmos
: Added ability to inhibit compression of Unfolds #249 🙏 @ylibrach
Cosmos
: Reorganize Sync log message text, merge with Sync Conflict message #241Cosmos
: Converge Stored Procedure Impl withtip-isa-batch
impl from V3 (minor Request Charges cost reduction) #242
2.3.0-rc1 - 2020-08-31
Cosmos
:Prune
API to delete events from the head of a stream #233
Cosmos
: Tweaked connecting log message
2.2.0 - 2020-08-04
- Add
AsyncBatchingGate
#228
EventStore
: PinEventStore.Client
to[5.0.1,6)
to avoid conflicting changes inEventStore.Client
v20.06
#223
2.1.0 - 2020-05-22
eqx dump -b
, enabling overriding of Max Events per BatchMemoryStore
: AddCommitted
event to enable simulating Change Feeds in integration tests re #205 #221
MemoryStore
: TargetFsCodec
v2.0.0
#219
2.0.2 - 2020-05-10
- Rebuilt version of
2.0.1
with new VM image in order to release complete set of nupkg files vs only releasing MsSql
2.0.1 - 2020-03-25 - unlisted due to incomplete package set
SqlStreamStore.MsSql
: Initial Append when stream empty on MsSql was perpetually failing #209 🙏 @Kimserey
2.0.0 - 2020-02-19
Stream.TransactAsyncEx
, exposing theCore.ISyncContext
at conclusion of the sync operation, affording the ability to examine the post-stateVersion
etc. (This paves the way for exposingSessionToken
at a later point without a breaking change) #194
Stream.QueryEx
to supplyCore.ISyncContext
in lieu of only exposingVersion
(to align withTransactAsyncEx
) #194- Target
FsCodec
v2.0.0
2.0.0-rc9 - 2020-01-31
eqx dump
perf + logging improvementseqx dump -P
turns off JSON pretty printingCosmos
:Tip 200
now logs receivedn
and_etag
valuesCosmos
: Unfolds now write and returnt
(creationDateTimeOffset.UtcNow
)EventStore
: Add missing optional parameters forConnector
:gossipTimeout
andclientConnectionTimeout
#186 🙏 @AndrewRublyov
SqlStreamStore
.*: TargetSqlStreamStore
v1.2.0-beta.8
- Target
FsCodec
v2.0.0-rc3
- Target
Microsoft.SourceLink.GitHub
,Microsoft.NETFramework.ReferenceAssemblies
v1.0.0
- Samples etc target
Argu
v6.0.0
eqx dump
's-J
switch now turns off JSON renderingeqx -C dump
now renders Store.Information
logs- Samples consistently use
module Fold
,(Events.ForX streamId)
, removed(|Stream|)
#174
eqx
: Reinstated writing of missing commandline argument messages to consoleCosmos
: Fixnull
Data handling exception when log level <=Debug
2.0.0-rc8 - 2019-11-14
SqlStreamStore
: Full support for Microsoft Sql Server, MySQL and Postgres using SqlStreamStore #168 🙏 @rajivhostCosmos
: Exposed aConnector.CreateClient
for interop with V2 ChangeFeedProcessor andPropulsion.Cosmos
#171Cosmos
: CodifiedAccessStrategy.RollingState
#178 🙏 @jgardellaCosmos
: Addedeqx stats
command to count streams/docs/events in a CosmosDb Container re #127 #176MemoryStore
: Supports custom Codec logic (can useFsCodec.Box.Codec
as default) #173eqx dump [store]
: Show event data from store #177
- Targeted
Destructurama.FSharp
v1.1.1-dev-00033
dotnet-templates#36 - Targeted
FsCodec
v1.2.1
Cosmos
: renamedConnector
'smaxRetryAttemptsOnThrottledRequests
andmaxRetryWaitTimeInSeconds
to maxRetryAttemptsOnRateLimitedRequestsand
maxRetryWaitTimeOnRateLimitedRequestsand changed latter to
TimeSpan` to match V3 SDK #171AccessStrategy
: consistent naming for Union cases and arguments; rewrote xmldoc #178 🙏 @jgardella
Resolver.ResolveEx
#172
Cosmos
: fixed accidentally swappedcount
andbytes
metrics field values
2.0.0-rc7 - 2019-10-17
.Cosmos
: ability to inhibit server certificate validation viaConnector
'sbypassCertificateValidation
option #170 🙏 @Kelvin4702- store-neutral
ICache
; centralized implementation inEquinox.Core
#161 🙏 @DSilence ResolveOption.AllowStale
, maximizing use of OCC forStream.Transact
, enabling stale reads (in the face of multiple writers) forStream.Query
#167- Ability to (optionally) pass a
'req
when creating aStream
, in order to be able to interop with FsCodec'sCorrelationId
andCausationId
fields (as added in FsCodec#22) #169
- Updated minimum
Microsoft.Azure.DocumentDb[.Core]
dep from2.0.0
to2.2.0
(required for #170) - Updated
FsCodec
to1.0.0
to pick up final name changes #162 - Replaced
TargetId.AggregateIdEmpty
withResolveOption.AssumeEmpty
#163 - Extracted
Equinox.Core
module #164 - Used
Transact
name consistently inAccumulator
(follow-up to #97) #166 - Changed all curried Methods to tupled
.EventStore
now caches written values #167- (internal) Updated
MinVer
to2.0.0
2.0.0-rc6 - 2019-09-07
- EventStore: expose
Index
when decoding events viaIIndexedEvent
#158 AsAt.fsx
: Illustrates usage ofIndexedEvent.Index
and snapshots in.EventStore
vs.Cosmos
#159
- Updated to
FsCodec 1.0.0-rc2
to enableTryDecode
to seeIIndexedEvent
without casting #158
2.0.0-rc5 - 2019-08-30
- Extracted
Equinox.Codec
to external projectFsCodec
, with Json.net support inFsCodec.NewtonsoftJson
#156
2.0.0-rc4 - 2019-08-26
Equinox.Stream.QueryEx
: exposes the stream's version in order to support versioned summary projections #152Equinox.Cosmos.Context
: added overload requiring only (Connection, databaseId, containerId), enablingGateway
andBatchingPolicy
concepts to be skipped over in single-Aggregate microservices where they are less relevant #153 @jakzale
2.0.0-rc3 - 2019-08-20
Cosmos
: AddAccessStrategy.RollingUnfolds
, leveraging_etag
-contingent writes to allow state management without needing to write >=1 event per update #146
- Updated README.md to refer to
propulsion init
andpropulsion project
(formerlyeqx
initAux
andproject
) jet/propulsion#17 Equinox.Cosmos
now usesContainer
in preference toCollection
, in alignment with theMicrosoft.Azure.Cosmos
SDK's standardized naming, and other minor changes, see PR for details #149EQUINOX_COSMOS_COLLECTION
environment variable argument foreqx
tool is nowEQUINOX_COSMOS_CONTAINER
#143eqx project
now uses environment variablesPROPULSION_KAFKA_*
instead ofEQUINOX_*
#143- renamed
Equinox.DeprecatedRawName
->StreamName
#150
eqx project
-ChangeFeedProcessor
and Kafka support - All projection management logic now lives in thePropulsion
libraries #138eqx initAux
- nowpropulsion init
(jet/propulsion#17)[jet/propulsion#17]
2.0.0-rc2 - 2019-07-01
eqx initAux
now sets Partition Key to/id
as recommended for newaux
collections #142
2.0.0-rc1 - 2019-06-14
Equinox.Codec
now usesSystem.Buffers.ArrayPool
to reduce allocations when encoding/decoding union objects using json.net #140Equinox.Codec
now usesRecyclableMemoryStreamManager
to reduce allocations wrtMemoryStream
objects when encoding union objects using json.net #139
TypeShape
dependency inEquinox.Codec
now7.*
(was6.*
)Equinox.Tool
now depends onPropulsion.Kafka
v>= 1.0.1
Equinox.Cosmos.Projection
is only an internal dependency of theEquinox.Tool
Equinox.Cosmos
: Top levelCosmosStore
is now calledContext
for consistency #140Equinox.EventStore
: Top levelGesGateway
is now calledContext
for consistency #140- Builders etc. in
Equinox.Cosmos
,Equinox.EventStore
andEquinox.MemoryStore
no longer have disambiguatingCosmos
,Ges
andMemory
prefixes #140
Equinox.Projection
has moved toPropulsion
Equinox.Projection.Codec
has moved toPropulsion.Kafka
Equinox.Cosmos.Projection
is now maintained in/asPropulsion.Cosmos
(it's still in the repo for now, pending resolution of PR #138 andPropulsion
issue #6)
EqxCosmos Sync: Conflict writing {eventTypes}
message now trims to max 5 items
2.0.0-preview9 - 2019-06-01
Equinox.EventStore.GesGateway.Sync
API including addingactualVersion
toConflictUnknown
Result DU case fordotnet new eqxsync
templateEventStoreSink
impl #133Equinox.EventStore
Stats
for consistency with CosmosDb equivalent #133
- Targeted
Jet.ConfluentKafka.FSharp
v1.0.0-rc12
ineqx
tool Equinox.Tool
: SwitchedIndexingMode
toAutomatic=false,IndexingMode=None
, removeDefaultTimeToLive
fromaux
collections #134Equinox.Cosmos.Projection
: Tidyassign
andinit
, signatures; provided mechanism to inhibit logging #137
Equinox.Projection
logic - Projection management logic now lives in thePropulsion
libraries (StreamItem
is the sole remaining item in theEquinox.Projection
library).
Equinox.EventStore
: FixedPreferSlave
bug forDiscovery.Uri
mode #135Equinox.EventStore
: FixedPreferSlave
andRandom
modes for gossip-basedDiscovery
modes #135 @asetda
2.0.0-preview8 - 2019-05-16
- Replace flat single-item
Equinox.Projection.Codec.RenderedEvent
withRenderedSpan
to match incoming Projection enhancements #131 Equinox.Projection
performance and interface extraction work viadotnet new eqxsync
template #132
2.0.0-preview7 - 2019-05-14
Equinox.Projection
performance work based ondotnet new eqxsync
template #130- Reorganized
Equinox.Projection
to be a single-file concern #129
2.0.0-preview6 - 2019-05-06
- Added
Equinox.Projection
state management:StreamState
/StreamStates
#128 - Added
Equinox.Projection
pipeline:Progress
/Scheduling
/Projector
/Ingestion/
Ingester` #128 - Added
Equinox.Cosmos.Store.Log.Metrics.dump
as a placeholder stats mechanism #126 - Added
Equinox.Projection.StreamItem
as canonical representation of a raw item from a feed in Projections #125
- [re]Introduced
Equinox.Projection.Codec
to house Codec-specific aspects of the shared projection presently inEquinox.Projection
#125 ChangeFeedObserver
: Madeassign
andrevoke
extensibility points in builderasync
#124ChangeFeedObserver
: RenamedChangeFeedObserver
'sprocessBatch
toingest
and documented role ofIChangeFeedObserverContext.Checkpoint
in more detail #124- Targeted
Jet.ConfluentKafka.FSharp
v1.0.0-rc6
ineqx
tool
2.0.0-preview5 - 2019-04-12
- exposed
assign
andrevoke
extensibility points inChangeFeedObserver
builder #119
- switched ChangeFeedProcessor checkpointing to be explicit (was automatic) based on requirements of
equinox-sync
template PR #19 #119
- Added
partitionRangeId
context toChangeFeedObserver
logging #119
2.0.0-preview4 - 2019-04-03
- Added database-level RU-provisioning support (i.e.,
eqx init
's-D
switch) #120 - Implemented ability to amend RU allocations where database/collection already exists #112
- Targeted
Jet.ConfluentKafka.FSharp
v1.0.0-rc2
ineqx
tool - Removed special casing of
Tip
batches fromEquinox.Cosmos.Projection
in preparation for transparent integration of #110 without necessitating updating of projectors and related systems #119
2.0.0-preview3 - 2019-03-27
- Reading
null
from Equinox.Cosmos and then writing that to Kafka yielded invalid json #18
2.0.0-preview2 - 2019-03-23
Cosmos.Projection.ChangeFeedProcessor
: Support management of anaux
collection in account other than the one being read from by addingauxAccountKey
param #115- Support ETL scenarios by enabling the event creation
Timestamp
to be [read and] written by supplying it inEquinox.Codec.IEvent
#116
- Rename
Equinox.Projection.Codec
NuGet toEquinox.Projection
(no code changes) - Renamespace and separate
Equinox.Codec
toEquinox.Codec.NewtonsoftJson
andEquinox.Codec.Custom
(in preparation for #113) HT @szer - Uses MinVer 1.0.0 [internally] to compute package versions (was
rc.1
,beta.4
along the way)
- Remove
maxEventsPerSlice
/maxTipEvents
pending #109
2.0.0-preview1 - 2019-03-07
- Provide capability to access
Metadata
andEventNumber
/Index
re #102
- Make
caching
non-optional inCosmosStreamResolver
; addNoCaching
cache mode forEquinox.Cosmos
#104 @jakzale - Reorder
caching
andaccess
inGesStreamResolver
to matchCosmosStreamResolver
#107 - Renamespaced and separated
Equinox.Codec
APIs to separateNewtonsoft.Json
and customencode
/tryDecode
approaches #102 (in preparation for #79)
- Extract
Equinox.Projection.Kafka
and its integration tests to becomeJet.ConfluentKafka.FSharp
v1.0.0-preview1
; retargetedEquinox.Tool
to use same.
- Add Writing empty event list guard for
Equinox.Cosmos
#105 - Disable support for non-record Event payloads in
Equinox.Codec
#103
1.1.0-preview2 - 2019-02-20
Equinox.Projection.Kafka
consumer metrics emission, see #94 @michaelliao5- Add
samples/Tutorial
with.fsx
files (see also related docs) - Overloads to reduce need to use
CosmosCollections
@jakzale
- Target
EventStore.Client 5.*
to avail of bugfixes and single client codebase. Interoperable with4.*
servers - Updated to
"Microsoft.SourceLink.GitHub" Version="1.0.0-beta2-18618-05"
- Replace stateful
Context
API as primary Handler API withTransact
; CompatibleAccumulator
remains to facilitate porting #97 @eiriktsarpalis - Replace
Handler
withStream
- Replace
Equinox.Cosmos.Eqx*
withCosmos*
@jakzale - Replace
Equinox.MemoryStore.Mem*
withMemory*
- Moved internal
Stream
helpers fromEquinox
to instead be inlined into Store impls #97 @eiriktsarpalis - De-emphasized
Handler
in sample aggregates @jakzale
1.1.0-preview1 - 2019-02-08
Equinox.Cosmos
projection facilities, see #87
1.0.4 - 2019-02-08
- Rename
Equinox.CatId
toEquinox.AggregateId
(HT @lfr for prompting the change) - Make
Newtonsoft.Json
dependency consistently>= 11.0.2
- Make
Microsoft.Azure.DocumentDB
dependency consistently>= 2.0.0
(was temporarily 1.x onnet461
to fit in with constraints of a downstream) - Refactor
Equinox.Cosmos
wiring to exposeCosmosConnector.ConnectionPolicy
- Use
FSharp.UMX
from @alfonsogarciacaro and @eiriktsarpalis in tests/samples #89 (HT @chinwobble in #83 for prompting the change)
- Improve CosmosDb connection string parse error message
- change from
licenseUrl
tolicense
in.nupkg
- Make
xUnit
dependency consistently2.4.0
1.0.3 - 2019-01-19
(For information pertaining to earlier releases, see release notes in https://github.com/jet/equinox/releases and/or can someone please add it!)