You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu> on 2025/10/17 12:50:10 UTC

[S] Change in asterixdb[phoenix]: [NO ISSUE][RT] Respond to NC in case of unexpected failures

From Murtadha Hubail <mh...@apache.org>:

Murtadha Hubail has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20496?usp=email )


Change subject: [NO ISSUE][RT] Respond to NC in case of unexpected failures
......................................................................

[NO ISSUE][RT] Respond to NC in case of unexpected failures

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

Details:

- On unexpected failures while sending messages from CC to NC,
  send a failure response to the NC to avoid requests hanging
  on the NC until their timeout.

Ex-ref: MB-68985
Change-Id: I5ff53205d7cbb23c91a482b22165e1645247745f
---
M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/AbstractInternalRequestMessage.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/messaging/CCMessageBroker.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/messaging/api/ICCMessageBroker.java
4 files changed, 30 insertions(+), 5 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/96/20496/1

diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/AbstractInternalRequestMessage.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/AbstractInternalRequestMessage.java
index 7d58e4e..4f78780 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/AbstractInternalRequestMessage.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/AbstractInternalRequestMessage.java
@@ -113,6 +113,8 @@
             messageBroker.sendApplicationMessageToNC(responseMsg, nodeRequestId);
         } catch (Exception e) {
             LOGGER.log(Level.WARN, e.toString(), e);
+            responseMsg.setError(e);
+            messageBroker.sendMessageQuietly(responseMsg, nodeRequestId);
         }
 
     }
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
index 0cdbf95..bd8d883 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
@@ -195,11 +195,7 @@
             GlobalConfig.ASTERIX_LOGGER.log(Level.ERROR, "Unexpected exception", e);
             responseMsg.setError(e);
         }
-        try {
-            messageBroker.sendApplicationMessageToNC(responseMsg, requestNodeId);
-        } catch (Exception e) {
-            LOGGER.log(Level.WARN, e.toString(), e);
-        }
+        sendResponseToNc(messageBroker, responseMsg);
     }
 
     protected IRequestParameters createRequestParameters(IStatementExecutor.StatementProperties statementProperties,
@@ -243,6 +239,16 @@
         }
     }
 
+    private void sendResponseToNc(CCMessageBroker messageBroker, ExecuteStatementResponseMessage responseMsg) {
+        try {
+            messageBroker.sendApplicationMessageToNC(responseMsg, requestNodeId);
+        } catch (Exception e) {
+            LOGGER.error("unexpected exception sending message to node {}", requestNodeId, e);
+            responseMsg.setError(e);
+            messageBroker.sendMessageQuietly(responseMsg, requestNodeId);
+        }
+    }
+
     @Override
     public String toString() {
         if (statementsText != null && (statementsText.startsWith("UPSERT") || statementsText.startsWith("INSERT"))) {
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/messaging/CCMessageBroker.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/messaging/CCMessageBroker.java
index 0683207..eb538f0 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/messaging/CCMessageBroker.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/messaging/CCMessageBroker.java
@@ -70,6 +70,15 @@
     }
 
     @Override
+    public void sendMessageQuietly(INcAddressedMessage msg, String nodeId) {
+        try {
+            sendMessage(msg, nodeId, false);
+        } catch (Exception e) {
+            LOGGER.warn("failed to send message to node {}", nodeId, e);
+        }
+    }
+
+    @Override
     public boolean sendRealTimeApplicationMessageToNC(INcAddressedMessage msg, String nodeId) throws Exception {
         return sendMessage(msg, nodeId, true);
     }
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/messaging/api/ICCMessageBroker.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/messaging/api/ICCMessageBroker.java
index e628bc7..72b0040 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/messaging/api/ICCMessageBroker.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/messaging/api/ICCMessageBroker.java
@@ -39,6 +39,14 @@
     boolean sendApplicationMessageToNC(INcAddressedMessage msg, String nodeId) throws Exception;
 
     /**
+     * Attempts to send {@code msg} to the specified {@code nodeId} without throwing exceptions
+     *
+     * @param msg
+     * @param nodeId
+     */
+    void sendMessageQuietly(INcAddressedMessage msg, String nodeId);
+
+    /**
      * Sends the passed message to the specified {@code nodeId}
      *
      * @param msg

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20496?usp=email
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: phoenix
Gerrit-Change-Id: I5ff53205d7cbb23c91a482b22165e1645247745f
Gerrit-Change-Number: 20496
Gerrit-PatchSet: 1
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>