Yuta HIGUCHI

ClusterMessagingProtocolServer: add null check + trace

Change-Id: If10a2f98a8e2ef098f770196de1bdc81500fd0c0
...@@ -67,6 +67,24 @@ public class ClusterMessagingProtocolServer implements ProtocolServer { ...@@ -67,6 +67,24 @@ public class ClusterMessagingProtocolServer implements ProtocolServer {
67 @Override 67 @Override
68 public void handle(ClusterMessage message) { 68 public void handle(ClusterMessage message) {
69 T request = ClusterMessagingProtocol.SERIALIZER.decode(message.payload()); 69 T request = ClusterMessagingProtocol.SERIALIZER.decode(message.payload());
70 + if (handler == null) {
71 + // there is a slight window of time during state transition,
72 + // where handler becomes null
73 + for (int i = 0; i < 10; ++i) {
74 + if (handler != null) {
75 + break;
76 + }
77 + try {
78 + Thread.sleep(1);
79 + } catch (InterruptedException e) {
80 + log.trace("Exception", e);
81 + }
82 + }
83 + if (handler == null) {
84 + log.error("There was no handler for registered!");
85 + return;
86 + }
87 + }
70 if (request.getClass().equals(PingRequest.class)) { 88 if (request.getClass().equals(PingRequest.class)) {
71 handler.ping((PingRequest) request).whenComplete(new PostExecutionTask<PingResponse>(message)); 89 handler.ping((PingRequest) request).whenComplete(new PostExecutionTask<PingResponse>(message));
72 } else if (request.getClass().equals(PollRequest.class)) { 90 } else if (request.getClass().equals(PollRequest.class)) {
...@@ -94,6 +112,7 @@ public class ClusterMessagingProtocolServer implements ProtocolServer { ...@@ -94,6 +112,7 @@ public class ClusterMessagingProtocolServer implements ProtocolServer {
94 log.error("Processing for " + message.subject() + " failed.", t); 112 log.error("Processing for " + message.subject() + " failed.", t);
95 } else { 113 } else {
96 try { 114 try {
115 + log.trace("responding to {}", message.subject());
97 message.respond(ClusterMessagingProtocol.SERIALIZER.encode(response)); 116 message.respond(ClusterMessagingProtocol.SERIALIZER.encode(response));
98 } catch (Exception e) { 117 } catch (Exception e) {
99 log.error("Failed to respond to " + response.getClass().getName(), e); 118 log.error("Failed to respond to " + response.getClass().getName(), e);
......