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>

Reply via email to