[NO ISSUE][OTH] Extensible NCQueryServiceServlet Message
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- Allow the message used in NCQueryServiceServlet message
to be extended and override.
Change-Id: If1ec0812c641768196e582a444080cde44f58c50
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9784
Reviewed-by: Michael Blow <mblow@apache.org>
Tested-by: Michael Blow <mblow@apache.org>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
index 1b2b00d..99b6be1 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
@@ -85,11 +85,9 @@
long timeout = param.getTimeout();
int stmtCategoryRestrictionMask = org.apache.asterix.app.translator.RequestParameters
.getStatementCategoryRestrictionMask(param.isReadOnly());
- ExecuteStatementRequestMessage requestMsg = new ExecuteStatementRequestMessage(ncCtx.getNodeId(),
- responseFuture.getFutureId(), queryLanguage, statementsText, sessionOutput.config(),
- resultProperties.getNcToCcResultProperties(), param.getClientContextID(), handleUrl,
- optionalParameters, statementParameters, param.isMultiStatement(), param.getProfileType(),
- stmtCategoryRestrictionMask, requestReference);
+ ExecuteStatementRequestMessage requestMsg = createRequestMessage(requestReference, statementsText,
+ sessionOutput, resultProperties, param, optionalParameters, statementParameters, ncCtx,
+ responseFuture, queryLanguage, handleUrl, stmtCategoryRestrictionMask, false);
executionState.start();
ncMb.sendMessageToPrimaryCC(requestMsg);
try {
@@ -131,6 +129,19 @@
buildResponseResults(responsePrinter, sessionOutput, responseMsg.getExecutionPlans(), warnings);
}
+ protected ExecuteStatementRequestMessage createRequestMessage(IRequestReference requestReference,
+ String statementsText, SessionOutput sessionOutput, ResultProperties resultProperties,
+ QueryServiceRequestParameters param, Map<String, String> optionalParameters,
+ Map<String, byte[]> statementParameters, INCServiceContext ncCtx, MessageFuture responseFuture,
+ ILangExtension.Language queryLanguage, String handleUrl, int stmtCategoryRestrictionMask,
+ boolean forceDropDataset) {
+ return new ExecuteStatementRequestMessage(ncCtx.getNodeId(), responseFuture.getFutureId(), queryLanguage,
+ statementsText, sessionOutput.config(), resultProperties.getNcToCcResultProperties(),
+ param.getClientContextID(), handleUrl, optionalParameters, statementParameters,
+ param.isMultiStatement(), param.getProfileType(), stmtCategoryRestrictionMask, requestReference,
+ forceDropDataset);
+ }
+
private void cancelQuery(INCMessageBroker messageBroker, String nodeId, String uuid, String clientContextID,
Exception exception, boolean wait) {
if (uuid == null && clientContextID == null) {
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 2552040..66a6dde 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
@@ -65,8 +65,8 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-public final class ExecuteStatementRequestMessage implements ICcAddressedMessage {
- private static final long serialVersionUID = 1L;
+public class ExecuteStatementRequestMessage implements ICcAddressedMessage {
+ private static final long serialVersionUID = 2L;
private static final Logger LOGGER = LogManager.getLogger();
//TODO: Make configurable: https://issues.apache.org/jira/browse/ASTERIXDB-2062
public static final long DEFAULT_NC_TIMEOUT_MILLIS = TimeUnit.MILLISECONDS.toMillis(Long.MAX_VALUE);
@@ -86,12 +86,13 @@
private final int statementCategoryRestrictionMask;
private final ProfileType profileType;
private final IRequestReference requestReference;
+ private final boolean forceDropDataset;
public ExecuteStatementRequestMessage(String requestNodeId, long requestMessageId, ILangExtension.Language lang,
String statementsText, SessionConfig sessionConfig, ResultProperties resultProperties,
String clientContextID, String handleUrl, Map<String, String> optionalParameters,
Map<String, byte[]> statementParameters, boolean multiStatement, ProfileType profileType,
- int statementCategoryRestrictionMask, IRequestReference requestReference) {
+ int statementCategoryRestrictionMask, IRequestReference requestReference, boolean forceDropDataset) {
this.requestNodeId = requestNodeId;
this.requestMessageId = requestMessageId;
this.lang = lang;
@@ -106,6 +107,7 @@
this.statementCategoryRestrictionMask = statementCategoryRestrictionMask;
this.profileType = profileType;
this.requestReference = requestReference;
+ this.forceDropDataset = forceDropDataset;
}
@Override
@@ -150,7 +152,7 @@
Map<String, IAObject> stmtParams = RequestParameters.deserializeParameterValues(statementParameters);
final IRequestParameters requestParameters = new RequestParameters(requestReference, statementsText, null,
resultProperties, stats, statementProperties, outMetadata, clientContextID, optionalParameters,
- stmtParams, multiStatement, statementCategoryRestrictionMask);
+ stmtParams, multiStatement, statementCategoryRestrictionMask, forceDropDataset);
translator.compileAndExecute(ccApp.getHcc(), requestParameters);
translator.getWarnings(warnings, maxWarnings - warnings.size());
stats.updateTotalWarningsCount(parserTotalWarningsCount);