Skip to content

Improve gRPC method discovery and failover - #1920

Merged
WhitWaldo merged 2 commits into
masterfrom
reflection-regression
Sep 30, 2026
Merged

WhitWaldo merged 2 commits into
masterfrom
reflection-regression

Conversation

@WhitWaldo

Copy link
Copy Markdown
Contributor

Description

Iterates on the #1816 implementation to both fix the possible reflection lookup stalls, but also improve on the source generator to better identify if methods are supported, unsupported or unknown based on protos at build time. At runtime then, it prefers to use reflection to see what's there, fails back to the source generator registry with failovers based on that information that'll try through each method until one works. Added in-memory cache so if a failover is required for a given method (and the response succeeds), it's persistently used until the app restarts.

Issue reference

We strive to have all PR being opened based on an issue, where the problem or feature have been discussed prior to implementation.

Please reference the issue this PR will close: #1918

Checklist

Please make sure you've completed the relevant tasks for this PR, out of the following list:

  • Code compiles correctly
  • Created/updated tests
  • Extended the documentation

…lookup stalls, but also improve on the source generator to better identify if methods are supported, unsupported or unknown based on protos at build time. At runtime then, it prefers to use reflection to see what's there, fails back to the source generator registry with failovers based on that information that'll try through each method until one works. Added in-memory cache so if a failover is required for a given method (and the response succeeds), it's persistently used until the app restarts.

Signed-off-by: Whit Waldo <whit.waldo@innovian.net>
@WhitWaldo WhitWaldo added this to the v1.19 milestone Sep 29, 2026
@WhitWaldo WhitWaldo self-assigned this Sep 29, 2026
@WhitWaldo
WhitWaldo requested a review from a team as a code owner September 29, 2026 16:32
@WhitWaldo WhitWaldo added the kind/bug Something isn't working label Sep 29, 2026
@WhitWaldo
WhitWaldo requested a review from a team as a code owner September 29, 2026 16:32
@WhitWaldo WhitWaldo added the kind/enhancement New feature or request label Sep 29, 2026
@codecov

codecov Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 95.94595% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 64.94%. Comparing base (dd2d9de) to head (69b0709).

Files with missing lines Patch % Lines
src/Dapr.Common/DaprRuntimeCapabilities.cs 95.94% 2 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1920      +/-   ##
==========================================
+ Coverage   64.23%   64.94%   +0.70%     
==========================================
  Files         358      358              
  Lines       10506    10573      +67     
  Branches     1256     1244      -12     
==========================================
+ Hits         6749     6867     +118     
+ Misses       3422     3370      -52     
- Partials      335      336       +1     
Flag Coverage Δ
net10.0 64.91% <95.94%> (+0.70%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Signed-off-by: Whit Waldo <whit.waldo@innovian.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/bug Something isn't working kind/enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BulkPublishEventAsync hangs in DaprRuntimeCapabilities when daprd has no gRPC reflection service (regression in 1.18)

1 participant