fullstorydev / fullstorydev/grpcui

Unable to use grpcui through load balancer in v1.4.2+

Open
#383 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
5.9k
Forks
427
Avg merge
3d 6h
Merged PRs (30d)
7

Description

We have a couple grpc servers sitting behind a load balancer. When I use grpcui release versions 1.4.2 and 1.4.3 via the load balancer I see:

`Failed to compute set of methods to expose: rpc error: code = Internal desc = stream terminated by RST_STREAM with error code: INTERNAL_ERROR`

When we use v1.4.1 or earlier I am able to connect no problem.

Interestingly, when I use version 1.4.2 to connect directly to the server behind the load balancer, I am able to connect without issue.

In case it's useful here are the verbose logs when I use v1.4.3:

> 2025/05/21 15:59:51 INFO: [core] [Channel #1] Channel created
> 2025/05/21 15:59:51 INFO: [core] [Channel #1] original dial target is: "****:443"
> 2025/05/21 15:59:51 INFO: [core] [Channel #1] parsed dial target is: resolver.Target{URL:url.URL{Scheme:"****", Opaque:"443", User:(*url.Userinfo)(nil), Host:"", Path:"", RawPath:"", OmitHost:false, ForceQuery:false, RawQuery:"", Fragment:"", RawFragment:""}}
> 2025/05/21 15:59:51 INFO: [core] [Channel #1] fallback to scheme "passthrough"
> 2025/05/21 15:59:51 INFO: [core] [Channel #1] parsed dial target is: passthrough:///***:443
> 2025/05/21 15:59:51 INFO: [core] [Channel #1] Channel authority set to "***:443"
> 2025/05/21 15:59:51 INFO: [core] [Channel #1] Resolver state updated: {
> "Addresses": [
> {
> "Addr": "***:443",
> "ServerName": "",
> "Attributes": null,
> "BalancerAttributes": null,
> "Metadata": null
> }
> ],
> "Endpoints": [
> {
> "Addresses": [
> {
> "Addr": "***:443",
> "ServerName": "",
> "Attributes": null,
> "BalancerAttributes": null,
> "Metadata": null
> }
> ],
> "Attributes": null
> }
> ],
> "ServiceConfig": null,
> "Attributes": null
> } (resolver returned new addresses)
> 2025/05/21 15:59:51 INFO: [core] [Channel #1] Channel switches to new LB policy "pick_first"
> 2025/05/21 15:59:51 INFO: [core] [pick-first-lb 0xc0003cb290] Received new config {
> "shuffleAddressList": false
> }, resolver state {
> "Addresses": [
> {
> "Addr": "***:443",
> "ServerName": "",
> "Attributes": null,
> "BalancerAttributes": null,
> "Metadata": null
> }
> ],
> "Endpoints": [
> {
> "Addresses": [
> {
> "Addr": "***:443",
> "ServerName": "",
> "Attributes": null,
> "BalancerAttributes": null,
> "Metadata": null
> }
> ],
> "Attributes": null
> }
> ],
> "ServiceConfig": null,
> "Attributes": null
> }
> 2025/05/21 15:59:51 INFO: [core] [Channel #1 SubChannel #2] Subchannel created
> 2025/05/21 15:59:51 INFO: [core] [Channel #1] Channel Connectivity change to CONNECTING
> 2025/05/21 15:59:51 INFO: [core] [Channel #1] Channel exiting idle mode
> 2025/05/21 15:59:51 INFO: [core] [Channel #1 SubChannel #2] Subchannel Connectivity change to CONNECTING
> 2025/05/21 15:59:51 INFO: [core] [Channel #1 SubChannel #2] Subchannel picks a new address "***:443" to connect
> 2025/05/21 15:59:51 INFO: [core] [pick-first-lb 0xc0003cb290] Received SubConn state update: 0xc0003cb4a0, {ConnectivityState:CONNECTING ConnectionError:}
> 2025/05/21 15:59:51 INFO: [core] [Channel #1 SubChannel #2] Subchannel Connectivity change to READY
> 2025/05/21 15:59:51 INFO: [core] [pick-first-lb 0xc0003cb290] Received SubConn state update: 0xc0003cb4a0, {ConnectivityState:READY ConnectionError:}
> 2025/05/21 15:59:51 INFO: [core] [Channel #1] Channel Connectivity change to READY
> Failed to compute set of methods to expose: rpc error: code = Internal desc = stream terminated by RST_STREAM with error code: INTERNAL_ERROR
> 2025/05/21 15:59:51 INFO: [core] [Channel #1] Channel Connectivity change to SHUTDOWN
> 2025/05/21 15:59:51 INFO: [core] [Channel #1] Closing the name resolver
> 2025/05/21 15:59:51 INFO: [core] [Channel #1] ccBalancerWrapper: closing
> 2025/05/21 15:59:51 INFO: [core] [Channel #1 SubChannel #2] Subchannel Connectivity change to SHUTDOWN
> 2025/05/21 15:59:51 INFO: [core] [Channel #1 SubChannel #2] Subchannel deleted
> 2025/05/21 15:59:51 INFO: [transport] [client-transport 0xc00037c488] Closing: rpc error: code = Canceled desc = grpc: the client connection is closing
> 2025/05/21 15:59:51 INFO: [transport] [client-transport 0xc00037c488] loopyWriter exiting with error: transport closed by client
> 2025/05/21 15:59:51 INFO: [core] [Channel #1] Channel deleted

These are the verbose logs for v1.4.1:

> 2025/05/21 19:28:01 INFO: [core] [Channel #1] Channel created
> 2025/05/21 19:28:01 INFO: [core] [Channel #1] original dial target is: "***:443"
> 2025/05/21 19:28:01 INFO: [core] [Channel #1] parsed dial target is: resolver.Target{URL:url.URL{Scheme:"***", Opaque:"443", User:(*url.Userinfo)(nil), Host:"", Path:"", RawPath:"", OmitHost:false, ForceQuery:false, RawQuery:"", Fragment:"", RawFragment:""}}
> 2025/05/21 19:28:01 INFO: [core] [Channel #1] fallback to scheme "passthrough"
> 2025/05/21 19:28:01 INFO: [core] [Channel #1] parsed dial target is: passthrough:///***:443
> 2025/05/21 19:28:01 INFO: [core] [Channel #1] Channel authority set to "***:443"
> 2025/05/21 19:28:01 INFO: [core] [Channel #1] Resolver state updated: {
> "Addresses": [
> {
> "Addr": "***:443",
> "ServerName": "",
> "Attributes": null,
> "BalancerAttributes": null,
> "Metadata": null
> }
> ],
> "Endpoints": [
> {
> "Addresses": [
> {
> "Addr": "***:443",
> "ServerName": "",
> "Attributes": null,
> "BalancerAttributes": null,
> "Metadata": null
> }
> ],
> "Attributes": null
> }
> ],
> "ServiceConfig": null,
> "Attributes": null
> } (resolver returned new addresses)
> 2025/05/21 19:28:01 INFO: [core] [Channel #1] Channel switches to new LB policy "pick_first"
> 2025/05/21 19:28:01 INFO: [core] [pick-first-lb 0xc000357620] Received new config {
> "shuffleAddressList": false
> }, resolver state {
> "Addresses": [
> {
> "Addr": "***:443",
> "ServerName": "",
> "Attributes": null,
> "BalancerAttributes": null,
> "Metadata": null
> }
> ],
> "Endpoints": [
> {
> "Addresses": [
> {
> "Addr": "***:443",
> "ServerName": "",
> "Attributes": null,
> "BalancerAttributes": null,
> "Metadata": null
> }
> ],
> "Attributes": null
> }
> ],
> "ServiceConfig": null,
> "Attributes": null
> }
> 2025/05/21 19:28:01 INFO: [core] [Channel #1 SubChannel #2] Subchannel created
> 2025/05/21 19:28:01 INFO: [core] [Channel #1] Channel Connectivity change to CONNECTING
> 2025/05/21 19:28:01 INFO: [core] [Channel #1] Channel exiting idle mode
> 2025/05/21 19:28:01 INFO: [core] [Channel #1 SubChannel #2] Subchannel Connectivity change to CONNECTING
> 2025/05/21 19:28:01 INFO: [core] [Channel #1 SubChannel #2] Subchannel picks a new address "***:443" to connect
> 2025/05/21 19:28:01 INFO: [core] [pick-first-lb 0xc000357620] Received SubConn state update: 0xc0003577a0, {ConnectivityState:CONNECTING ConnectionError:}
> 2025/05/21 19:28:02 INFO: [core] [Channel #1 SubChannel #2] Subchannel Connectivity change to READY
> 2025/05/21 19:28:02 INFO: [core] [pick-first-lb 0xc000357620] Received SubConn state update: 0xc0003577a0, {ConnectivityState:READY ConnectionError:}
> 2025/05/21 19:28:02 INFO: [core] [Channel #1] Channel Connectivity change to READY
> gRPC Web UI available at http://127.0.0.1:52461/

Contributor guide

No contributing guide indexed for this repository

Research direction

No files, tests, or entry points are named. Start by reproducing the failure through a load balancer with v1.4.1, v1.4.2, and v1.4.3, then compare the connection and reflection paths between versions. Done means identifying the regression and adding coverage for the load-balancer scenario.

Written by the indexing model from the issue text.

Assessment

Domain
api, backend, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.