[5/8] lens git commit: LENS-1464: One or two queued queries failing with ConcurrentModificationException on restart

2017-10-04 Thread raju
LENS-1464: One or two queued queries failing with 
ConcurrentModificationException on restart


Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/1d667975
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/1d667975
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/1d667975

Branch: refs/heads/current-release-line
Commit: 1d6679754240f2980e9bffd278a3ee04ac98db02
Parents: 0f58445
Author: Rajat Khandelwal 
Authored: Wed Aug 30 15:59:23 2017 +0530
Committer: rajub 
Committed: Thu Oct 5 11:12:56 2017 +0800

--
 lens-server/pom.xml |  4 +--
 .../server/query/QueryExecutionServiceImpl.java | 32 +---
 2 files changed, 16 insertions(+), 20 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/lens/blob/1d667975/lens-server/pom.xml
--
diff --git a/lens-server/pom.xml b/lens-server/pom.xml
index 2065f04..f56f7bc 100644
--- a/lens-server/pom.xml
+++ b/lens-server/pom.xml
@@ -402,8 +402,8 @@
   
 
 
-  1.7
-  1.7
+  1.8
+  1.8
   enunciate.xml
 
   

http://git-wip-us.apache.org/repos/asf/lens/blob/1d667975/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
--
diff --git 
a/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
 
b/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
index e70d290..4d141e5 100644
--- 
a/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
+++ 
b/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
@@ -3476,27 +3476,23 @@ public class QueryExecutionServiceImpl extends 
BaseLensService implements QueryE
 
 // Add resources if either they haven't been marked as added on the 
session, or if Hive driver says they need
 // to be added to the corresponding hive driver
