Repository: ambari
Updated Branches:
  refs/heads/branch-dev-logsearch 4aa6595b7 -> 80094e91b


AMBARI-18310. Fix regression issues for logsearch refactor (escaping) (oleewere)

Change-Id: I3bc878f2e4ccb2068cb12b8e479c5936edb49d11


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2da803c4
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2da803c4
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2da803c4

Branch: refs/heads/branch-dev-logsearch
Commit: 2da803c4b78f369268404537409bce0897e75a55
Parents: 4aa6595
Author: oleewere <oleew...@gmail.com>
Authored: Wed Oct 5 16:09:17 2016 +0200
Committer: oleewere <oleew...@gmail.com>
Committed: Fri Oct 7 11:56:37 2016 +0200

----------------------------------------------------------------------
 .../AbstractAuditLogRequestQueryConverter.java         |  4 ++--
 .../converter/BaseServiceLogRequestQueryConverter.java |  9 ++++++---
 .../org/apache/ambari/logsearch/dao/SolrDaoBase.java   |  2 ++
 .../ambari/logsearch/manager/ServiceLogsManager.java   | 10 ++--------
 .../ambari/logsearch/rest/ServiceLogsResource.java     |  4 ----
 .../org/apache/ambari/logsearch/util/SolrUtil.java     | 13 +++++++++++++
 .../webapp/scripts/views/audit/AuditTabLayoutView.js   |  4 ++--
 .../scripts/views/tabs/HierarchyTabLayoutView.js       |  4 ++--
 .../src/main/webapp/scripts/views/tabs/LogFileView.js  |  4 ++--
 .../BaseServiceLogRequestQueryConverterTest.java       |  7 ++++---
 .../controller/logging/LogLevelQueryResponse.java      |  2 ++
 .../server/controller/logging/LogQueryResponse.java    |  2 ++
 12 files changed, 39 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/2da803c4/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/converter/AbstractAuditLogRequestQueryConverter.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/converter/AbstractAuditLogRequestQueryConverter.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/converter/AbstractAuditLogRequestQueryConverter.java
index e4bce01..5656c88 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/converter/AbstractAuditLogRequestQueryConverter.java
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/converter/AbstractAuditLogRequestQueryConverter.java
@@ -44,8 +44,8 @@ public abstract class 
AbstractAuditLogRequestQueryConverter<SOURCE extends BaseL
     } else {
       defaultSortOrder = new Sort.Order(Sort.Direction.DESC, AUDIT_EVTTIME);
     }
-    Sort.Order secuqnceIdOrder = new Sort.Order(Sort.Direction.DESC, 
SEQUENCE_ID);
-    return new Sort(defaultSortOrder, secuqnceIdOrder);
+    Sort.Order sequenceIdOrder = new Sort.Order(Sort.Direction.DESC, 
SEQUENCE_ID);
+    return new Sort(defaultSortOrder, sequenceIdOrder);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/ambari/blob/2da803c4/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/converter/BaseServiceLogRequestQueryConverter.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/converter/BaseServiceLogRequestQueryConverter.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/converter/BaseServiceLogRequestQueryConverter.java
index 4894bfb..8270f2d 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/converter/BaseServiceLogRequestQueryConverter.java
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/converter/BaseServiceLogRequestQueryConverter.java
@@ -22,6 +22,7 @@ import org.apache.ambari.logsearch.common.LogSearchConstants;
 import org.apache.ambari.logsearch.common.LogType;
 import org.apache.ambari.logsearch.model.request.impl.BaseServiceLogRequest;
 import org.apache.ambari.logsearch.util.SolrUtil;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.solr.core.query.SimpleQuery;
@@ -49,7 +50,9 @@ public class BaseServiceLogRequestQueryConverter extends 
AbstractServiceLogReque
     addEqualsFilterQuery(query, PATH, 
SolrUtil.escapeQueryChars(request.getFileName()));
     addEqualsFilterQuery(query, COMPONENT, 
SolrUtil.escapeQueryChars(request.getComponentName()));
     addEqualsFilterQuery(query, BUNDLE_ID, request.getBundleId());
-    addInFilterQuery(query, LEVEL, levels);
+    if (CollectionUtils.isNotEmpty(levels)){
+      addInFilterQuery(query, LEVEL, levels);
+    }
     addRangeFilter(query, LOGTIME, request.getFrom(), request.getTo());
     return query;
   }
