Skip to content

Commit

Permalink
Have FailingXdsStream call methods be no-ops rather than throw Unsupp…
Browse files Browse the repository at this point in the history
…ortedOperationException. Pass a Status to FailingXdsTransport instead of a message and having it generate the Status.
  • Loading branch information
larry-safran committed Dec 5, 2024
1 parent 118fc9b commit 4c21ce0
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 8 deletions.
14 changes: 7 additions & 7 deletions xds/src/main/java/io/grpc/xds/client/ControlPlaneClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -497,10 +497,10 @@ private void cleanUp() {

@VisibleForTesting
static class FailingXdsTransport implements XdsTransport {
String failingMessage;
Status error;

public FailingXdsTransport(String msg) {
this.failingMessage = msg;
public FailingXdsTransport(Status error) {
this.error = error;
}

@Override
Expand All @@ -520,22 +520,22 @@ private class FailingXdsStreamingCall<ReqT, RespT> implements StreamingCall<ReqT

@Override
public void start(XdsTransportFactory.EventHandler<RespT> eventHandler) {
eventHandler.onStatusReceived(Status.UNAVAILABLE.withDescription(failingMessage));
eventHandler.onStatusReceived(error);
}

@Override
public void sendMessage(ReqT message) {
throw new UnsupportedOperationException();
// no-op
}

@Override
public void startRecvMessage() {
throw new UnsupportedOperationException();
// no-op
}

@Override
public void sendError(Exception e) {
throw new UnsupportedOperationException();
// no-op
}

@Override
Expand Down
3 changes: 2 additions & 1 deletion xds/src/main/java/io/grpc/xds/client/XdsClientImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -487,7 +487,8 @@ private ControlPlaneClient getOrCreateControlPlaneClient(ServerInfo serverInfo)
String msg = String.format("Failed to create xds transport for %s: %s",
serverInfo.target(), e.getMessage());
logger.log(XdsLogLevel.WARNING, msg);
xdsTransport = new ControlPlaneClient.FailingXdsTransport(msg);
xdsTransport =
new ControlPlaneClient.FailingXdsTransport(Status.UNAVAILABLE.withDescription(msg));
}

ControlPlaneClient controlPlaneClient = new ControlPlaneClient(
Expand Down

0 comments on commit 4c21ce0

Please sign in to comment.