-if (!hiveDriver.areDBResourcesAddedForSession(sessionIdentifier, 
ctx.getDatabase())) {
-  Collection dbResources = 
session.getDBResources(ctx.getDatabase());
-
-  if (CollectionUtils.isNotEmpty(dbResources)) {
-log.info("Proceeding to add resources for DB {} for query {} 
resources: {}", session.getCurrentDatabase(),
-  ctx.getLogHandle(), dbResources);
-
-List failedDBResources = addResources(dbResources, 
sessionHandle, hiveDriver);
-Iterator itr = dbResources.iterator();
-while (itr.hasNext()) {
-  ResourceEntry res = itr.next();
-  if (!failedDBResources.contains(res)) {
-itr.remove();
-  }
+synchronized (session) {
+  if (!hiveDriver.areDBResourcesAddedForSession(sessionIdentifier, 
ctx.getDatabase())) {
+Collection dbResources = 
session.getDBResources(ctx.getDatabase());
+
+if (CollectionUtils.isNotEmpty(dbResources)) {
+  log.info("Proceeding to add resources for DB {} for query {} 
resources: {}", session.getCurrentDatabase(),
+ctx.getLogHandle(), dbResources);
+
+  List failedDBResources = addResources(dbResources, 
sessionHandle, hiveDriver);
+  dbResources.removeIf(res -> !failedDBResources.contains(res));
+} else {
+  log.info("No need to add DB resources for session: {} db= {}", 
sessionIdentifier,
+session.getCurrentDatabase());
 }
-  } else {
-log.info("No need to add DB resources for session: {} db= {}", 
sessionIdentifier, session.getCurrentDatabase());
+hiveDriver.setResourcesAddedForSession(sessionIdentifier, 
ctx.getDatabase());
   }
-  hiveDriver.setResourcesAddedForSession(sessionIdentifier, 
ctx.getDatabase());
 }
-
 // Get pending session resources which needed to be added for this database
 Collection pendingResources =
   session.getPendingSessionResourcesForDatabase(ctx.getDatabase());



[4/8] lens git commit: LENS-1475 : Override equals(Object obj) and hashcode() methods of SegmentationCandidate

2017-10-04 Thread raju
LENS-1475 : Override equals(Object obj) and hashcode() methods of 
SegmentationCandidate


Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/0f58445e
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/0f58445e
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/0f58445e

Branch: refs/heads/current-release-line
Commit: 0f58445e0e2bf4262a624f006c678786a00485d5
Parents: ae6bda3
Author: Sushil Mohanty 
Authored: Thu Sep 14 12:42:57 2017 +0530
Committer: rajub 
Committed: Thu Oct 5 11:12:29 2017 +0800

--
 .../lens/cube/parse/SegmentationCandidate.java  | 21 
 1 file changed, 21 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/lens/blob/0f58445e/lens-cube/src/main/java/org/apache/lens/cube/parse/SegmentationCandidate.java
--
diff --git 
a/lens-cube/src/main/java/org/apache/lens/cube/parse/SegmentationCandidate.java 
b/lens-cube/src/main/java/org/apache/lens/cube/parse/SegmentationCandidate.java
index 055d6ef..9378009 100644
--- 
a/lens-cube/src/main/java/org/apache/lens/cube/parse/SegmentationCandidate.java
+++ 
b/lens-cube/src/main/java/org/apache/lens/cube/parse/SegmentationCandidate.java
@@ -404,4 +404,25 @@ public class SegmentationCandidate implements Candidate {
 return cubeQueryContextMap.entrySet().stream().filter(entry -> 
entry.getValue().getPickedCandidate() == null)
   .collect(toMap(Map.Entry::getKey, entry -> 
entry.getValue().getStoragePruningMsgs()));
   }
+
+  @Override
+  public boolean equals(Object obj) {
+if (super.equals(obj)) {
+  return true;
+}
+
+if (obj == null || !(obj instanceof SegmentationCandidate)) {
+  return false;
+}
+
+SegmentationCandidate segmantationCandidate = (SegmentationCandidate) obj;
+return 
(segmantationCandidate.segmentation.getSegments().equals(this.segmentation.getSegments())
+&& 
segmantationCandidate.segmentation.getBaseCube().equals(this.segmentation.getBaseCube()));
+  }
+
+  @Override
+  public int hashCode() {
+return segmentation.hashCode();
+  }
+
 }



[8/8] lens git commit: LENS-1468: Expressions in having clauses are not getting rewritten properly for join queries

2017-10-04 Thread raju
LENS-1468: Expressions in having clauses are not getting rewritten properly for 
join queries


Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/2772efb2
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/2772efb2
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/2772efb2

Branch: refs/heads/current-release-line
Commit: 2772efb275742eb4c03da5e7635bdbcfab63cebc
Parents: 9a678d8
Author: Rajat Khandelwal 
Authored: Sun Sep 3 18:27:59 2017 +0530
Committer: rajub 
Committed: Thu Oct 5 11:13:31 2017 +0800

--
 .../lens/cube/parse/ExpressionResolver.java | 55 +++-
 .../cube/parse/StorageCandidateHQLContext.java  |  4 ++
 .../lens/cube/parse/UnionQueryWriter.java   |  8 +++
 .../lens/cube/parse/TestBaseCubeQueries.java| 32 +++-
 .../resources/schema/cubes/base/basecube.xml|  6 +++
 .../resources/schema/cubes/derived/der2.xml |  2 +
 6 files changed, 92 insertions(+), 15 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/lens/blob/2772efb2/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java
--
diff --git 
a/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java 
b/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java
index 822e25e..553468f 100644
--- a/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java
+++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java
@@ -34,6 +34,7 @@ import org.apache.hadoop.hive.ql.parse.HiveParser;
 
 import org.antlr.runtime.CommonToken;
 
+import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import lombok.*;
 import lombok.extern.slf4j.Slf4j;
@@ -262,7 +263,7 @@ class ExpressionResolver implements ContextRewriter {
 
   @RequiredArgsConstructor
   @ToString
-  private static class PickedExpression {
+  static class PickedExpression {
 private final String srcAlias;
 private final ExprSpecContext pickedCtx;
 private transient ASTNode reWrittenAST = null;
@@ -286,11 +287,13 @@ class ExpressionResolver implements ContextRewriter {
 
   static class ExpressionResolverContext {
 @Getter
-private Map allExprsQueried = new 
HashMap();
-private Map pickedExpressions = new 
HashMap();
+private Map allExprsQueried = new 
HashMap<>();
+private Map pickedExpressions = new 
HashMap<>();
+@Getter
+private Map> 
pickedExpressionsPerCandidate = new HashMap<>();
 private Map nonPickedExpressionsForCandidate = new 
HashMap();
 private final CubeQueryContext cubeql;
-
+private boolean replacedHavingExpressions = false;
 ExpressionResolverContext(CubeQueryContext cubeql) {
   this.cubeql = cubeql;
 }
@@ -411,7 +414,7 @@ class ExpressionResolver implements ContextRewriter {
 // Replace picked expressions in all the base trees
 replacePickedExpressions(sc);
   }
-
+  pickedExpressionsPerCandidate.put(sc, 
Maps.newHashMap(pickedExpressions));
   pickedExpressions.clear();
   nonPickedExpressionsForCandidate.clear();
 
@@ -430,16 +433,42 @@ class ExpressionResolver implements ContextRewriter {
   replaceAST(cubeql, queryAST.getJoinAST());
   replaceAST(cubeql, queryAST.getGroupByAST());
   // Resolve having expression for StorageCandidate
-  if (queryAST.getHavingAST() != null) {
-replaceAST(cubeql, queryAST.getHavingAST());
-  } else if (cubeql.getHavingAST() != null) {
-ASTNode havingCopy = MetastoreUtil.copyAST(cubeql.getHavingAST());
-replaceAST(cubeql, havingCopy);
-queryAST.setHavingAST(havingCopy);
-  }
   replaceAST(cubeql, queryAST.getOrderByAST());
 }
-
+public void replaceHavingExpressions() throws LensException {
+  replaceHavingExpressions(pickedExpressionsPerCandidate);
+}
+public void replaceHavingExpressions(
+  Map> 
pickedExpressionsPerCandidate) throws LensException {
+  if (cubeql.getHavingAST() != null && !replacedHavingExpressions) {
+HQLParser.bft(cubeql.getHavingAST(), visited -> {
+  ASTNode node1 = visited.getNode();
+  int childcount = node1.getChildCount();
+  for (int i = 0; i < childcount; i++) {
+ASTNode current = (ASTNode) node1.getChild(i);
+if (current.getToken().getType() == DOT) {
+  // This is for the case where column name is prefixed by table 
name
+  // or table alias
+  // For example 'select fact.id, dim2.id ...'
+  

[1/8] lens git commit: LENS-1463 : Valid Columns addition in Virtual Fact

2017-10-04 Thread raju
Repository: lens
Updated Branches:
  refs/heads/current-release-line ff4f3726a -> 2772efb27


LENS-1463 : Valid Columns addition in Virtual Fact


Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/358efef9
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/358efef9
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/358efef9

Branch: refs/heads/current-release-line
Commit: 358efef9a3214f2c57655f2ea227b646971ae005
Parents: ff4f372
Author: Rajitha R 
Authored: Mon Aug 28 16:31:33 2017 +0530
Committer: rajub 
Committed: Thu Oct 5 11:11:42 2017 +0800

--
 .../lens/cube/metadata/CubeVirtualFactTable.java   |  9 -
 .../apache/lens/cube/parse/TestVirtualFactQueries.java | 13 +
 .../src/test/resources/schema/cubes/base/testcube2.xml |  2 ++
 .../src/test/resources/schema/facts/testfact9_base.xml |  3 ++-
 .../resources/schema/facts/virtual/virtualfact.xml |  2 ++
 5 files changed, 27 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/lens/blob/358efef9/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeVirtualFactTable.java
--
diff --git 
a/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeVirtualFactTable.java
 
b/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeVirtualFactTable.java
index 1fc74b0..ce2a1a6 100644
--- 
a/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeVirtualFactTable.java
+++ 
b/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeVirtualFactTable.java
@@ -92,7 +92,14 @@ public class CubeVirtualFactTable extends AbstractCubeTable 
implements FactTable
 
   @Override
   public Set getValidColumns() {
-return this.sourceCubeFactTable.getValidColumns();
+String validColsStr =
+  MetastoreUtil.getNamedStringValue(this.getProperties(), 
MetastoreUtil.getValidColumnsKey(getName()));
+if (validColsStr == null) {
+  return this.sourceCubeFactTable.getValidColumns();
+} else {
+  return new 
HashSet<>(Arrays.asList(StringUtils.split(validColsStr.toLowerCase(),
+',')));
+}
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/lens/blob/358efef9/lens-cube/src/test/java/org/apache/lens/cube/parse/TestVirtualFactQueries.java
--
diff --git 
a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestVirtualFactQueries.java
 
b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestVirtualFactQueries.java
index 4bcb376..94e836c 100644
--- 
a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestVirtualFactQueries.java
+++ 
b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestVirtualFactQueries.java
@@ -25,8 +25,11 @@ import static 
org.apache.lens.cube.parse.CubeQueryConfUtil.DISABLE_AGGREGATE_RES
 import static org.apache.lens.cube.parse.CubeTestSetup.*;
 
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.fail;
 
+import org.apache.lens.cube.error.LensCubeErrorCode;
 import org.apache.lens.server.api.LensServerAPITestUtil;
+import org.apache.lens.server.api.error.LensException;
 
 import org.apache.hadoop.conf.Configuration;
 
@@ -119,5 +122,15 @@ public class TestVirtualFactQueries extends 
TestQueryRewrite {
 
   }
 
+  @Test
+  public void testVirtualFactValidColumns() throws Exception {
+
+try {
+  rewriteCtx("select SUM(msr4) from virtualCube where " + TWO_DAYS_RANGE, 
getConfWithStorages("C1"));
+  fail("Rewrite should not succeed here");
+} catch (LensException exc) {
+  assertEquals(exc.getErrorCode(), 
LensCubeErrorCode.COLUMN_NOT_FOUND.getLensErrorInfo().getErrorCode());
+}
+  }
 }
 

http://git-wip-us.apache.org/repos/asf/lens/blob/358efef9/lens-cube/src/test/resources/schema/cubes/base/testcube2.xml
--
diff --git a/lens-cube/src/test/resources/schema/cubes/base/testcube2.xml 
b/lens-cube/src/test/resources/schema/cubes/base/testcube2.xml
index 9740e00..237e85a 100644
--- a/lens-cube/src/test/resources/schema/cubes/base/testcube2.xml
+++ b/lens-cube/src/test/resources/schema/cubes/base/testcube2.xml
@@ -27,5 +27,7 @@
   
 
+
   
 

http://git-wip-us.apache.org/repos/asf/lens/blob/358efef9/lens-cube/src/test/resources/schema/facts/testfact9_base.xml
--
diff --git a/lens-cube/src/test/resources/schema/facts/testfact9_base.xml 
b/lens-cube/src/test/resources/schema/facts/testfact9_base.xml
index 56e5746..9c94fe2 100644
--- a/lens-cube/src/test/resources/schema/facts/testfact9_base.xml
+++ b/lens-cube/src/test/resources/schema/facts/testfact9_base.xml
@@ -22,7 +22,8 @@
 
   
 
-

[3/8] lens git commit: LENS-1474 : Fix NPE in ExpressionResolver for SegmentationCandidate

2017-10-04 Thread raju
LENS-1474 : Fix NPE in ExpressionResolver for SegmentationCandidate


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

Branch: refs/heads/current-release-line
Commit: ae6bda33ed501e15dceeecea83c86adf189e4453
Parents: 717214c
Author: Rajitha R 
Authored: Mon Sep 11 09:53:21 2017 +0530
Committer: rajub 
Committed: Thu Oct 5 11:12:15 2017 +0800

--
 .../apache/lens/cube/parse/ExpressionResolver.java | 17 +++--
 1 file changed, 11 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/lens/blob/ae6bda33/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java
--
diff --git 
a/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java 
b/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java
index 8906fae..822e25e 100644
--- a/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java
+++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java
@@ -314,12 +314,14 @@ class ExpressionResolver implements ContextRewriter {
 }
 
 ExpressionContext getExpressionContext(String expr, String alias) {
-  for (ExpressionContext ec : allExprsQueried.get(expr)) {
-if (ec.getSrcAlias().equals(alias)) {
-  return ec;
+  if (allExprsQueried.get(expr) != null) {
+for (ExpressionContext ec : allExprsQueried.get(expr)) {
+  if (ec.getSrcAlias().equals(alias)) {
+return ec;
+  }
 }
   }
-  throw new IllegalArgumentException("no expression available for " + expr 
+ " alias:" + alias);
+  return null;
 }
 
 boolean hasMeasures(String expr, CubeInterface cube) {
@@ -511,8 +513,11 @@ class ExpressionResolver implements ContextRewriter {
   expressionContexts.add(expressionContext);
   for (StorageCandidate sc : scSet) {
 storageTableNames.add(sc.getStorageTable());
-expressionContexts.add(sc.getCubeQueryContext().getExprCtx()
-  .getExpressionContext(expressionContext.getExprCol().getName(), 
expressionContext.getSrcAlias()));
+ExpressionContext ex = 
sc.getCubeQueryContext().getExprCtx().getExpressionContext(expressionContext.
+getExprCol().getName(), expressionContext.getSrcAlias());
+if (ex != null) {
+  expressionContexts.add(ex);
+}
   }
   for (ExpressionContext ec : expressionContexts) {
 for (CandidateTable table : ec.evaluableExpressions.keySet()) {



[7/8] lens git commit: LENS-1467: CubeQueryContext.getAllFilters is returning incorrect list of filters in case there is an "OR" in the filters

2017-10-04 Thread raju
LENS-1467: CubeQueryContext.getAllFilters is returning incorrect list of 
filters in case there is an "OR" in the filters


Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/9a678d8c
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/9a678d8c
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/9a678d8c

Branch: refs/heads/current-release-line
Commit: 9a678d8c2602860aac81bb31801c6c6acb946054
Parents: 13cbc81
Author: Rajat Khandelwal 
Authored: Wed Aug 30 16:10:54 2017 +0530
Committer: rajub 
Committed: Thu Oct 5 11:13:18 2017 +0800

--
 .../lens/cube/parse/CubeQueryContext.java   | 67 ++-
 .../cube/parse/StorageCandidateHQLContext.java  |  3 +-
 .../apache/lens/cube/parse/join/JoinClause.java |  9 +++
 .../lens/cube/parse/CubeQueryContextTest.java   | 70 
 4 files changed, 100 insertions(+), 49 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/lens/blob/9a678d8c/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java
--
diff --git 
a/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 
b/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java
index 8b9583a..bff5c47 100644
--- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java
+++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java
@@ -49,7 +49,6 @@ import org.apache.lens.cube.metadata.*;
 import org.apache.lens.cube.metadata.join.TableRelationship;
 import org.apache.lens.cube.parse.join.AutoJoinContext;
 import org.apache.lens.cube.parse.join.JoinClause;
-import org.apache.lens.cube.parse.join.JoinTree;
 import org.apache.lens.cube.parse.join.JoinUtils;
 import org.apache.lens.server.api.error.LensException;
 
@@ -1137,14 +1136,13 @@ public class CubeQueryContext extends 
TracksQueriedColumns implements QueryAST,
 return ImmutableSet.copyOf(this.queriedTimeDimCols);
   }
 
-  String getWhere(StorageCandidateHQLContext sc, AutoJoinContext autoJoinCtx,
-ASTNode node, String cubeAlias,
-boolean shouldReplaceDimFilter, String storageTable,
-Map dimToQuery) throws LensException {
+  String getWhere(StorageCandidateHQLContext sc, AutoJoinContext autoJoinCtx, 
String cubeAlias,
+boolean shouldReplaceDimFilter, Map dimToQuery) 
throws LensException {
 String whereString;
 if (autoJoinCtx != null && shouldReplaceDimFilter) {
   List allfilters = new ArrayList<>();
-  getAllFilters(node, cubeAlias, allfilters, 
autoJoinCtx.getJoinClause(sc.getStorageCandidate()), dimToQuery);
+  getAllFilters(sc.getQueryAst().getWhereAST(), cubeAlias, allfilters,
+autoJoinCtx.getJoinClause(sc.getStorageCandidate()), dimToQuery);
   whereString = StringUtils.join(allfilters, " and ");
 } else {
   whereString = HQLParser.getString(sc.getQueryAst().getWhereAST());
@@ -1152,58 +1150,33 @@ public class CubeQueryContext extends 
TracksQueriedColumns implements QueryAST,
 return whereString;
   }
 
-  private void getAllFilters(ASTNode node, String cubeAlias, List 
allFilters,
-JoinClause joinClause,  Map dimToQuery)
-throws LensException {
-
-if (node.getToken().getType() == HiveParser.KW_AND) {
-  // left child is and
-  if (node.getChild(0).getType() == HiveParser.KW_AND) {
-// take right corresponding to right
-String table = getTableFromFilterAST((ASTNode) node.getChild(1));
-allFilters.add(getFilter(table, cubeAlias, node, joinClause, 1, 
dimToQuery));
-  } else if (node.getChildCount() > 1) {
-for (int i = 0; i < node.getChildCount(); i++) {
-  String table = getTableFromFilterAST((ASTNode) node.getChild(i));
-  allFilters.add(getFilter(table, cubeAlias, node, joinClause, i, 
dimToQuery));
-}
+  protected static void getAllFilters(ASTNode node, String cubeAlias, 
List allFilters, JoinClause joinClause,
+Map dimToQuery) throws LensException {
+if (node.getToken().getType() == HiveParser.KW_AND || 
node.getToken().getType() == HiveParser.TOK_WHERE) {
+  for (int i = 0; i < node.getChildCount(); i++) {
+ASTNode child = (ASTNode) node.getChild(i);
+getAllFilters(child, cubeAlias, allFilters, joinClause, dimToQuery);
   }
-} else if (node.getParent() == null
-&& node.getToken().getType() != HiveParser.KW_AND
-  && node.getChild(0).getType() != HiveParser.KW_AND) {
-  // if node is the only child
-  allFilters.add(HQLParser.getString((ASTNode) node));
-}
-for (int i = 0; i < 

[6/8] lens git commit: LENS-1465: Sync queries blocking threads

2017-10-04 Thread raju
LENS-1465: Sync queries blocking threads


Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/13cbc811
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/13cbc811
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/13cbc811

Branch: refs/heads/current-release-line
Commit: 13cbc811342378d8fb39f4d03be08145fbc4f986
Parents: 1d66797
Author: Rajat Khandelwal 
Authored: Wed Aug 30 16:10:13 2017 +0530
Committer: rajub 
Committed: Thu Oct 5 11:13:09 2017 +0800

--
 .../org/apache/lens/server/api/query/QueryContext.java   | 11 +--
 1 file changed, 5 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/lens/blob/13cbc811/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java
--
diff --git 
a/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java
 
b/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java
index 466fb25..8176f03 100644
--- 
a/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java
+++ 
b/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java
@@ -198,7 +198,7 @@ public class QueryContext extends AbstractQueryContext 
implements FailureContext
   @Getter
   @Setter
   private transient Future queryLauncher;
-  transient List driverStatusUpdateListeners 
= Lists.newArrayList();
+  transient List driverStatusUpdateListeners 
= Lists.newCopyOnWriteArrayList();
   @Getter
   @Setter
   List failedAttempts = Lists.newArrayList();
@@ -572,10 +572,9 @@ public class QueryContext extends AbstractQueryContext 
implements FailureContext
   getDriverStatus().setStatusMessage("Query " + getQueryHandleString() + " 
" + state.name().toLowerCase());
 }
 getDriverStatus().setState(state);
-synchronized (this) {
-  for (QueryDriverStatusUpdateListener listener : 
this.driverStatusUpdateListeners) {
-listener.onDriverStatusUpdated(getQueryHandle(), getDriverStatus());
-  }
+
+for (QueryDriverStatusUpdateListener listener : 
this.driverStatusUpdateListeners) {
+  listener.onDriverStatusUpdated(getQueryHandle(), getDriverStatus());
 }
   }
 
@@ -588,7 +587,7 @@ public class QueryContext extends AbstractQueryContext 
implements FailureContext
   }
 
 
-  public synchronized void 
registerStatusUpdateListener(QueryDriverStatusUpdateListener 
driverStatusUpdateListener) {
+  public void registerStatusUpdateListener(QueryDriverStatusUpdateListener 
driverStatusUpdateListener) {
 this.driverStatusUpdateListeners.add(driverStatusUpdateListener);
   }