Repository navigation
Ingest the oplog through hashed connectors - #2869
Conversation
Hello delthas,My role is to assist you with the merge of this Available options
Available commands
Status report is not available. |
Codecov Report❌ Patch coverage is
Additional details and impacted files
... and 6 files with indirect coverage changes
@@ Coverage Diff @@
## development/9.6 #2869 +/- ##
===================================================
+ Coverage 81.77% 81.94% +0.17%
===================================================
Files 216 216
Lines 45247 45313 +66
===================================================
+ Hits 37000 37134 +134
+ Misses 8247 8179 -68
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
|
f512379 to
d4b2816
Compare
b02ea60 to
aea4f4f
Compare
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
|
6a15600 to
d555261
Compare
3999fe6 to
7712a12
Compare
7712a12 to
342a7bb
Compare
4a6f28c to
ac2d6b0
Compare
ac2d6b0 to
c71bec8
Compare
c71bec8 to
ab34f51
Compare
ffb80e6 to
8d75933
Compare
8d75933 to
4a376b6
Compare
DarkIsDude
left a comment
There was a problem hiding this comment.
LGTM, check how to manage older version of Mongo but fine otherwise
4a376b6 to
34447f0
Compare
34447f0 to
6567b0a
Compare
ac6195f to
c519982
Compare
Setting `ingestion` to `hashed` (EXTENSIONS_OPLOG_POPULATOR_INGESTION) makes the oplog populator ingest the whole oplog through N hashed connectors (numberOfConnectors), migrating any existing connector to them. zenko-operator opts in through a ZenkoVersion feature flag. `ingestion` defaults to `perBucket`, which keeps the previous per-bucket connectors; switching back deletes the hashed connectors and loses events in between. - Requires Kafka Connect >= 3.5 (offsets and stop APIs): migrations wait until it is rolled out. - Setup only schedules the reconciliation, so that probes answer while a migration runs. In hashed ingestion, readiness no longer requires the metastore change stream, which it does not use. - Without bucket changes to react to, hashed connectors are reconciled every 15s by default instead of every second. - Connectors start at MongoDB's cluster time, not the pod's clock. Issue: BB-906
|
/approve |
|
I have successfully merged the changeset of this pull request
The following branches have NOT changed:
This pull request did not target the following hotfix branch(es) so they
Please check the status of the associated issue BB-906. Goodbye delthas. The following options are set: approve |
Hand-written description (took me a while). I tried to do much more hand-written and rountrip work with AI. Let me know if it helps :)
This implements the oplog scaling design for the oplog populator (see https://github.com/scality/citadel/pull/375 for details).
The issue with the previous design was that:
Instead, we listen to all buckets all the time, splitting load across N connectors, with a simple
k = hash(bucket) % N.This is implemented as an opt-in ingestion mode: zenko-operator enables it through a ZenkoVersion feature flag (https://github.com/scality/zenko-operator/pull/656), so each Zenko release decides when to switch. The goal is to drop the previous mode entirely in the short term. (That is why I chose not to have an abstraction over possible modes etc. The goal is to have only one mode left, soon, and delete legacy code.)
This is part of a stack of 8 PRs: the lower ones add the building blocks and the manager, this one wires it in, #2888 adds monitoring, and #2889 fixes existing oplog populator alerts. Review bottom-up.
The general idea is:
hashed, opt-inThe connector name is:
Nandkhashsuch that we can easily spot outdated pipelinesIssue: BB-906