@@ -65,8 +68,8 @@ public class BaseServiceLogRequestQueryConverter extends 
AbstractServiceLogReque
     } else {
       defaultSortOrder = new Sort.Order(Sort.Direction.DESC, LOGTIME);
     }
-    Sort.Order secuqnceIdOrder = new Sort.Order(Sort.Direction.DESC, 
SEQUENCE_ID);
-    return new Sort(defaultSortOrder, secuqnceIdOrder);
+    Sort.Order sequenceIdOrder = new Sort.Order(Sort.Direction.DESC, 
SEQUENCE_ID);
+    return new Sort(defaultSortOrder, sequenceIdOrder);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/ambari/blob/2da803c4/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/SolrDaoBase.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/SolrDaoBase.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/SolrDaoBase.java
index d9a9464..77eb51f 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/SolrDaoBase.java
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/SolrDaoBase.java
@@ -23,6 +23,7 @@ import org.apache.ambari.logsearch.common.LogSearchContext;
 import org.apache.ambari.logsearch.common.LogType;
 import org.apache.ambari.logsearch.common.MessageEnums;
 import org.apache.ambari.logsearch.util.RESTErrorUtil;
+import org.apache.ambari.logsearch.util.SolrUtil;
 import org.apache.log4j.Logger;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrQuery;
@@ -49,6 +50,7 @@ public abstract class SolrDaoBase {
   }
 
   public QueryResponse process(SolrQuery solrQuery, String event) {
+    SolrUtil.removeDoubleOrTripleEscapeFromFilters(solrQuery);
     if (getSolrClient() != null) {
       event = event == null ? solrQuery.get("event") : event;
       solrQuery.remove("event");

http://git-wip-us.apache.org/repos/asf/ambari/blob/2da803c4/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/ServiceLogsManager.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/ServiceLogsManager.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/ServiceLogsManager.java
index 6e319da..d276769 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/ServiceLogsManager.java
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/ServiceLogsManager.java
@@ -216,16 +216,10 @@ public class ServiceLogsManager extends 
ManagerBase<SolrServiceLogData, ServiceL
   public LogListResponse getPageByKeyword(ServiceLogRequest request, String 
event)
     throws SolrServerException {
     String defaultChoice = "0";
-    String key = request.getKeyWord();
-    if (StringUtils.isBlank(key)) {
+    String keyword = request.getKeyWord();
+    if (StringUtils.isBlank(keyword)) {
       throw RESTErrorUtil.createRESTException("Keyword was not given", 
MessageEnums.DATA_NOT_FOUND);
     }
-    String keyword = SolrUtil.escapeForStandardTokenizer(key);
-
-    if (keyword.startsWith("\"") && keyword.endsWith("\"")) {
-      keyword = keyword.substring(1);
-      keyword = keyword.substring(0, keyword.length() - 1);
-    }
 
     boolean isNext = !defaultChoice.equals(request.getKeywordType()); // 1 is 
next, 0 is previous
     return getPageForKeywordByType(request, keyword, isNext, event);

http://git-wip-us.apache.org/repos/asf/ambari/blob/2da803c4/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/rest/ServiceLogsResource.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/rest/ServiceLogsResource.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/rest/ServiceLogsResource.java
index d6ceca5..492a5b2 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/rest/ServiceLogsResource.java
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/rest/ServiceLogsResource.java
@@ -47,7 +47,6 @@ import 
org.apache.ambari.logsearch.model.response.NodeListResponse;
 import org.apache.ambari.logsearch.model.response.ServiceLogResponse;
 import org.apache.ambari.logsearch.manager.ServiceLogsManager;
 import org.springframework.context.annotation.Scope;
-import org.springframework.core.convert.ConversionService;
 
 import static 
org.apache.ambari.logsearch.doc.DocConstants.ServiceOperationDescriptions.*;
 
@@ -60,9 +59,6 @@ public class ServiceLogsResource {
   @Inject
   private ServiceLogsManager serviceLogsManager;
 
-  @Inject
-  private ConversionService conversionService;
-
   @GET
   @Produces({"application/json"})
   @ApiOperation(SEARCH_LOGS_OD)

http://git-wip-us.apache.org/repos/asf/ambari/blob/2da803c4/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SolrUtil.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SolrUtil.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SolrUtil.java
index 51a0dda..6369107 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SolrUtil.java
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SolrUtil.java
@@ -19,7 +19,9 @@
 
 package org.apache.ambari.logsearch.util;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.ambari.logsearch.common.LogSearchConstants;
@@ -146,6 +148,17 @@ public class SolrUtil {
 
     return newSearch.replace(" ", "\\ ");
   }
+
+  public static void removeDoubleOrTripleEscapeFromFilters(SolrQuery 
solrQuery) {
+    String[] filterQueries = solrQuery.getFilterQueries();
+    List<String> newArray = new ArrayList<>();
+    if (filterQueries != null && filterQueries.length > 0) {
+      for (String filterQuery : filterQueries) {
+        newArray.add(filterQuery.replaceAll("\\\\\\\\\\\\|\\\\\\\\", "\\\\"));
+      }
+    }
+    solrQuery.setFilterQueries(newArray.toArray(new String[0]));
+  }
   
 
   public static boolean isSolrFieldNumber(String fieldType, Map<String, 
String> schemaFieldsMap) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/2da803c4/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/audit/AuditTabLayoutView.js
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/audit/AuditTabLayoutView.js
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/audit/AuditTabLayoutView.js
index 371edd2..4e09e88 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/audit/AuditTabLayoutView.js
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/audit/AuditTabLayoutView.js
@@ -193,7 +193,7 @@ define(['require',
               var obj = ViewUtils.replaceColumnNamesWithKeys(searchCollection, 
Globals.invertedAuditLogMappings, true);
               return {
                 includeQuery: JSON.stringify(obj),
-                iMessage: query
+                query: query
               }
             }
           }));
@@ -207,7 +207,7 @@ define(['require',
               var obj = ViewUtils.replaceColumnNamesWithKeys(searchCollection, 
Globals.invertedAuditLogMappings, true);
               return {
                 excludeQuery: JSON.stringify(obj),
-                eMessage: query
+                query: query
               }
             }
           }));

http://git-wip-us.apache.org/repos/asf/ambari/blob/2da803c4/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/tabs/HierarchyTabLayoutView.js
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/tabs/HierarchyTabLayoutView.js
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/tabs/HierarchyTabLayoutView.js
index c504afa..43ee5db 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/tabs/HierarchyTabLayoutView.js
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/tabs/HierarchyTabLayoutView.js
@@ -287,7 +287,7 @@ define(['require',
               var obj = ViewUtils.replaceColumnNamesWithKeys(searchCollection, 
Globals.invertedServiceLogMappings, false);
               return {
                 includeQuery: JSON.stringify(obj),
-                iMessage: query
+                query: query
               }
             }
           }));
@@ -302,7 +302,7 @@ define(['require',
               var obj = ViewUtils.replaceColumnNamesWithKeys(searchCollection, 
Globals.invertedServiceLogMappings, false);
               return {
                 excludeQuery: JSON.stringify(obj),
-                eMessage: query
+                query: query
               }
             }
           }));

http://git-wip-us.apache.org/repos/asf/ambari/blob/2da803c4/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/tabs/LogFileView.js
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/tabs/LogFileView.js
 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/tabs/LogFileView.js
index 2d39e36..a4e3a1a 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/tabs/LogFileView.js
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/views/tabs/LogFileView.js
@@ -318,7 +318,7 @@ define(['require',
                     var obj = 
ViewUtils.replaceColumnNamesWithKeys(searchCollection, 
Globals.invertedServiceLogMappings, false);
                     return {
                       includeQuery: JSON.stringify(obj),
-                      iMessage: query
+                      query: query
                     }
                   }
                 }));
@@ -334,7 +334,7 @@ define(['require',
                     var obj = 
ViewUtils.replaceColumnNamesWithKeys(searchCollection, 
Globals.invertedServiceLogMappings, false);
                     return {
                       excludeQuery: JSON.stringify(obj),
-                      eMessage: query
+                      query: query
                     }
                   }
                 }));

