Skip to content

Commit

Permalink
Sync with 2.1.0 release on v2 branch
Browse files Browse the repository at this point in the history
  • Loading branch information
bartelink committed May 22, 2020
1 parent 34ea4bb commit b8803a9
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 29 deletions.
22 changes: 16 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ The `Unreleased` section name is replaced by the expected version of next releas
### Added

- now targets `Microsoft.Azure.Cosmos` v `3.9.0` (instead of `Microsoft.Azure.DocumentDB`[`.Core`] v 2.x) [#144](https://github.com/jet/equinox/pull/144)
- Add `eqx dump -b`, enabling overriding of Max Events per Batch
- `MemoryStore`: Add `Committed` event to enable simulating Change Feeds in integration tests re [#205](https://github.com/jet/equinox/issues/205) [#221](https://github.com/jet/equinox/pull/221)

### Changed

Expand All @@ -23,19 +21,30 @@ The `Unreleased` section name is replaced by the expected version of next releas
- Updated AzDO CI/CD to use `windows-latest`
- Remove `module Commands` convention from in examples
- Revise semantics of Cart Sample Command handling
- `MemoryStore`: Target `FsCodec` v `2.0.0` (was `FsCodec.NewtonsoftJson 2.0.0`) [#219](https://github.com/jet/equinox/pull/219)
- `Cosmos:` Removed [warmup call](https://github.com/Azure/azure-cosmos-dotnet-v3/issues/1436)

### Removed
### Fixed

<a name="2.1.0"></a>
## [2.1.0] - 2020-05-22

### Added

- Add `eqx dump -b`, enabling overriding of Max Events per Batch
- `MemoryStore`: Add `Committed` event to enable simulating Change Feeds in integration tests re [#205](https://github.com/jet/equinox/issues/205) [#221](https://github.com/jet/equinox/pull/221)

### Changed

- `MemoryStore`: Target `FsCodec` v `2.0.0` [#219](https://github.com/jet/equinox/pull/219)

<a name="2.0.2"></a>
## [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_
- _Rebuilt version of `2.0.1` with new VM image in order to release complete set of nupkg files vs only releasing MsSql_

<a name="2.0.1"></a>
## [2.0.1] - 2020-03-25 - UNLISTED DUE TO INCOMPLETE PACKAGE SET
## [2.0.1] - 2020-03-25 - unlisted due to incomplete package set

### Fixed

Expand Down Expand Up @@ -395,7 +404,8 @@ The `Unreleased` section name is replaced by the expected version of next releas

(For information pertaining to earlier releases, see release notes in https://github.com/jet/equinox/releases and/or can someone please add it!)

[Unreleased]: https://github.com/jet/equinox/compare/2.0.2...HEAD
[Unreleased]: https://github.com/jet/equinox/compare/2.1.0...HEAD
[2.1.0]: https://github.com/jet/equinox/compare/2.0.2...2.1.0
[2.0.2]: https://github.com/jet/equinox/compare/2.0.1...2.0.2
[2.0.1]: https://github.com/jet/equinox/compare/2.0.0...2.0.1
[2.0.0]: https://github.com/jet/equinox/compare/2.0.0-rc9...2.0.0
Expand Down
33 changes: 15 additions & 18 deletions DOCUMENTATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ event-sourced system, offering tailored components that interact with a
specific **Consistent Event Store**, as laid out here in this
[C4](https://c4model.com) System Context Diagram:

![Equinox c4model.com Context Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/context.puml&fmt=svg)
![Equinox c4model.com Context Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/context.puml&fmt=svg)

:point_up: Propulsion elements (which we consider External to Equinox) support
the building of complementary facilities as part of an overall Application:
Expand All @@ -75,7 +75,7 @@ the building of complementary facilities as part of an overall Application:

The Systems and Components involved break out roughly like this:

![Equinox c4model.com Container Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/container.puml&fmt=svg)
![Equinox c4model.com Container Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/container.puml&fmt=svg)

# Equinox.MemoryStore

Expand Down Expand Up @@ -115,17 +115,14 @@ then run the suite with the right store for the context - e.g.:
This diagram shows the high level building blocks used in constructing an
integration test using `Equinox.MemoryStore`

![Equinox.MemoryStore c4model.com Container Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/MemoryStoreContainer.puml)

**NOTE: There's one critical lie to declare:
[#205](https://github.com/jet/equinox/issues/205) is not yet implemented**
![Equinox.MemoryStore c4model.com Container Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/MemoryStoreContainer.puml)

## Component Diagram for `Equinox.MemoryStore`

This breaks down the components involved internally with the layout above in
terms of the actual structures involved:

![Equinox.MemoryStore c4model.com Component Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/MemoryStore.puml?fmt=svg)
![Equinox.MemoryStore c4model.com Component Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/MemoryStore.puml?fmt=svg)

# Equinox.EventStore / Equinox.SqlStreamStore

Expand All @@ -135,15 +132,15 @@ to treat them as equivalent for the purposes of this overview.

## Component Diagram for Equinox.EventStore / Equinox.SqlStreamStore

![Equinox.EventStore/SqlStreamStore c4model.com Component Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/EventStore.puml)
![Equinox.EventStore/SqlStreamStore c4model.com Component Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/EventStore.puml)

## Code Diagrams for Equinox.EventStore / Equinox.SqlStreamStore

This diagram walks through the basic sequence of operations, where:
- this node has not yet read this stream (i.e. there's nothing in the Cache)
- when we do read it, it's empty (no events):

![Equinox.EventStore/SqlStreamStore c4model.com Code - first Time](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/EventStoreCode.puml&idx=0&fmt=svg)
![Equinox.EventStore/SqlStreamStore c4model.com Code - first Time](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/EventStoreCode.puml&idx=0&fmt=svg)

Next, we extend the scenario to show:
- how the State held in the Cache influences the EventStore/SqlStreamStore APIs
Expand All @@ -155,35 +152,35 @@ Next, we extend the scenario to show:
- when there's conflict and we're giving up (throw
`MaxAttemptsExceededException`; no need to read the conflicting events)

![Equinox.EventStore/SqlStreamStore c4model.com Code - with cache, snapshotting](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/EventStoreCode.puml&idx=1&fmt=svg)
![Equinox.EventStore/SqlStreamStore c4model.com Code - with cache, snapshotting](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/EventStoreCode.puml&idx=1&fmt=svg)

After the write, we circle back to illustrate the effect of the caching when we
have correct state

![Equinox.EventStore/SqlStreamStore c4model.com Code - next time; same process, i.e. cached](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/EventStoreCode.puml&idx=2&fmt=svg)
![Equinox.EventStore/SqlStreamStore c4model.com Code - next time; same process, i.e. cached](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/EventStoreCode.puml&idx=2&fmt=svg)

In other processes (when a cache is not fully in sync), the sequence runs
slightly differently:

![Equinox.EventStore/SqlStreamStore c4model.com Code - another process; using snapshotting](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/EventStoreCode.puml&idx=3&fmt=svg)
![Equinox.EventStore/SqlStreamStore c4model.com Code - another process; using snapshotting](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/EventStoreCode.puml&idx=3&fmt=svg)

# Equinox.Cosmos

## Container Diagram for `Equinox.Cosmos`

![Equinox.Cosmos c4model.com Container Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/CosmosContainer.puml?fmt=svg)
![Equinox.Cosmos c4model.com Container Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/CosmosContainer.puml?fmt=svg)

## Component Diagram for `Equinox.Cosmos`

![Equinox.Cosmos c4model.com Component Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/CosmosComponent.puml?fmt=svg)
![Equinox.Cosmos c4model.com Component Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/CosmosComponent.puml?fmt=svg)

## Code Diagrams for `Equinox.Cosmos`

This diagram walks through the basic sequence of operations, where:
- this node has not yet read this stream (i.e. there's nothing in the Cache)
- when we do read it, the Read call returns `404` (with a charge of `1 RU`)

![Equinox.Cosmos c4model.com Code - first Time](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/CosmosCode.puml&idx=0&fmt=svg)
![Equinox.Cosmos c4model.com Code - first Time](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/CosmosCode.puml&idx=0&fmt=svg)

Next, we extend the scenario to show:
- how state held in the Cache influences the Cosmos APIs used
Expand All @@ -197,12 +194,12 @@ Next, we extend the scenario to show:
- when there's conflict and we're giving up (throw
`MaxAttemptsExceededException`)

![Equinox.Cosmos c4model.com Code - with cache, snapshotting](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/CosmosCode.puml&idx=1&fmt=svg)
![Equinox.Cosmos c4model.com Code - with cache, snapshotting](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/CosmosCode.puml&idx=1&fmt=svg)

After the write, we circle back to illustrate the effect of the caching when we
have correct state (we get a `304 Not Mofified` and pay only `1 RU`)

![Equinox.Cosmos c4model.com Code - next time; same process, i.e. cached](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/CosmosCode.puml&idx=2&fmt=svg)
![Equinox.Cosmos c4model.com Code - next time; same process, i.e. cached](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/CosmosCode.puml&idx=2&fmt=svg)

In other processes (when a cache is not fully in sync), the sequence runs
slightly differently:
Expand All @@ -211,7 +208,7 @@ slightly differently:
suitable snapshot that passes the `isOrigin` predicate is found within the
_Tip_

![Equinox.Cosmos c4model.com Code - another process; using snapshotting](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/CosmosCode.puml&idx=3&fmt=svg)
![Equinox.Cosmos c4model.com Code - another process; using snapshotting](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/CosmosCode.puml&idx=3&fmt=svg)

# Glossary

Expand Down
14 changes: 14 additions & 0 deletions Equinox.sln
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,19 @@ Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Equinox.SqlStreamStore.Post
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Equinox.Core", "src\Equinox.Core\Equinox.Core.fsproj", "{3021659A-5CA4-4E06-AF00-2457ED3F105B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "diagrams", "diagrams", "{596FFDD5-8B3C-4D5E-865A-962AFBB210FF}"
ProjectSection(SolutionItems) = preProject
diagrams\MemoryStore.puml = diagrams\MemoryStore.puml
diagrams\context.puml = diagrams\context.puml
diagrams\container.puml = diagrams\container.puml
diagrams\MemoryStoreContainer.puml = diagrams\MemoryStoreContainer.puml
diagrams\EventStoreCode.puml = diagrams\EventStoreCode.puml
diagrams\EventStore.puml = diagrams\EventStore.puml
diagrams\CosmosContainer.puml = diagrams\CosmosContainer.puml
diagrams\CosmosComponent.puml = diagrams\CosmosComponent.puml
diagrams\CosmosCode.puml = diagrams\CosmosCode.puml
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -197,6 +210,7 @@ Global
{EC2EC658-3D85-44F3-AD2F-52AFCAFF8871} = {8CDE1CC3-8619-44DE-8B4D-4102CE476C35}
{8CDE1CC3-8619-44DE-8B4D-4102CE476C35} = {8F3EB30C-8BA3-4CC0-8361-0EA47C19ABB9}
{D82AAB2E-7264-421A-A893-63A37E5F08B6} = {8F3EB30C-8BA3-4CC0-8361-0EA47C19ABB9}
{596FFDD5-8B3C-4D5E-865A-962AFBB210FF} = {7E3A7020-AE75-4513-B81A-57FD3E0D0D84}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {177E1E7B-E275-4FC6-AE3C-2C651ECCF71E}
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ Equinox and Propulsion have a [Yin and yang](https://en.wikipedia.org/wiki/Yin_a

Equinox focuses on the **Consistent Processing** element of building an event-sourced system, offering tailored components that interact with a specific **Consistent Event Store**, as laid out here in this [C4](https://c4model.com) System Context Diagram:

![Equinox c4model.com Context Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/context.puml&fmt=svg)
![Equinox c4model.com Context Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/context.puml&fmt=svg)

:point_up: Propulsion elements (which we consider External to Equinox) support the building of complementary facilities as part of an overall Application:

Expand All @@ -126,9 +126,9 @@ Equinox focuses on the **Consistent Processing** element of building an event-so

The relevant pieces of the above break down as follows, when we emphasize the [Containers](https://c4model.com) aspects relevant to Equinox:

![Equinox c4model.com Container Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/diag/diagrams/container.puml&fmt=svg)
![Equinox c4model.com Container Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/jet/equinox/master/diagrams/container.puml&fmt=svg)

**[See Overview section in `DOCUMENTATION`.md for further drill down](https://github.com/jet/equinox/blob/diag/DOCUMENTATION.md#overview)**
**[See Overview section in `DOCUMENTATION`.md for further drill down](https://github.com/jet/equinox/blob/master/DOCUMENTATION.md#overview)**

## TEMPLATES

Expand Down
2 changes: 1 addition & 1 deletion diagrams/MemoryStore.puml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ ingesters -U-> aggregate : run transactions against
ingesters .R.> caches : maintain\nviews\nin
ingesters <.R. inputs : feed into

reactors <-L- IObservable : can subscribe to\n(TODO)
reactors <-L- IObservable : can subscribe to
reactors <-U-> aggregate2 : run transactions against
reactors .U.> caches : maintain\nviews\nin

Expand Down
2 changes: 1 addition & 1 deletion diagrams/MemoryStoreContainer.puml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ ingesters -> aggregate1 : run transactions against
ingesters -U-> caches : maintain\nviews\nin
ingesters <.U. inputs : feed into

reactors <- eqxms : can subscribe to\n(TODO)
reactors <- eqxms : can subscribe to
reactors <-D-> aggregate2 : run transactions against
reactors -U-> caches : drive reactions by writing into
ingesters -[hidden]R--> reactors
Expand Down

0 comments on commit b8803a9

Please sign in to comment.