>From Ali Alsuliman <ali.al.solai...@gmail.com>:

Ali Alsuliman has submitted this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18006 )

Change subject: [NO ISSUE][API] Add query request param to indicate source
......................................................................

[NO ISSUE][API] Add query request param to indicate source

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

Details:
Add parameter 'source' to QueryServiceRequestParameters
to indicate the source of the request.

Change-Id: I04e2e2336d6bca82b4fa44a43cb188cfa9e807f7
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18006
Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Reviewed-by: Michael Blow <mb...@apache.org>
---
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceRequestParameters.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RedactionUtil.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
5 files changed, 58 insertions(+), 19 deletions(-)

Approvals:
  Michael Blow: Looks good to me, approved
  Jenkins: Verified; Verified




diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceRequestParameters.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceRequestParameters.java
index b6913e4..20d79d5 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceRequestParameters.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceRequestParameters.java
@@ -19,6 +19,8 @@

 package org.apache.asterix.api.http.server;

+import static 
org.apache.asterix.utils.RedactionUtil.REDACTED_SENSITIVE_ENTRY_VALUE;
+
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -43,6 +45,7 @@
 import org.apache.hyracks.http.api.IServletRequest;
 import org.apache.hyracks.http.server.utils.HttpUtil;
 import org.apache.hyracks.util.JSONUtil;
+import org.apache.hyracks.util.LogRedactionUtil;

 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -80,7 +83,8 @@
         SIGNATURE("signature"),
         MULTI_STATEMENT("multi-statement"),
         MAX_WARNINGS("max-warnings"),
-        SQL_COMPAT("sql-compat");
+        SQL_COMPAT("sql-compat"),
+        SOURCE("source");

         private final String str;

@@ -124,6 +128,7 @@
     private String statement;
     private String clientContextID;
     private String dataverse;
+    private String source;
     private ClientType clientType = ClientType.ASTERIX;
     private OutputFormat format = OutputFormat.CLEAN_JSON;
     private ResultDelivery mode = ResultDelivery.IMMEDIATE;
@@ -172,6 +177,14 @@
         this.statement = statement;
     }

+    public String getSource() {
+        return source;
+    }
+
+    public void setSource(String source) {
+        this.source = source;
+    }
+
     public OutputFormat getFormat() {
         return format;
     }
@@ -380,7 +393,8 @@
         ObjectNode object = OBJECT_MAPPER.createObjectNode();
         object.put("host", host);
         object.put("path", path);
-        object.put("statement", statement != null ? JSONUtil.escape(new 
StringBuilder(), statement).toString() : null);
+        object.put("statement", statement != null
+                ? LogRedactionUtil.statement(JSONUtil.escape(new 
StringBuilder(), statement).toString()) : null);
         object.put("pretty", pretty);
         object.put("mode", mode.getName());
         object.put("clientContextID", clientContextID);
@@ -402,9 +416,10 @@
         object.put("readOnly", readOnly);
         object.put("maxWarnings", maxWarnings);
         object.put("sqlCompat", sqlCompatMode);
+        object.put("source", source);
         if (statementParams != null) {
             for (Map.Entry<String, JsonNode> statementParam : 
statementParams.entrySet()) {
-                object.set('$' + statementParam.getKey(), 
statementParam.getValue());
+                object.set('$' + statementParam.getKey(), 
REDACTED_SENSITIVE_ENTRY_VALUE);
             }
         }
         return object;
@@ -486,6 +501,7 @@
         setSignature(parseBoolean(req, Parameter.SIGNATURE.str(), valGetter, 
isSignature()));
         setClientType(parseIfExists(req, Parameter.CLIENT_TYPE.str(), 
valGetter, getClientType(), clientTypes::get));
         setSQLCompatMode(parseBoolean(req, Parameter.SQL_COMPAT.str(), 
valGetter, isSQLCompatMode()));
+        setSource(valGetter.apply(req, Parameter.SOURCE.str()));
     }

     protected void setExtraParams(JsonNode jsonRequest) throws 
