This is an automated email from the ASF dual-hosted git repository. mblow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit e7f68a9fbefbe3ac7098930b0a5cfb16b308e9e9 Author: Murtadha Hubail <[email protected]> AuthorDate: Fri Jan 29 20:16:38 2021 +0300 [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 <[email protected]> Tested-by: Michael Blow <[email protected]> Tested-by: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> --- .../api/http/server/NCQueryServiceServlet.java | 21 ++++++++++++++++----- .../app/message/ExecuteStatementRequestMessage.java | 10 ++++++---- 2 files changed, 22 insertions(+), 9 deletions(-) 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 @@ public class NCQueryServiceServlet extends QueryServiceServlet { 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 @@ public class NCQueryServiceServlet extends QueryServiceServlet { 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.Level; 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 @@ public final class ExecuteStatementRequestMessage implements ICcAddressedMessage 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 @@ public final class ExecuteStatementRequestMessage implements ICcAddressedMessage this.statementCategoryRestrictionMask = statementCategoryRestrictionMask; this.profileType = profileType; this.requestReference = requestReference; + this.forceDropDataset = forceDropDataset; } @Override @@ -150,7 +152,7 @@ public final class ExecuteStatementRequestMessage implements ICcAddressedMessage 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);
