>From Murtadha Hubail <[email protected]>:
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 <[email protected]>