Skip to content

fix(subscriptions): preserve behavior over gRPC - #488

Merged
yordis merged 1 commit into
masterfrom
yordis/chore-retire-clientapi-persistent
Sep 13, 2026
Merged

yordis merged 1 commit into
masterfrom
yordis/chore-retire-clientapi-persistent

Conversation

@yordis

@yordis yordis commented Sep 12, 2026 •

Copy link
Copy Markdown
Member
  • Keeps persistent-subscription behavior protected while the unsupported client transport retires.
  • Prevents transport cleanup from weakening delivery, retry, recovery, and high-revision guarantees.

@yordis
yordis requested a review from a team as a code owner September 12, 2026 23:21
@cursor

cursor Bot commented Sep 12, 2026 •

Copy link
Copy Markdown

PR Summary

Medium Risk
Touches persistent-subscription connection lifecycle on disconnect, which affects delivery and redelivery; large test migration reduces legacy ClientAPI coverage but adds gRPC parity tests.

Overview
Removes the legacy ClientAPI persistent-subscription integration suite and the dedicated core-clientapi-persistent CI shard, shifting coverage to gRPC tests under PersistentSubscriptionTests (create/delete/read, $all, high revisions above 2B, link resolution, retries, and reconnect behavior).

Runtime change: when a gRPC persistent-subscription read stream is disposed, unsubscribe is sent with ConnectionClosed so PersistentSubscriptionService only drops the client connection instead of tearing down the whole subscription—matching expected recovery when clients disconnect without explicit unsubscribe.

Adds GrpcSpecificationWithExistingRecords to seed the transaction log before starting a mini node for revision-heavy scenarios.

Reviewed by Cursor Bugbot for commit 75d3d28. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitai Bot commented Sep 12, 2026 •

Copy link
Copy Markdown

Review Change StackReview Change Stack

Warning

Review limit reached

Next included review available in 15 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: bab8856e-3fce-4c5c-9609-b783983c33d5

📥 Commits

Reviewing files that changed from the base of the PR and between 051c3cc and 75d3d28.

📒 Files selected for processing (8)
  • src/EventStore.Core.Tests/Services/Transport/Grpc/PersistentSubscriptionTests/CreateTests.cs
  • src/EventStore.Core.Tests/Services/Transport/Grpc/PersistentSubscriptionTests/DeleteTests.cs
  • src/EventStore.Core.Tests/Services/Transport/Grpc/PersistentSubscriptionTests/PersistentSubscriptionWithEventNumbersGreaterThan2BillionTests.cs
  • src/EventStore.Core.Tests/Services/Transport/Grpc/PersistentSubscriptionTests/ReadTests.cs
  • src/EventStore.Core.Tests/Services/Transport/Grpc/StreamsTests/GrpcSpecificationWithExistingRecords.cs
  • src/EventStore.Core/Messages/ClientMessage.cs
  • src/EventStore.Core/Services/PersistentSubscription/PersistentSubscriptionService.cs
  • src/EventStore.Core/Services/Transport/Grpc/PersistentSubscriptions.Read.cs

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: f6def5e3-375d-4049-a951-4ba5540c1157

📥 Commits

Reviewing files that changed from the base of the PR and between f89ea9f and 718006d.

📒 Files selected for processing (10)
  • .github/workflows/build-container-ubuntu-lts.yml
  • scripts/test.sh
  • src/EventStore.Core.Tests/ClientAPI/ExpectedVersion64Bit/persistent_subscription_with_event_numbers_greater_than_2_billion.cs
  • src/EventStore.Core.Tests/ClientAPI/connecting_to_a_persistent_subscription.cs
  • src/EventStore.Core.Tests/ClientAPI/connecting_to_a_persistent_subscription_async.cs
  • src/EventStore.Core.Tests/ClientAPI/create_persistent_subscription.cs
  • src/EventStore.Core.Tests/ClientAPI/deleting_persistent_subscription.cs
  • src/EventStore.Core.Tests/ClientAPI/persistent_connect_integration_tests.cs
  • src/EventStore.Core.Tests/ClientAPI/read_from_persistent_subscription_with_link_resolution_when_stream_name_contains_at_symbol.cs
  • src/EventStore.Core.Tests/ClientAPI/update_persistent_subscription.cs
