Dmitry Lychagin has uploaded a new change for review. https://asterix-gerrit.ics.uci.edu/1910
Change subject: [ASTERIXDB-2009][HYR] Improve error reporting in MultiplexedConnection ...................................................................... [ASTERIXDB-2009][HYR] Improve error reporting in MultiplexedConnection - user model changes: no - storage format changes: no - interface changes: no Details: - retain cause exception and ip address when raising error in MultiplexedConnection.waitUntilConnected() Change-Id: I39c2db3b966dbde5c4c04ba061132a74195fb155 --- M hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MultiplexedConnection.java M hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemux.java M hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/ITCPConnectionListener.java M hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/TCPEndpoint.java 4 files changed, 10 insertions(+), 9 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/10/1910/1 diff --git a/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MultiplexedConnection.java b/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MultiplexedConnection.java index ad8aabd..8c54c65 100644 --- a/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MultiplexedConnection.java +++ b/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MultiplexedConnection.java @@ -110,8 +110,9 @@ notifyAll(); } - synchronized void setConnectionFailure() { + synchronized void setConnectionFailure(Exception e) { this.connectionFailure = true; + this.error = e; notifyAll(); } @@ -120,7 +121,7 @@ wait(); } if (connectionFailure) { - throw new NetException("Connection failure"); + throw new NetException("Connection failure", error); } } diff --git a/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemux.java b/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemux.java index 7e6c8d7..f6261da 100644 --- a/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemux.java +++ b/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemux.java @@ -92,7 +92,7 @@ } @Override - public void connectionFailure(InetSocketAddress remoteAddress) { + public void connectionFailure(InetSocketAddress remoteAddress, IOException error) { MultiplexedConnection mConn; synchronized (MuxDemux.this) { mConn = connectionMap.get(remoteAddress); @@ -100,7 +100,7 @@ int nConnectionAttempts = mConn.getConnectionAttempts(); if (nConnectionAttempts > MuxDemux.this.maxConnectionAttempts) { connectionMap.remove(remoteAddress); - mConn.setConnectionFailure(); + mConn.setConnectionFailure(new IOException(remoteAddress.toString() + ": " + error, error)); } else { mConn.setConnectionAttempts(nConnectionAttempts + 1); tcpEndpoint.initiateConnection(remoteAddress); diff --git a/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/ITCPConnectionListener.java b/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/ITCPConnectionListener.java index 9fe0421..b801cd3 100644 --- a/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/ITCPConnectionListener.java +++ b/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/ITCPConnectionListener.java @@ -18,6 +18,7 @@ */ package org.apache.hyracks.net.protocols.tcp; +import java.io.IOException; import java.net.InetSocketAddress; public interface ITCPConnectionListener { @@ -25,5 +26,5 @@ public void connectionEstablished(TCPConnection connection); - public void connectionFailure(InetSocketAddress remoteAddress); + public void connectionFailure(InetSocketAddress remoteAddress, IOException error); } diff --git a/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/TCPEndpoint.java b/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/TCPEndpoint.java index 41e0dd2..52f4c30 100644 --- a/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/TCPEndpoint.java +++ b/hyracks-fullstack/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/TCPEndpoint.java @@ -132,7 +132,7 @@ } catch (IOException e) { failure = true; synchronized (connectionListener) { - connectionListener.connectionFailure(address); + connectionListener.connectionFailure(address, e); } } if (!failure) { @@ -188,11 +188,10 @@ boolean finishConnect = false; try { finishConnect = channel.finishConnect(); - } catch (Exception e) { - e.printStackTrace(); + } catch (IOException e) { key.cancel(); synchronized (connectionListener) { - connectionListener.connectionFailure((InetSocketAddress) key.attachment()); + connectionListener.connectionFailure((InetSocketAddress) key.attachment(), e); } } if (finishConnect) { -- To view, visit https://asterix-gerrit.ics.uci.edu/1910 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I39c2db3b966dbde5c4c04ba061132a74195fb155 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Dmitry Lychagin <dmitry.lycha...@couchbase.com>