You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, vtadmin-api's vtctld proxy's Dial function will only reinitialize its vtctld connection if (a) it does not have a cached connection (i.e., it's the first time Dial has been called), or (b) if the vtctld connection is explicitly closed.
As a result, if any of the vtctlds to which VTAdmin is connected go away (are deprovisioned, the vtctld service crashes, etc.) then any vtadmin-api endpoint that the vtctlds (keyspaces, workflows, schemas, etc.) will time out.
Ideally, Dial should also check that the gRPC connection is "ready for work", i.e., its connectivity state is ready/idle. If it is in a failure state, then the Dial function should close the connection and rediscover a new vtctld.
At this point, ideal behaviour is that vtadmin-api will detect that vtctld is no longer available, close the gRPC connection, and then rediscover the other vtctld.
What currently happens is that the gRPC connection just retries forever:
Currently, vtadmin-api's vtctld proxy's Dial function will only reinitialize its vtctld connection if (a) it does not have a cached connection (i.e., it's the first time Dial has been called), or (b) if the vtctld connection is explicitly closed.
As a result, if any of the vtctlds to which VTAdmin is connected go away (are deprovisioned, the vtctld service crashes, etc.) then any vtadmin-api endpoint that the vtctlds (keyspaces, workflows, schemas, etc.) will time out.
Ideally, Dial should also check that the gRPC connection is "ready for work", i.e., its connectivity state is ready/idle. If it is in a failure state, then the Dial function should close the connection and rediscover a new vtctld.
This is fairly easy to reproduce locally:
Dial
and discover one of the two vtctlds. Additional logging to show:kill -9
whichever vtctld it established a connection toAt this point, ideal behaviour is that vtadmin-api will detect that vtctld is no longer available, close the gRPC connection, and then rediscover the other vtctld.
What currently happens is that the gRPC connection just retries forever:
The text was updated successfully, but these errors were encountered: