@Override public synchronized void close() { if (this.isClosed) { throw new RuntimeException("Active context already closed"); } LOG.log(Level.FINEST, "Submit close context: RunningEvaluator id[{0}] for context id[{1}]", new Object[]{getEvaluatorId(), getId()}); final EvaluatorRuntimeProtocol.ContextControlProto contextControlProto = EvaluatorRuntimeProtocol.ContextControlProto.newBuilder() .setRemoveContext( EvaluatorRuntimeProtocol.RemoveContextProto.newBuilder() .setContextId(getId()) .build()) .build(); this.contextControlHandler.send(contextControlProto); this.isClosed = true; }