This is an automated email from the ASF dual-hosted git repository.

alsuliman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git


The following commit(s) were added to refs/heads/master by this push:
     new d739683  [NO ISSUE][*DB] pass max-warnings via session config
d739683 is described below

commit d739683d7b3f934020c5fa06913bd5d57843ce35
Author: Ali Alsuliman <[email protected]>
AuthorDate: Fri Sep 20 12:46:44 2019 -0700

    [NO ISSUE][*DB] pass max-warnings via session config
    
    - user model changes: no
    - storage format changes: no
    - interface changes: yes
    
    Details:
    Pass max-warnings from servlet to APIFramework
    and QueryTranslator through the session config instead
    of creating an internal parameter (REQUEST_MAX_WARNINGS)
    and storing it in the metadata provider.
    
    Change-Id: I4145bcccc2702fae4b0c33872f1b98c47ab299f7
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/3569
    Contrib: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Integration-Tests: Jenkins <[email protected]>
    Reviewed-by: Ali Alsuliman <[email protected]>
    Reviewed-by: Murtadha Hubail <[email protected]>
---
 .../org/apache/asterix/translator/IRequestParameters.java   |  5 -----
 .../java/org/apache/asterix/translator/SessionConfig.java   | 12 ++++++++++++
 .../java/org/apache/asterix/api/common/APIFramework.java    |  6 +-----
 .../asterix/api/http/server/NCQueryServiceServlet.java      | 10 +++++-----
 .../apache/asterix/api/http/server/QueryServiceServlet.java |  5 +++--
 .../asterix/app/message/ExecuteStatementRequestMessage.java |  7 +++----
 .../org/apache/asterix/app/translator/QueryTranslator.java  |  4 +---
 .../apache/asterix/app/translator/RequestParameters.java    | 13 ++-----------
 8 files changed, 27 insertions(+), 35 deletions(-)

diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IRequestParameters.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IRequestParameters.java
index 0cec738..e242258 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IRequestParameters.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IRequestParameters.java
@@ -60,9 +60,4 @@ public interface IRequestParameters extends 
ICommonRequestParameters {
      *   {@code 0} if all categories are allowed
      */
     int getStatementCategoryRestrictionMask();
-
-    /**
-     * @return the maximum number of warnings to be reported.
-     */
-    long getMaxWarnings();
 }
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SessionConfig.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SessionConfig.java
index 45a5ae1..8077172 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SessionConfig.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SessionConfig.java
@@ -135,6 +135,7 @@ public class SessionConfig implements Serializable {
     private final boolean executeQuery;
     private final boolean generateJobSpec;
     private final boolean optimize;
+    private long maxWarnings;
 
     // Flags.
     private final Map<String, Boolean> flags;
@@ -198,6 +199,17 @@ public class SessionConfig implements Serializable {
     }
 
     /**
+     * Retrieve the maximum number of warnings to be reported.
+     */
+    public long getMaxWarnings() {
+        return maxWarnings;
+    }
+
+    public void setMaxWarnings(long maxWarnings) {
+        this.maxWarnings = maxWarnings;
+    }
+
+    /**
      * Retrieve the value of the "execute query" flag.
      */
     public boolean isExecuteQuery() {
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
index a31c1b2..5069b9f 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
@@ -33,7 +33,6 @@ import java.util.Set;
 
 import org.apache.asterix.algebra.base.ILangExpressionToPlanTranslator;
 import org.apache.asterix.algebra.base.ILangExpressionToPlanTranslatorFactory;
-import org.apache.asterix.api.http.server.QueryServiceRequestParameters;
 import org.apache.asterix.app.result.fields.ExplainOnlyResultsPrinter;
 import org.apache.asterix.common.api.INodeJobTracker;
 import org.apache.asterix.common.api.IResponsePrinter;
@@ -130,7 +129,6 @@ public class APIFramework {
     private static final ObjectWriter OBJECT_WRITER = new 
ObjectMapper().writerWithDefaultPrettyPrinter();
 
     public static final String PREFIX_INTERNAL_PARAMETERS = "_internal";
-    public static final String REQUEST_MAX_WARNINGS = 
PREFIX_INTERNAL_PARAMETERS + "_max_warn";
 
     // A white list of supported configurable parameters.
     private static final Set<String> CONFIGURABLE_PARAMETER_NAMES =
@@ -246,9 +244,7 @@ public class APIFramework {
         builder.setMissableTypeComputer(MissableTypeComputer.INSTANCE);
         builder.setConflictingTypeResolver(ConflictingTypeResolver.INSTANCE);
         builder.setWarningCollector(warningCollector);
-        String maxWarnings = 
metadataProvider.getProperty(APIFramework.REQUEST_MAX_WARNINGS);
-        builder.setMaxWarnings(
-                maxWarnings != null ? Long.parseLong(maxWarnings) : 
QueryServiceRequestParameters.DEFAULT_MAX_WARNINGS);
+        builder.setMaxWarnings(conf.getMaxWarnings());
 
         int parallelism = getParallelism((String) 
querySpecificConfig.get(CompilerProperties.COMPILER_PARALLELISM_KEY),
                 compilerProperties.getParallelism());
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 033bb16..69d5c70 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
@@ -88,11 +88,11 @@ public class NCQueryServiceServlet extends 
QueryServiceServlet {
             }
             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.isProfile(),
-                    stmtCategoryRestrictionMask, requestReference, 
param.getMaxWarnings());
+            ExecuteStatementRequestMessage requestMsg =
+                    new ExecuteStatementRequestMessage(ncCtx.getNodeId(), 
responseFuture.getFutureId(), queryLanguage,
+                            statementsText, sessionOutput.config(), 
resultProperties.getNcToCcResultProperties(),
+                            param.getClientContextID(), handleUrl, 
optionalParameters, statementParameters,
+                            param.isMultiStatement(), param.isProfile(), 
stmtCategoryRestrictionMask, requestReference);
             execution.start();
             ncMb.sendMessageToPrimaryCC(requestMsg);
             try {
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
index 8dc788c..c82bac2 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
@@ -625,7 +625,7 @@ public class QueryServiceServlet extends 
AbstractQueryApiServlet {
         }
         IParser parser = 
compilationProvider.getParserFactory().createParser(statementsText);
         List<Statement> statements = parser.parse();
-        long maxWarnings = param.getMaxWarnings();
+        long maxWarnings = sessionOutput.config().getMaxWarnings();
         parser.getWarnings(warnings, maxWarnings);
         long parserTotalWarningsCount = parser.getTotalWarningsCount();
         MetadataManager.INSTANCE.init();
@@ -638,7 +638,7 @@ public class QueryServiceServlet extends 
AbstractQueryApiServlet {
                 .getStatementCategoryRestrictionMask(param.isReadOnly());
         IRequestParameters requestParameters = new 
org.apache.asterix.app.translator.RequestParameters(requestReference,
                 statementsText, getResultSet(), resultProperties, stats, null, 
param.getClientContextID(),
-                optionalParameters, stmtParams, param.isMultiStatement(), 
stmtCategoryRestriction, maxWarnings);
+                optionalParameters, stmtParams, param.isMultiStatement(), 
stmtCategoryRestriction);
         translator.compileAndExecute(getHyracksClientConnection(), 
requestParameters);
         execution.end();
         translator.getWarnings(warnings, maxWarnings - warnings.size());
@@ -698,6 +698,7 @@ public class QueryServiceServlet extends 
AbstractQueryApiServlet {
                 SessionConfig.PlanFormat.JSON, LOGGER);
         sessionConfig.setFmt(format);
         sessionConfig.setPlanFormat(planFormat);
+        sessionConfig.setMaxWarnings(param.getMaxWarnings());
         sessionConfig.set(SessionConfig.FORMAT_WRAPPER_ARRAY, true);
         sessionConfig.set(SessionConfig.OOB_EXPR_TREE, 
param.isExpressionTree());
         sessionConfig.set(SessionConfig.OOB_REWRITTEN_EXPR_TREE, 
param.isRewrittenExpressionTree());
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 7396035..e58ad06 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
@@ -89,13 +89,12 @@ public final class ExecuteStatementRequestMessage 
implements ICcAddressedMessage
     private final int statementCategoryRestrictionMask;
     private final boolean profile;
     private final IRequestReference requestReference;
-    private final long maxWarnings;
 
     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, 
boolean profile,
-            int statementCategoryRestrictionMask, IRequestReference 
requestReference, long maxWarnings) {
+            int statementCategoryRestrictionMask, IRequestReference 
requestReference) {
         this.requestNodeId = requestNodeId;
         this.requestMessageId = requestMessageId;
         this.lang = lang;
@@ -110,7 +109,6 @@ public final class ExecuteStatementRequestMessage 
implements ICcAddressedMessage
         this.statementCategoryRestrictionMask = 
statementCategoryRestrictionMask;
         this.profile = profile;
         this.requestReference = requestReference;
-        this.maxWarnings = maxWarnings;
     }
 
     @Override
@@ -133,6 +131,7 @@ public final class ExecuteStatementRequestMessage 
implements ICcAddressedMessage
             List<Warning> warnings = new ArrayList<>();
             IParser parser = 
compilationProvider.getParserFactory().createParser(statementsText);
             List<Statement> statements = parser.parse();
+            long maxWarnings = sessionConfig.getMaxWarnings();
             parser.getWarnings(warnings, maxWarnings);
             long parserTotalWarningsCount = parser.getTotalWarningsCount();
             StringWriter outWriter = new StringWriter(256);
@@ -152,7 +151,7 @@ public final class ExecuteStatementRequestMessage 
implements ICcAddressedMessage
             Map<String, IAObject> stmtParams = 
RequestParameters.deserializeParameterValues(statementParameters);
             final IRequestParameters requestParameters = new 
RequestParameters(requestReference, statementsText, null,
                     resultProperties, stats, outMetadata, clientContextID, 
optionalParameters, stmtParams,
-                    multiStatement, statementCategoryRestrictionMask, 
maxWarnings);
+                    multiStatement, statementCategoryRestrictionMask);
             translator.compileAndExecute(ccApp.getHcc(), requestParameters);
             translator.getWarnings(warnings, maxWarnings - warnings.size());
             stats.updateTotalWarningsCount(parserTotalWarningsCount);
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index 72bc2e7..aed358e 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -290,9 +290,7 @@ public class QueryTranslator extends AbstractLangTranslator 
implements IStatemen
         final Stats stats = requestParameters.getStats();
         final ResultMetadata outMetadata = requestParameters.getOutMetadata();
         final Map<String, IAObject> stmtParams = 
requestParameters.getStatementParameters();
-        final long requestMaxWarnings = requestParameters.getMaxWarnings();
-        config.put(APIFramework.REQUEST_MAX_WARNINGS, 
String.valueOf(requestMaxWarnings));
-        warningCollector.setMaxWarnings(requestMaxWarnings);
+        warningCollector.setMaxWarnings(sessionConfig.getMaxWarnings());
         try {
             for (Statement stmt : statements) {
                 if (sessionConfig.is(SessionConfig.FORMAT_HTML)) {
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/RequestParameters.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/RequestParameters.java
index 3b15e1c..90602e7 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/RequestParameters.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/RequestParameters.java
@@ -23,7 +23,6 @@ import java.io.DataOutputStream;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.asterix.api.http.server.QueryServiceRequestParameters;
 import org.apache.asterix.common.api.IRequestReference;
 import org.apache.asterix.external.parser.JSONDataParser;
 import org.apache.asterix.formats.nontagged.SerializerDeserializerProvider;
@@ -57,21 +56,19 @@ public class RequestParameters implements 
IRequestParameters {
     private final boolean multiStatement;
     private final int statementCategoryRestrictionMask;
     private final String statement;
-    private final long maxWarnings;
 
     public RequestParameters(IRequestReference requestReference, String 
statement, IResultSet resultSet,
             ResultProperties resultProperties, Stats stats, 
IStatementExecutor.ResultMetadata outMetadata,
             String clientContextId, Map<String, String> optionalParameters, 
Map<String, IAObject> statementParameters,
             boolean multiStatement) {
         this(requestReference, statement, resultSet, resultProperties, stats, 
outMetadata, clientContextId,
-                optionalParameters, statementParameters, multiStatement, 
NO_CATEGORY_RESTRICTION_MASK,
-                QueryServiceRequestParameters.DEFAULT_MAX_WARNINGS);
+                optionalParameters, statementParameters, multiStatement, 
NO_CATEGORY_RESTRICTION_MASK);
     }
 
     public RequestParameters(IRequestReference requestReference, String 
statement, IResultSet resultSet,
             ResultProperties resultProperties, Stats stats, 
IStatementExecutor.ResultMetadata outMetadata,
             String clientContextId, Map<String, String> optionalParameters, 
Map<String, IAObject> statementParameters,
-            boolean multiStatement, int statementCategoryRestrictionMask, long 
maxWarnings) {
+            boolean multiStatement, int statementCategoryRestrictionMask) {
         this.requestReference = requestReference;
         this.statement = statement;
         this.resultSet = resultSet;
@@ -83,7 +80,6 @@ public class RequestParameters implements IRequestParameters {
         this.statementParameters = statementParameters;
         this.multiStatement = multiStatement;
         this.statementCategoryRestrictionMask = 
statementCategoryRestrictionMask;
-        this.maxWarnings = maxWarnings;
     }
 
     @Override
@@ -127,11 +123,6 @@ public class RequestParameters implements 
IRequestParameters {
     }
 
     @Override
-    public long getMaxWarnings() {
-        return maxWarnings;
-    }
-
-    @Override
     public Map<String, IAObject> getStatementParameters() {
         return statementParameters;
     }

Reply via email to