feat(go): add stream/topic purge API with BDD tests and fix server purge bug - #3608
feat(go): add stream/topic purge API with BDD tests and fix server purge bug#3608chengxilo wants to merge 11 commits into
Conversation
|
Thanks for the PR. It is labeled Slash commands (own line, regular comment) move it around the queue:
See CONTRIBUTING.md for details. |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #3608 +/- ##
============================================
- Coverage 82.84% 82.68% -0.17%
+ Complexity 1299 1291 -8
============================================
Files 1199 1199
Lines 161885 160224 -1661
Branches 131360 129822 -1538
============================================
- Hits 134120 132475 -1645
- Misses 24225 24234 +9
+ Partials 3540 3515 -25
🚀 New features to boost your workflow:
|
|
@chengxilo i'll check this during the weekend. could you please rebase? |
|
I've checked whether there is potential concurrency issue due to interleaving of flush + purge commands as this is what I've reckon from the changes could potentially be an issue and did not find any problems with that. Let's wait for @hubcio review and we can merge it. |
8bc60d8 to
f5d74d9
Compare
|
/ready |
|
nothing has been changed, just because I rebased onto master locally so it was forced pushed() I shouldn't do that tho. |
9b5e79c to
a604653
Compare
|
@chengxilo could you please rebase again? i will review this today |
done. Currently, we get the pre-purge messages back for roughly > a second. I'm not sure if we should justify it in BDD test or fix it. Previously for the non-VSR it was fixed. But not for the VSR enabled one. (since according to the comments, it was intended) |
Which issue does this PR address?
Relates to #2148
Rationale
Go SDK doesn't have the purge topic/ purge stream API, so this PR implement them. To test it, I added an new BDD test scenario, and implemented both Go and Rust BDD tests.
What changed?
The Go SDK was missing PurgeStream and PurgeTopic methods. Added them along with a shared BDD scenario (stream_topic_purge.feature) and implementations in both Go and Rust.
While testing, discovered that purge_all_segments only cleared on-disk segments but left stale messages in the journal and in-flight tiers. Polling after purge would return messages that should have been deleted. Fixed by calling
journal.reset()andclear_in_flight()during partition re-initialization. I am not famliar with Rust server code so during the code review this part worth more attentionLocal Execution
AI Usage