You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mb...@apache.org on 2018/08/16 00:26:55 UTC

asterixdb git commit: [NO ISSUE][NET] Propagate Network Failure Error Codes

Repository: asterixdb
Updated Branches:
  refs/heads/master e608b742c -> f694895e3


[NO ISSUE][NET] Propagate Network Failure Error Codes

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
- Pass the network error code to the channel
  to determine whether the error should be
  sent to the receiver or not.

Change-Id: I29cffa916df9fecc9942f449ba6c5ca7c84b43b3
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2912
Reviewed-by: Michael Blow <mb...@apache.org>
Tested-by: Michael Blow <mb...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/f694895e
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/f694895e
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/f694895e

Branch: refs/heads/master
Commit: f694895e3b07bb213978d8d144ef5ff73b3d81bf
Parents: e608b74
Author: Murtadha Hubail <mh...@apache.org>
Authored: Wed Aug 15 15:47:11 2018 -0700
Committer: Michael Blow <mb...@apache.org>
Committed: Wed Aug 15 17:26:09 2018 -0700

----------------------------------------------------------------------
 .../org/apache/hyracks/comm/channels/NetworkOutputChannel.java | 4 ++--
 .../java/org/apache/hyracks/control/nc/net/NetworkManager.java | 2 +-
 .../apache/hyracks/control/nc/net/ResultNetworkManager.java    | 5 +++--
 .../apache/hyracks/control/nc/partitions/PartitionManager.java | 6 ++++--
 .../hyracks/control/nc/result/ResultPartitionReader.java       | 3 ++-
 5 files changed, 12 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/asterixdb/blob/f694895e/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkOutputChannel.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkOutputChannel.java b/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkOutputChannel.java
index 8bee56e..334fb5c 100644
--- a/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkOutputChannel.java
+++ b/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkOutputChannel.java
@@ -104,8 +104,8 @@ public class NetworkOutputChannel implements IFrameWriter {
         ccb.getWriteInterface().getFullBufferAcceptor().close();
     }
 
-    public void abort() {
-        ccb.getWriteInterface().getFullBufferAcceptor().error(AbstractChannelWriteInterface.REMOTE_ERROR_CODE);
+    public void abort(int ecode) {
+        ccb.getWriteInterface().getFullBufferAcceptor().error(ecode);
         synchronized (NetworkOutputChannel.this) {
             aborted = true;
             NetworkOutputChannel.this.notifyAll();

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/f694895e/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/net/NetworkManager.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/net/NetworkManager.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/net/NetworkManager.java
index 98693d0..8b02f9c 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/net/NetworkManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/net/NetworkManager.java
@@ -139,7 +139,7 @@ public class NetworkManager implements IChannelConnectionFactory {
         @Override
         public void error(int ecode) {
             if (noc != null) {
-                noc.abort();
+                noc.abort(ecode);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/f694895e/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/net/ResultNetworkManager.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/net/ResultNetworkManager.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/net/ResultNetworkManager.java
index 6927a58..ee821d6 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/net/ResultNetworkManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/net/ResultNetworkManager.java
@@ -33,6 +33,7 @@ import org.apache.hyracks.api.result.IResultPartitionManager;
 import org.apache.hyracks.api.result.ResultSetId;
 import org.apache.hyracks.comm.channels.IChannelConnectionFactory;
 import org.apache.hyracks.comm.channels.NetworkOutputChannel;
+import org.apache.hyracks.net.protocols.muxdemux.AbstractChannelWriteInterface;
 import org.apache.hyracks.net.protocols.muxdemux.ChannelControlBlock;
 import org.apache.hyracks.net.protocols.muxdemux.IChannelOpenListener;
 import org.apache.hyracks.net.protocols.muxdemux.MultiplexedConnection;
@@ -146,7 +147,7 @@ public class ResultNetworkManager implements IChannelConnectionFactory {
                 partitionManager.initializeResultPartitionReader(jobId, rsId, partition, noc);
             } catch (HyracksException e) {
                 LOGGER.warn("Failed to initialize result partition reader", e);
-                noc.abort();
+                noc.abort(AbstractChannelWriteInterface.REMOTE_ERROR_CODE);
             }
         }
 
@@ -158,7 +159,7 @@ public class ResultNetworkManager implements IChannelConnectionFactory {
         @Override
         public void error(int ecode) {
             if (noc != null) {
-                noc.abort();
+                noc.abort(ecode);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/f694895e/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/PartitionManager.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/PartitionManager.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/PartitionManager.java
index d023ce9..9ac7168 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/PartitionManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/PartitionManager.java
@@ -41,6 +41,7 @@ import org.apache.hyracks.control.common.job.PartitionState;
 import org.apache.hyracks.control.nc.NodeControllerService;
 import org.apache.hyracks.control.nc.io.WorkspaceFileFactory;
 import org.apache.hyracks.control.nc.resources.DefaultDeallocatableRegistry;
+import org.apache.hyracks.net.protocols.muxdemux.AbstractChannelWriteInterface;
 
 import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
@@ -105,7 +106,7 @@ public class PartitionManager {
 
     public synchronized void registerPartitionRequest(PartitionId partitionId, NetworkOutputChannel writer) {
         if (failedJobsCache.getIfPresent(partitionId.getJobId()) != null) {
-            writer.abort();
+            writer.abort(AbstractChannelWriteInterface.REMOTE_ERROR_CODE);
         }
         List<IPartition> pList = availablePartitionMap.get(partitionId);
         if (pList != null && !pList.isEmpty()) {
@@ -137,7 +138,8 @@ public class PartitionManager {
         if (!jobPartitions.isEmpty() || !pendingRequests.isEmpty()) {
             ncs.getExecutor().execute(() -> {
                 jobPartitions.forEach(IDeallocatable::deallocate);
-                pendingRequests.forEach(NetworkOutputChannel::abort);
+                pendingRequests.forEach(networkOutputChannel -> networkOutputChannel
+                        .abort(AbstractChannelWriteInterface.REMOTE_ERROR_CODE));
             });
         }
     }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/f694895e/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/result/ResultPartitionReader.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/result/ResultPartitionReader.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/result/ResultPartitionReader.java
index 39cdc1e..3774530 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/result/ResultPartitionReader.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/result/ResultPartitionReader.java
@@ -25,6 +25,7 @@ import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.partitions.ResultSetPartitionId;
 import org.apache.hyracks.comm.channels.NetworkOutputChannel;
+import org.apache.hyracks.net.protocols.muxdemux.AbstractChannelWriteInterface;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -82,7 +83,7 @@ public class ResultPartitionReader {
                 }
             } catch (Exception e) {
                 LOGGER.error(() -> "failed to send result partition " + resultState.getResultSetPartitionId(), e);
-                channel.abort();
+                channel.abort(AbstractChannelWriteInterface.REMOTE_ERROR_CODE);
             } finally {
                 close();
             }