HyracksDataException {
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 1966a88..9a8c0d5 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
@@ -90,7 +90,6 @@
 import org.apache.hyracks.http.api.IServletRequest;
 import org.apache.hyracks.http.api.IServletResponse;
 import org.apache.hyracks.http.server.utils.HttpUtil;
-import org.apache.hyracks.util.LogRedactionUtil;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;

@@ -278,7 +277,10 @@
             if (forceReadOnly) {
                 param.setReadOnly(true);
             }
-            LOGGER.info(() -> "handleRequest: " + 
LogRedactionUtil.statement(param.toString()));
+            if (LOGGER.isInfoEnabled()) {
+                LOGGER.info("handleRequest: uuid={}, clientContextID={}, {}", 
requestRef.getUuid(),
+                        param.getClientContextID(), param.toString());
+            }
             delivery = param.getMode();
             setSessionConfig(sessionOutput, param, delivery);
             final ResultProperties resultProperties = new 
ResultProperties(delivery, param.getMaxResultReads());
@@ -429,14 +431,12 @@
                     executionState.setStatus(ResultStatus.FATAL, 
HttpResponseStatus.BAD_REQUEST);
                     return true;
                 case REQUEST_TIMEOUT:
-                    LOGGER.info(() -> "handleException: request execution 
timed out: "
-                            + LogRedactionUtil.userData(param.toString()));
+                    LOGGER.info(() -> "handleException: request execution 
timed out: " + param.toString());
                     executionState.setStatus(ResultStatus.TIMEOUT, 
HttpResponseStatus.OK);
                     return true;
                 case REJECT_NODE_UNREGISTERED:
                 case REJECT_BAD_CLUSTER_STATE:
-                    LOGGER.warn(() -> "handleException: " + ex.getMessage() + 
": "
-                            + LogRedactionUtil.userData(param.toString()));
+                    LOGGER.warn(() -> "handleException: " + ex.getMessage() + 
": " + param.toString());
                     executionState.setStatus(ResultStatus.FATAL, 
HttpResponseStatus.SERVICE_UNAVAILABLE);
                     return true;
                 default:
@@ -456,11 +456,9 @@
             QueryServiceRequestParameters param, IServletResponse response) {
         if (t instanceof org.apache.asterix.lang.sqlpp.parser.TokenMgrError || 
t instanceof AlgebricksException) {
             if (LOGGER.isDebugEnabled()) {
-                LOGGER.debug("handleException: {}: {}", t.getMessage(), 
LogRedactionUtil.statement(param.toString()),
-                        t);
+                LOGGER.debug("handleException: {}: {}", t.getMessage(), 
param.toString(), t);
             } else {
-                LOGGER.info(() -> "handleException: " + t.getMessage() + ": "
-                        + LogRedactionUtil.statement(param.toString()));
+                LOGGER.info(() -> "handleException: " + t.getMessage() + ": " 
+ param.toString());
             }
             executionState.setStatus(ResultStatus.FATAL, 
HttpResponseStatus.BAD_REQUEST);
             return;
@@ -472,7 +470,7 @@
                 return;
             }
         }
-        LOGGER.warn(() -> "handleException: unexpected exception: " + 
LogRedactionUtil.userData(param.toString()), t);
+        LOGGER.warn(() -> "handleException: unexpected exception: " + 
param.toString(), t);
         executionState.setStatus(ResultStatus.FATAL, 
HttpResponseStatus.INTERNAL_SERVER_ERROR);
     }

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 05bc87b..e314177 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
@@ -243,7 +243,8 @@

     @Override
     public String toString() {
-        return String.format("%s(id=%s, from=%s, uuid=%s): %s", 
getClass().getSimpleName(), requestMessageId,
-                requestNodeId, requestReference.getUuid(), 
LogRedactionUtil.statement(statementsText));
+        return String.format("%s(id=%s, from=%s, uuid=%s, clientContextID=%s): 
%s", getClass().getSimpleName(),
+                requestMessageId, requestNodeId, requestReference.getUuid(), 
clientContextID,
+                LogRedactionUtil.statement(statementsText));
     }
 }
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 afdd035..6b40cbf 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
@@ -4837,9 +4837,9 @@
             // ensure request not cancelled before running job
             ensureNotCancelled(clientRequest);
             final JobId jobId = JobUtils.runJob(hcc, jobSpec, jobFlags, false);
-            if (LOGGER.isDebugEnabled()) {
-                LOGGER.debug("createAndRunJob jobId:{}, uuid:{}", jobId,
-                        requestParameters.getRequestReference().getUuid());
+            if (LOGGER.isInfoEnabled()) {
+                LOGGER.info("Created job {} for query uuid:{}, 
clientContextID:{}", jobId,
+                        requestParameters.getRequestReference().getUuid(), 
requestParameters.getClientContextId());
             }
             clientRequest.setJobId(jobId);
             if (jId != null) {
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RedactionUtil.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RedactionUtil.java
index 156b78a..d835664 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RedactionUtil.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RedactionUtil.java
@@ -26,6 +26,8 @@

 import org.apache.hyracks.util.ILogRedactor;

+import com.fasterxml.jackson.databind.node.TextNode;
+
 public class RedactionUtil {
     private RedactionUtil() {
         throw new AssertionError("do not instantiate");
@@ -34,6 +36,7 @@
     private static final Pattern STATEMENT_PATTERN =
             Pattern.compile("(" + SECRET_ACCESS_KEY_FIELD_NAME + ").*", 
CASE_INSENSITIVE | DOTALL);
     private static final String STATEMENT_REPLACEMENT = "$1...<redacted 
sensitive data>";
+    public static final TextNode REDACTED_SENSITIVE_ENTRY_VALUE = new 
TextNode("<redacted sensitive entry>");

     public static final ILogRedactor LOG_REDACTOR = new ILogRedactor() {
         @Override

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

Gerrit-Project: asterixdb
Gerrit-Branch: neo
Gerrit-Change-Id: I04e2e2336d6bca82b4fa44a43cb188cfa9e807f7
Gerrit-Change-Number: 18006
Gerrit-PatchSet: 2
Gerrit-Owner: Ali Alsuliman <ali.al.solai...@gmail.com>
Gerrit-Reviewer: Ali Alsuliman <ali.al.solai...@gmail.com>
Gerrit-Reviewer: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-MessageType: merged

Reply via email to