💤 Files with no reviewable changes (10)
  • .github/workflows/build-container-ubuntu-lts.yml
  • src/EventStore.Core.Tests/ClientAPI/deleting_persistent_subscription.cs
  • src/EventStore.Core.Tests/ClientAPI/update_persistent_subscription.cs
  • src/EventStore.Core.Tests/ClientAPI/persistent_connect_integration_tests.cs
  • src/EventStore.Core.Tests/ClientAPI/connecting_to_a_persistent_subscription.cs
  • src/EventStore.Core.Tests/ClientAPI/read_from_persistent_subscription_with_link_resolution_when_stream_name_contains_at_symbol.cs
  • scripts/test.sh
  • src/EventStore.Core.Tests/ClientAPI/ExpectedVersion64Bit/persistent_subscription_with_event_numbers_greater_than_2_billion.cs
  • src/EventStore.Core.Tests/ClientAPI/connecting_to_a_persistent_subscription_async.cs
  • src/EventStore.Core.Tests/ClientAPI/create_persistent_subscription.cs

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


Walkthrough

The pull request removes the core-clientapi-persistent test group from the Ubuntu workflow and test script. It deletes ClientAPI persistent subscription tests for creation, deletion, updates, connections, link resolution, acknowledgements, retries, and large event numbers.

Changes

Persistent subscription test removal

Layer / File(s) Summary
Disable the persistent subscription test group
.github/workflows/build-container-ubuntu-lts.yml, scripts/test.sh
The workflow no longer schedules core-clientapi-persistent. The test script no longer recognizes its project, filter, or timeout entries.
Remove subscription lifecycle fixtures
src/EventStore.Core.Tests/ClientAPI/create_persistent_subscription.cs, deleting_persistent_subscription.cs, update_persistent_subscription.cs, ExpectedVersion64Bit/...
Creation, deletion, update, and high event-number persistent subscription fixtures were deleted.
Remove connection and delivery fixtures
src/EventStore.Core.Tests/ClientAPI/connecting_to_a_persistent_subscription.cs, connecting_to_a_persistent_subscription_async.cs, persistent_connect_integration_tests.cs, read_from_persistent_subscription_with_link_resolution_when_stream_name_contains_at_symbol.cs
Connection, asynchronous delivery, link resolution, acknowledgement, retry, and subscriber behavior fixtures were deleted.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 051c3

This retires tests for an unsupported protocol feature without an identified current-head risk.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Title check ⚠️ Warning The title is misleading. The changes retire TCP client persistent-subscription tests, but the title claims behavior is preserved over gRPC. No gRPC behavior change appears in the changeset. Use a title that describes retiring redundant persistent-subscription test coverage for the unsupported TCP client protocol.
✅ Passed checks (4 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description check ✅ Passed The description is related to the changeset. It explains that persistent-subscription behavior remains protected while an unsupported client transport retires.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch yordis/chore-retire-clientapi-persistent

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit trims the test-run trail
Persistent checks now leave no scale
Create and connect suites take flight
The workflow skips them tonight
Fewer files hop into the light

Comment @coderabbitai help to get the list of available commands.

@yordis
yordis added this pull request to stack #500 September 12, 2026 23:22
@yordis
yordis force-pushed the yordis/chore-retire-clientapi-persistent branch 6 times, most recently from 5bca9ae to 1149e80 Compare September 13, 2026 01:46
Base automatically changed from yordis/feat-grpc-test-client to master September 13, 2026 02:02
@yordis
yordis force-pushed the yordis/chore-retire-clientapi-persistent branch 2 times, most recently from 051c3cc to 83ce9b1 Compare September 13, 2026 02:29
@yordis yordis changed the title chore(tests): retire redundant persistent TCP coverage fix(tests): preserve persistent subscription behavior Sep 13, 2026
@yordis
yordis force-pushed the yordis/chore-retire-clientapi-persistent branch from 83ce9b1 to 7461e33 Compare September 13, 2026 02:59
@yordis yordis changed the title fix(tests): preserve persistent subscription behavior fix(subscriptions): preserve behavior over gRPC Sep 13, 2026
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis force-pushed the yordis/chore-retire-clientapi-persistent branch from 7461e33 to 75d3d28 Compare September 13, 2026 03:14
@yordis
yordis merged commit 7b0fbe3 into master Sep 13, 2026
4 checks passed
@yordis
yordis deleted the yordis/chore-retire-clientapi-persistent branch September 13, 2026 03:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant