ClusterMessagingProtocolServer: add null check + trace
Change-Id: If10a2f98a8e2ef098f770196de1bdc81500fd0c0
Showing
1 changed file
with
19 additions
and
0 deletions
... | @@ -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); | ... | ... |
-
Please register or login to post a comment