Skip to content

interop/orcalb: Delegate SubConn management to pick_first#8914

Open
zarinn3pal wants to merge 5 commits intogrpc:masterfrom
zarinn3pal:feat/interop-orca-to-pf
Open

interop/orcalb: Delegate SubConn management to pick_first#8914
zarinn3pal wants to merge 5 commits intogrpc:masterfrom
zarinn3pal:feat/interop-orca-to-pf

Conversation

@zarinn3pal
Copy link
Copy Markdown

@zarinn3pal zarinn3pal commented Feb 19, 2026

This PR switches the interop ORCA test load balancer to delegate SubConn management to endpointsharding + pick_first instead of creating and handling SubConns itself As per gRFC A61 .

Fixes #8809

RELEASE NOTES: N/A

@zarinn3pal
Copy link
Copy Markdown
Author

/gemini review

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

The pull request successfully transitions the orcalb interop balancer to delegate SubConn management to endpointsharding and pick_first, resolving the dualstack support issue (#8809) and adhering to gRFC A61. The implementation of the wrapper balancer and the picker logic for ORCA load report handling is solid, and the new tests provide good coverage for failover and OOB reporting scenarios. I identified one potential nil pointer dereference during balancer shutdown that should be addressed.

Comment thread interop/orcalb.go
@codecov
Copy link
Copy Markdown

codecov bot commented Feb 19, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.82%. Comparing base (12e91dd) to head (6deff3f).
⚠️ Report is 38 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #8914      +/-   ##
==========================================
- Coverage   83.04%   81.82%   -1.22%     
==========================================
  Files         411      413       +2     
  Lines       32892    33427     +535     
==========================================
+ Hits        27316    27353      +37     
- Misses       4181     4268      +87     
- Partials     1395     1806     +411     

see 60 files with indirect coverage changes

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

@easwars easwars added the Type: Internal Cleanup Refactors, etc label Feb 19, 2026
@easwars easwars added this to the 1.80 Release milestone Feb 19, 2026
Copy link
Copy Markdown
Contributor

@Pranjali-2501 Pranjali-2501 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @zarinn3pal, thankyou for your contribution.

I have some comments, could you please take a look at that.

Comment thread interop/orcalb.go Outdated
Comment thread interop/orcalb.go Outdated
Comment thread interop/orcalb.go Outdated
Comment thread interop/orcalb.go Outdated
Comment thread interop/orcalb_test.go Outdated
Comment thread interop/orcalb_test.go Outdated
Comment thread interop/orcalb_test.go Outdated
@zarinn3pal
Copy link
Copy Markdown
Author

Hi @Pranjali-2501 ,
Thank you for the review. I have addressed the concerns. Can you please have a look into it again?
Thanks

@zarinn3pal
Copy link
Copy Markdown
Author

/gemini review

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request is a significant architectural improvement for the interop ORCA test load balancer. It refactors the balancer to delegate SubConn management to endpointsharding and pick_first, aligning with gRFC A61 and enabling proper dual-stack support. The implementation correctly follows the parent/child balancer pattern, intercepting calls to inject ORCA-specific logic for OOB listeners and picker wrapping. The changes are robust and well-structured. Furthermore, the addition of a comprehensive test suite in orcalb_test.go is excellent, covering various scenarios including multiple addresses, multiple endpoints, and resolver updates. The code quality is high, and I did not find any issues of medium or higher severity.

Comment thread interop/orcalb_test.go
Comment thread interop/orcalb_test.go
Comment thread interop/orcalb_test.go Outdated
Comment thread interop/orcalb_test.go Outdated
Copy link
Copy Markdown
Contributor

@Pranjali-2501 Pranjali-2501 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added few more comments, PTAL.

@easwars
Copy link
Copy Markdown
Contributor

easwars commented Mar 23, 2026

Can you please not mark the comments as resolved. That is typically done by the person who starts that comment. Now, if I have to know what comments I made and what to replied to them, I have to unresolve every single comment.

Comment thread interop/orcalb.go Outdated
Comment thread interop/orcalb.go
Comment thread interop/orcalb.go Outdated
Comment thread interop/orcalb.go
Comment thread interop/orcalb.go Outdated
@easwars easwars assigned zarinn3pal and unassigned easwars Mar 23, 2026
…s for map lookups, improved readability of hasMetrics condition, and replaced sync.Map with sync.Mutex
@zarinn3pal zarinn3pal requested a review from easwars March 26, 2026 15:03
@zarinn3pal
Copy link
Copy Markdown
Author

Hi @easwars ,
I have addressed all the comments that you pointed out. Can you please re-review?
Thanks

Comment thread interop/orcalb.go
Comment thread interop/orcalb.go
Comment thread interop/orcalb.go Outdated
Comment thread interop/orcalb.go
Comment thread interop/orcalb_test.go Outdated
"testing"
"time"

v3orcapb "github.com/cncf/xds/go/xds/data/orca/v3"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please group proto imports in a separate import block. See: https://google.github.io/styleguide/go/decisions#import-grouping

Comment thread interop/orcalb_test.go
"google.golang.org/grpc/internal"
"google.golang.org/grpc/internal/grpctest"
"google.golang.org/grpc/internal/stubserver"
testgrpc "google.golang.org/grpc/interop/grpc_testing"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to be imported twice, once as testgrpc and once as testpb. Services and methods needs to be used from the former while messages need to used from the latter. Please see any test file in our repo to get an idea of how this is done.

Comment thread interop/orcalb.go Outdated
@zarinn3pal
Copy link
Copy Markdown
Author

Hi @easwars ,
I have some questions regarding the suggestions that were made.

@easwars
Copy link
Copy Markdown
Contributor

easwars commented Apr 7, 2026

Hi @easwars , I have some questions regarding the suggestions that were made.

I think I've addressed the two questions that I saw. Please take care of the other comments.

@github-actions
Copy link
Copy Markdown

This PR is labeled as requiring an update from the reporter, and no update has been received after 6 days. If no update is provided in the next 7 days, this issue will be automatically closed.

@zarinn3pal
Copy link
Copy Markdown
Author

@easwars , I have addressed the remaining comments. And added why using async would not be a good idea.
What are your thoughts on that?

@zarinn3pal zarinn3pal removed their assignment Apr 15, 2026
@easwars
Copy link
Copy Markdown
Contributor

easwars commented Apr 16, 2026

But the test is still failing on 32 bit architecture. Can you please take a look?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

interop/orcalb: Delegate SubConn management to pickfirst

5 participants