@Override
public void run() {
Thread.currentThread().setName("OrientDB Node Response " + queueName);
while (running) {
String senderNode = null;
ODistributedResponse message = null;
try {
message = nodeResponseQueue.take();
if (message != null) {
senderNode = message.getSenderNodeName();
final long responseTime = dispatchResponseToThread(message);
if (responseTime > -1)
collectMetric(responseTime);
}
} catch (InterruptedException e) {
// EXIT CURRENT THREAD
Thread.interrupted();
break;
} catch (DistributedObjectDestroyedException e) {
Thread.interrupted();
break;
} catch (HazelcastInstanceNotActiveException e) {
Thread.interrupted();
break;
} catch (HazelcastException e) {
if (e.getCause() instanceof InterruptedException)
Thread.interrupted();
else
ODistributedServerLog.error(this, manager.getLocalNodeName(), senderNode, DIRECTION.IN,
"error on reading distributed response", e, message != null ? message.getPayload() : "-");
} catch (Throwable e) {
ODistributedServerLog.error(this, manager.getLocalNodeName(), senderNode, DIRECTION.IN,
"error on reading distributed response", e, message != null ? message.getPayload() : "-");
}
}
ODistributedServerLog.debug(this, manager.getLocalNodeName(), null, DIRECTION.NONE, "end of reading responses");
}