feat: add client telemetry support - #3770
Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: xiaofan-luan The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
ff66688 to
5b05f65
Compare
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #3770 +/- ##
==========================================
- Coverage 94.22% 94.16% -0.07%
==========================================
Files 77 78 +1
Lines 16204 17809 +1605
==========================================
+ Hits 15268 16769 +1501
- Misses 936 1040 +104 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
5b05f65 to
6f60fe4
Compare
|
Tick the box to add this pull request to the merge queue (same as
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6f60fe4601
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
b3b64a8 to
e3281fe
Compare
pymilvus-bot
left a comment
There was a problem hiding this comment.
Requesting changes for the telemetry correctness and lifecycle issues called out inline. The most serious issue is that persistent configs are passed through the one-time command watermark, so a newly relevant config can be acknowledged and hashed without ever being applied. Iterator-internal RPCs and sync Future parsing also violate the stated one-final-outcome contract, and sync shutdown can return while its worker is still running. These were verified against the current head with focused reproductions.
| if timestamp >= max_timestamp | ||
| } | ||
| with self._state_lock: | ||
| if has_persistent: |
There was a problem hiding this comment.
[P2] Clear config_hash when the server's persistent set becomes empty. After DeleteClientCommand removes the last config, the heartbeat returns no persistent commands, has_persistent is false, and this leaves the old hash in place. Every later heartbeat then disagrees with the server's empty hash and repeats the config lookup indefinitely. Commit calculate_config_hash(commands) for every accepted batch, including "" for an empty set.
There was a problem hiding this comment.
Thanks. We will address this ambiguity on the server side by returning an authoritative effective config hash (or an explicit empty-snapshot marker), so the client can distinguish a matching non-empty config set from an authoritative empty config set. This protocol follow-up is independent of the client rollout order. In this PR, we intentionally preserve the last accepted hash on an empty command batch to avoid hash oscillation and repeated config reapplication.
e3281fe to
c874b2e
Compare
Signed-off-by: xiaofanluan <xiaofan.luan@zilliz.com>
c874b2e to
0c846be
Compare
Summary
Related work
Verification