From 266965f7adb629b0a4b8de6bcd5d6a514a52c6df Mon Sep 17 00:00:00 2001 From: Lukacs Berki Date: Mon, 18 Jul 2016 11:17:22 +0000 Subject: Actually restart server timeout on Ping() and Cancel() RPCs. In theory, now we can cancel Ping() and Cancel() RPCs, too, but since we don't tell their UUID anyone, we are fine. -- MOS_MIGRATED_REVID=127703598 --- .../devtools/build/lib/server/GrpcServerImpl.java | 42 ++++++++++------------ 1 file changed, 18 insertions(+), 24 deletions(-) (limited to 'src/main/java/com/google/devtools') diff --git a/src/main/java/com/google/devtools/build/lib/server/GrpcServerImpl.java b/src/main/java/com/google/devtools/build/lib/server/GrpcServerImpl.java index e3e95b4740..f6a37fa334 100644 --- a/src/main/java/com/google/devtools/build/lib/server/GrpcServerImpl.java +++ b/src/main/java/com/google/devtools/build/lib/server/GrpcServerImpl.java @@ -412,25 +412,19 @@ public class GrpcServerImpl extends RPCServer implements CommandServerGrpc.Comma } } - private void restartIdleTimeout() { - synchronized (runningCommands) { - runningCommands.notify(); - } - } - @Override public void ping(PingRequest pingRequest, StreamObserver streamObserver) { Preconditions.checkState(serving); - PingResponse.Builder response = PingResponse.newBuilder(); - if (pingRequest.getCookie().equals(requestCookie)) { - response.setCookie(responseCookie); - } - - streamObserver.onNext(response.build()); - streamObserver.onCompleted(); + try (RunningCommand command = new RunningCommand()) { + PingResponse.Builder response = PingResponse.newBuilder(); + if (pingRequest.getCookie().equals(requestCookie)) { + response.setCookie(responseCookie); + } - restartIdleTimeout(); + streamObserver.onNext(response.build()); + streamObserver.onCompleted(); + } } @Override @@ -440,18 +434,18 @@ public class GrpcServerImpl extends RPCServer implements CommandServerGrpc.Comma return; } - synchronized (runningCommands) { - RunningCommand command = runningCommands.get(request.getCommandId()); - if (command != null) { - command.thread.interrupt(); + try (RunningCommand cancelCommand = new RunningCommand()) { + synchronized (runningCommands) { + RunningCommand pendingCommand = runningCommands.get(request.getCommandId()); + if (pendingCommand != null) { + pendingCommand.thread.interrupt(); + } + + startSlowInterruptWatcher(ImmutableSet.of(request.getCommandId())); } - startSlowInterruptWatcher(ImmutableSet.of(request.getCommandId())); + streamObserver.onNext(CancelResponse.newBuilder().setCookie(responseCookie).build()); + streamObserver.onCompleted(); } - - streamObserver.onNext(CancelResponse.newBuilder().setCookie(responseCookie).build()); - streamObserver.onCompleted(); - - restartIdleTimeout(); } } -- cgit v1.2.3