feat(cogs): Create inventory-tracker crate for storage oplog - #588
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #588 +/- ##
==========================================
+ Coverage 88.00% 88.16% +0.15%
==========================================
Files 96 101 +5
Lines 15961 16533 +572
==========================================
+ Hits 14047 14576 +529
- Misses 1914 1957 +43
☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
jan-auer
left a comment
There was a problem hiding this comment.
Initial review. Some of the below comments can be left for follow-up to get a first version in, as long as they don't change the overall concept and can be fixed in isolation. Particularly, shutdown is a larger topic.
01463b9 to
71877b3
Compare
jan-auer
left a comment
There was a problem hiding this comment.
Looks good. See the open comments before merge, please.
Either in this PR or in a follow up, I'd suggest to add metrics, especially for errors.
d180831 to
6373531
Compare
jan-auer
left a comment
There was a problem hiding this comment.
Thanks! Approving for merge, provided the comments below are solved
6373531 to
1cec3c4
Compare
1cec3c4 to
c26d574
Compare
…on (#590) Ref FS-210 Depends on #588 - `ChangeStream` trait that `Backend` impls will use to record write/update/delete operations. - `CostTrackerStream` impl and config to publish change stream events to Kafka through `inventory-tracker` - `NoopStream` stub impl is used by default While `ChangeStream` is abstract and we can implement a `MultiStream` wrapper that dispatches changes to multiple sinks, currently the abstraction is only in the code and not in the config. `CostTrackerStream` is configured through `CostTrackerConfig` (service-wide, Kafka details, used in later PR) and `CostTrackerStreamConfig` (on each `Backend` impl, added here). It's assumed that other `ChangeStream` implementations will similarly be named directly in config. Backends are not instrumented yet and `objectstore-server` doesn't expose configuring Kafka yet.
* main: release: 0.2.4 build(python): Upgrade cryptography to 50.0.0 (#605) build(deps): bump setuptools from 80.9.0 to 83.0.0 (#604) feat(config): resolve ${file:...} and ${VAR} references in config (#599) feat(cogs): publish backend change streams to Kafka (#597) feat(cogs): report backend changes to a change stream (#595) feat(cogs): ChangeStream trait, preparation for backend instrumentation (#590) feat(cogs): Create inventory-tracker crate for storage oplog (#588) feat(python-client): Deprecate `propagate_traces` (#603) feat(python-client): Send a default User-Agent header (#601)
Ref FS-210
Related to getsentry/sentry-kafka-schemas#497
Creates the
inventory-trackercrate in our project that we will use to emit Kafka messages for a change stream that we will turn into a COGS pipeline.This crate isn't Objectstore-specific at all. If/when another service wants to use it, we can move it to a separate repository and set up a release process for it. I just couldn't be bothered if nobody's asking for it.