[NO ISSUE][HYR] Avoid ClassCastException in processIncomingMessages
If an error occurs while in state of CONNECT_RECEIVED, a
ClassCastException would occur attempting to cast the exception to a
InetSocketAddress
Change-Id: Ie738cede8e0a6ec98857505f8b27624b77c34256
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2094
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <mhubail@apache.org>
diff --git a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCHandle.java b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCHandle.java
index efd9830..b3a992b 100644
--- a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCHandle.java
+++ b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCHandle.java
@@ -148,21 +148,21 @@
}
system.getPerformanceCounters().addMessageReceivedCount(1);
- if (state == HandleState.CONNECT_RECEIVED) {
+ final boolean error = message.getFlag() == Message.ERROR;
+ if (!error && state == HandleState.CONNECT_RECEIVED) {
remoteAddress = (InetSocketAddress) message.getPayload();
system.getConnectionManager().registerHandle(this);
setState(HandleState.CONNECTED);
system.getConnectionManager().ack(this, message);
- continue;
- } else if (state == HandleState.CONNECT_SENT) {
+ } else if (!error && state == HandleState.CONNECT_SENT) {
if (message.getFlag() == Message.INITIAL_ACK) {
setState(HandleState.CONNECTED);
} else {
throw new IllegalStateException();
}
- continue;
+ } else {
+ system.deliverIncomingMessage(message);
}
- system.deliverIncomingMessage(message);
}
inBuffer.compact();
}
diff --git a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCSystem.java b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCSystem.java
index f27b268..f7e0af1 100644
--- a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCSystem.java
+++ b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCSystem.java
@@ -94,7 +94,7 @@
Exception exception = null;
if (message.getFlag() == Message.ERROR) {
exception = (Exception) message.getPayload();
- LOGGER.log(Level.INFO, "Exception in message " + message.toString());
+ LOGGER.log(Level.INFO, "Exception in message", exception);
} else {
payload = message.getPayload();
}