Comments (9)
It's a tough one because once you explain the reasoning behind it, I'll agree that Tranche
fits the bill and I can understand the ambiguity that Partition
brings, but it also goes back to the DDD concept of context, and in the Propulsion context, partition means XYZ.
With that said, I am still torn about it myself, and to be honest I might even consider stealing Tranche
for the same reasons (if not just to sound smarter than I am š )
from propulsion.
Lots of useful input regarding this in the Discord. Working on it in #200 but the key decisions are:
- Tranches stays
- DynamoStore Index Tranches should actually be Partitions
- Propulsion docs will map all the terms early on in a glossary/preamble
from propulsion.
#203 resolves this
- usages of tranche on the consumer and checkpointing side make sense at the consumer end - you could have multiple tranches over the same source partition (see #200)
- but for the DynamoStore Index structure, the ability to split the index is far more correctly termed partition.
Thanks for the nudges @oskardudycz @jeffijoe
@nordfjord So, going forward the event the code will emit from the next RC onward is now Started2
with "partition"
instead of "tranche"
from propulsion.
the ability to split the index is far more correctly termed partition
It's technically also a tranche š .
RC onward is now Started2 with "partition" instead of "tranche"
Given this index format is kind of private maybe it's worth avoiding the breaking change and doing
type Event =
| Started of { [<JsonPropertyName "tranche">] partition: AppendsPartitionId }
I'm not running a DynamoStore in production though and as such don't have skin in the game.
from propulsion.
It's technically also a tranche š .
Technically yes.
Technically the Reader does indeed map partitionId directly to a tranche, but as noted in the docs, there's scope for it to surface multiple tranches from the partition and then use that to enable distributed processing.
Seriously though: for future cases where I build systems that split pools, I will call entitle the divisions/shards "partitions" and identify those by PartitionIds
.
Hm, maybe not the craziest idea - it's definitely ugly and cryptic.
But it's not a breaking change as such (except for you) - as long as you dont deploy an older indexer lambda over a new one
I did ponder adding making tranche and partition option
fields and then taking them with an Option.orElse ... Option.get...
from propulsion.
Actually could transparently map by doing a JsonIsomorphism from { partition: Pid option; tranche: Pid option ; pos }
to { partition: Pid option; pos }
from propulsion.
Making tranche optional would be a breaking change. So Iād just make a breaking change at that point
from propulsion.
I am saying that I'd make read of { tranche = t; pos = p} map to { partition = t; pos = p} internally. New writes would write { partitition = r; pos = p}.
But the only readers that wont be able to cope with stuff where its in a partition field are:
- Lambdas <= rc.2
- your logic
from propulsion.
f93ec00
I could make the updated version write a tranche too, but chose to let it write null
from propulsion.
Related Issues (20)
- Provide guidance for throttling/batching request processing using AsyncBatchingGate HOT 1
- V3 checklist
- Provide for detection of Stuck Projectors in StreamsProjector HOT 5
- Starting DynamoStoreSource with no events does not read
- Some extra C# overloads/defaults HOT 6
- DynamoStore: Indexer should not index any 'system' streams
- Review wrt AsyncGuidance
- feat(Cosmos): Implement Monitor/RunUntilCaughtUp HOT 1
- Change PackageLicense to PackageLicenseExpression HOT 1
- feat(Scheduler): Abend in RequireAll mode where starved
- Isolate/fix 10 concurrent consumers not hang on AzDO
- EventStore: Add logging of approx batch age to EventStoreReader
- Clean up Handler position signatures
- Feature Idea: Equinox MemoryStore Reader HOT 2
- Add comparison docs for FsKafka vs Propulsion.Kafka HOT 2
- Change Feed Retry semantics HOT 1
- Record and log sleep times
- Propulsion.EventStore.Reader vs EventStore's subscriptions HOT 1
- Cosmos: Guidance, examples and/or provide pit of success regarding reading your writes in handlers HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
š Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ššš
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ā¤ļø Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from propulsion.