http://git-wip-us.apache.org/repos/asf/ambari/blob/2da803c4/ambari-logsearch/ambari-logsearch-portal/src/test/java/org/apache/ambari/logsearch/converter/BaseServiceLogRequestQueryConverterTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-portal/src/test/java/org/apache/ambari/logsearch/converter/BaseServiceLogRequestQueryConverterTest.java
 
b/ambari-logsearch/ambari-logsearch-portal/src/test/java/org/apache/ambari/logsearch/converter/BaseServiceLogRequestQueryConverterTest.java
index 1ade3c0..a75037b 100644
--- 
a/ambari-logsearch/ambari-logsearch-portal/src/test/java/org/apache/ambari/logsearch/converter/BaseServiceLogRequestQueryConverterTest.java
+++ 
b/ambari-logsearch/ambari-logsearch-portal/src/test/java/org/apache/ambari/logsearch/converter/BaseServiceLogRequestQueryConverterTest.java
@@ -19,6 +19,7 @@
 package org.apache.ambari.logsearch.converter;
 
 import org.apache.ambari.logsearch.model.request.impl.ServiceLogRequest;
+import org.apache.ambari.logsearch.util.SolrUtil;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.junit.Before;
 import org.junit.Test;
@@ -42,17 +43,17 @@ public class BaseServiceLogRequestQueryConverterTest 
extends AbstractRequestConv
     ServiceLogRequest logRequest = new ServiceLogRequest();
     fillBaseLogRequestWithTestData(logRequest);
     logRequest.setLevel("FATAL,ERROR,WARN,UNKNOWN");
-    logRequest.setFileName("myfile");
+    logRequest.setFileName("/var/log/myfile-*-hdfs.log");
     logRequest.setComponentName("component");
     logRequest.setHostName("logsearch.com");
     // WHEN
     SimpleQuery query = underTest.convert(logRequest);
     DefaultQueryParser defaultQueryParser = new DefaultQueryParser();
     SolrQuery solrQuery = defaultQueryParser.doConstructSolrQuery(query);
-
+    SolrUtil.removeDoubleOrTripleEscapeFromFilters(solrQuery);
     // THEN
     
assertEquals("?q=*%3A*&start=0&rows=25&fq=log_message%3A*myincludemessage*&fq=-log_message%3A*myexcludemessage*"
 +
-      
"&fq=host%3Alogsearch.com&fq=path%3Amyfile&fq=type%3Acomponent&fq=level%3A%28FATAL+ERROR+WARN+UNKNOWN%29"
 +
+      
"&fq=host%3Alogsearch.com&fq=path%3A%5C%2Fvar%5C%2Flog%5C%2Fmyfile%5C-%5C*%5C-hdfs.log&fq=type%3Acomponent&fq=level%3A%28FATAL+ERROR+WARN+UNKNOWN%29"
 +
       
"&fq=logtime%3A%5B2016-09-13T22%3A00%3A01.000Z+TO+2016-09-14T22%3A00%3A01.000Z%5D&sort=logtime+desc%2Cseq_num+desc",
       solrQuery.toQueryString());
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/2da803c4/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LogLevelQueryResponse.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LogLevelQueryResponse.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LogLevelQueryResponse.java
index 1280877..27e4c9c 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LogLevelQueryResponse.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LogLevelQueryResponse.java
@@ -17,10 +17,12 @@
  */
 package org.apache.ambari.server.controller.logging;
 
+import org.codehaus.jackson.annotate.JsonIgnoreProperties;
 import org.codehaus.jackson.annotate.JsonProperty;
 
 import java.util.List;
 
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class LogLevelQueryResponse {
 
   private String startIndex;

http://git-wip-us.apache.org/repos/asf/ambari/blob/2da803c4/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LogQueryResponse.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LogQueryResponse.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LogQueryResponse.java
index 9bde7a5..feba8c2 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LogQueryResponse.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LogQueryResponse.java
@@ -18,6 +18,7 @@
 
 package org.apache.ambari.server.controller.logging;
 
+import org.codehaus.jackson.annotate.JsonIgnoreProperties;
 import org.codehaus.jackson.annotate.JsonProperty;
 import org.codehaus.jackson.map.util.JSONPObject;
 
@@ -29,6 +30,7 @@ import java.util.List;
  * a call to the LogSearch service.
  *
  */
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class LogQueryResponse {
 
 

Reply via email to