lens git commit: LENS-835 : Optimizing fact subquery by removing non aggregated expression columns from group by clause
Repository: lens Updated Branches: refs/heads/master 3cd03a37a -> 1f885cd3d LENS-835 : Optimizing fact subquery by removing non aggregated expression columns from group by clause Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/1f885cd3 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/1f885cd3 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/1f885cd3 Branch: refs/heads/master Commit: 1f885cd3d74310ea1cb4e2049692d53d49e5e7cc Parents: 3cd03a3 Author: Sushil Mohanty <sushilmoha...@apache.org> Authored: Sun Oct 25 11:27:20 2015 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Sun Oct 25 11:27:20 2015 +0530 -- .../lens/driver/jdbc/ColumnarSQLRewriter.java | 18 ++- .../driver/jdbc/TestColumnarSQLRewriter.java| 149 +-- 2 files changed, 85 insertions(+), 82 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/1f885cd3/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/ColumnarSQLRewriter.java -- diff --git a/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/ColumnarSQLRewriter.java b/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/ColumnarSQLRewriter.java index 2d81ff2..3fdb40e 100644 --- a/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/ColumnarSQLRewriter.java +++ b/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/ColumnarSQLRewriter.java @@ -533,15 +533,19 @@ public class ColumnarSQLRewriter implements QueryRewriter { log.debug("AST is null "); return; } -if (node.getToken().getType() == HiveParser.DOT - && node.getParent().getChild(0).getType() != HiveParser.Identifier) { - String table = HQLParser.findNodeByPath(node, TOK_TABLE_OR_COL, Identifier).toString(); - String column = node.getChild(1).toString().toLowerCase(); +if (HQLParser.isAggregateAST(node)) { + return; +} else { + if (node.getToken().getType() == HiveParser.DOT + && node.getParent().getChild(0).getType() != HiveParser.Identifier) { +String table = HQLParser.findNodeByPath(node, TOK_TABLE_OR_COL, Identifier).toString(); +String column = node.getChild(1).toString().toLowerCase(); - String factAlias = getFactAlias(); +String factAlias = getFactAlias(); - if (table.equals(factAlias)) { -factKeys.add(factAlias + "." + column); +if (table.equals(factAlias)) { + factKeys.add(factAlias + "." + column); +} } } http://git-wip-us.apache.org/repos/asf/lens/blob/1f885cd3/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java -- diff --git a/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java b/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java index 77ab302..41c3c85 100644 --- a/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java +++ b/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java @@ -578,32 +578,31 @@ public class TestColumnarSQLRewriter { + "( time_dim___time_dim . day ), ( item_dim___item_dim . item_key ), sum(alias1) dollars_sold , " + "round(sum(alias2), 2 ), avg(alias3), min(alias4), max(alias5), location_name " + "from (select sales_fact___fact.time_key, sales_fact___fact.location_key, " -+ "sales_fact___fact.item_key, sales_fact___fact.dollars_sold,sum( case " -+ "when (( sales_fact___fact . dollars_sold ) = 0 ) then 0.0 else " -+ "( sales_fact___fact . dollars_sold ) end ) as alias1, " ++ "sales_fact___fact.item_key,sum( case when (( sales_fact___fact . dollars_sold ) = 0 ) " ++ "then 0.0 else ( sales_fact___fact . dollars_sold ) end ) as alias1, " + "sum(( sales_fact___fact . units_sold )) as alias2, " + "avg(( sales_fact___fact . dollars_sold )) as alias3, " -+ "min(( sales_fact___fact . dollars_sold )) as alias4, " -+ "max(( sales_fact___fact . dollars_sold )) as alias5 " -+ "from sales_fact sales_fact___fact where sales_fact___fact.time_key " -+ "in ( select time_dim .time_key from time_dim where " -+ "( time_dim. time_key ) between '2013-01-01' and '2013-01-31' ) " -+ "and sales_fact___f
lens git commit: LENS-845 : Allow regex rename arguments to passed configuration in columnar sql rewriter
Repository: lens Updated Branches: refs/heads/master daa65a5af -> e274c2dfd LENS-845 : Allow regex rename arguments to passed configuration in columnar sql rewriter Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/e274c2df Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/e274c2df Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/e274c2df Branch: refs/heads/master Commit: e274c2dfd8907a6fad012989bad63bc131dee444 Parents: daa65a5 Author: Rajat Khandelwal <pro...@apache.org> Authored: Mon Oct 26 18:59:11 2015 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Oct 26 18:59:11 2015 +0530 -- .../lens/driver/jdbc/ColumnarSQLRewriter.java | 30 ++-- .../driver/jdbc/JDBCDriverConfConstants.java| 1 + .../src/main/resources/jdbcdriver-default.xml | 6 +++ .../driver/jdbc/TestColumnarSQLRewriter.java| 49 +++- .../src/test/resources/jdbcdriver-site.xml | 6 +++ 5 files changed, 55 insertions(+), 37 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/e274c2df/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/ColumnarSQLRewriter.java -- diff --git a/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/ColumnarSQLRewriter.java b/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/ColumnarSQLRewriter.java index c6797aa..ccb2b7f 100644 --- a/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/ColumnarSQLRewriter.java +++ b/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/ColumnarSQLRewriter.java @@ -176,6 +176,7 @@ public class ColumnarSQLRewriter implements QueryRewriter { /** The from ast. */ @Getter protected ASTNode fromAST; + private HashMap<String, String> regexReplaceMap = new HashMap<>(); /** * Instantiates a new columnar sql rewriter. @@ -185,6 +186,14 @@ public class ColumnarSQLRewriter implements QueryRewriter { @Override public void init(Configuration conf) { +if (conf.get(JDBCDriverConfConstants.REGEX_REPLACEMENT_VALUES) != null) { + for (String kv : conf.get(JDBCDriverConfConstants.REGEX_REPLACEMENT_VALUES).split("(? imputnmatch = new LinkedHashMap<String, String>(); -imputnmatch.put("to_date", "date"); -imputnmatch.put("format_number", "format"); -imputnmatch.put("date_sub\\((.*?),\\s*([0-9]+\\s*)\\)", "date_sub($1, interval $2 day)"); -imputnmatch.put("date_add\\((.*?),\\s*([0-9]+\\s*)\\)", "date_add($1, interval $2 day)"); - -for (Map.Entry<String, String> entry : imputnmatch.entrySet()) { +for (Map.Entry<String, String> entry : regexReplaceMap.entrySet()) { query = query.replaceAll(entry.getKey(), entry.getValue()); } return query; @@ -1212,8 +1215,9 @@ public class ColumnarSQLRewriter implements QueryRewriter { reset(); try { + String finalRewrittenQuery; if (query.toLowerCase().matches("(.*)union all(.*)")) { -String finalRewrittenQuery = ""; +finalRewrittenQuery = ""; String[] queries = query.toLowerCase().split("union all"); for (int i = 0; i < queries.length; i++) { log.info("Union Query Part {} : {}", i, queries[i]); @@ -1223,16 +1227,14 @@ public class ColumnarSQLRewriter implements QueryRewriter { finalRewrittenQuery = mergedQuery.toString().substring(0, mergedQuery.lastIndexOf("union all")); reset(); } -queryReplacedUdf = replaceUDFForDB(finalRewrittenQuery); -log.info("Input Query : {}", query); -log.info("Rewritten Query : {}", queryReplacedUdf); } else { ast = HQLParser.parseHQL(query, metastoreConf); buildQuery(conf, metastoreConf); -queryReplacedUdf = replaceUDFForDB(rewrittenQuery.toString()); -log.info("Input Query : {}", query); -log.info("Rewritten Query : {}", queryReplacedUdf); +finalRewrittenQuery = rewrittenQuery.toString(); } + queryReplacedUdf = replaceUDFForDB(finalRewrittenQuery); + log.info("Input Query : {}", query); + log.info("Rewritten Query : {}", queryReplacedUdf); } catch (SemanticException e) { throw new LensException(e); } http://git-wip-us.apache.org/repos/asf/lens/blob/e274c2df/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriverConfConstants.java -- diff --git a/lens-driver-jdbc/src/main/java/org/apache/lens/driv
lens git commit: LENS-816 : Fix ThreadSafeEstimatedQueryCollection methods not to ignore driver arguments
Repository: lens Updated Branches: refs/heads/current-release-line 3c4056a29 -> 7fb9be456 LENS-816 : Fix ThreadSafeEstimatedQueryCollection methods not to ignore driver arguments Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/7fb9be45 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/7fb9be45 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/7fb9be45 Branch: refs/heads/current-release-line Commit: 7fb9be4562b5437b90d9489ea8f028a3ac960239 Parents: 3c4056a Author: Rajat Khandelwal <pro...@apache.org> Authored: Thu Oct 15 05:53:25 2015 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Thu Oct 15 05:55:44 2015 +0530 -- .../ThreadSafeEstimatedQueryCollection.java | 4 +- .../ThreadSafeEstimatedQueryCollectionTest.java | 81 2 files changed, 83 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/7fb9be45/lens-server/src/main/java/org/apache/lens/server/query/collect/ThreadSafeEstimatedQueryCollection.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/query/collect/ThreadSafeEstimatedQueryCollection.java b/lens-server/src/main/java/org/apache/lens/server/query/collect/ThreadSafeEstimatedQueryCollection.java index 5d24379..ca24a8b 100644 --- a/lens-server/src/main/java/org/apache/lens/server/query/collect/ThreadSafeEstimatedQueryCollection.java +++ b/lens-server/src/main/java/org/apache/lens/server/query/collect/ThreadSafeEstimatedQueryCollection.java @@ -41,12 +41,12 @@ public class ThreadSafeEstimatedQueryCollection implements EstimatedQueryCollect @Override public synchronized Set getQueries(LensDriver driver) { -return this.estimatedQueries.getQueries(); +return this.estimatedQueries.getQueries(driver); } @Override public synchronized int getQueriesCount(LensDriver driver) { -return this.estimatedQueries.getQueriesCount(); +return this.estimatedQueries.getQueriesCount(driver); } @Override http://git-wip-us.apache.org/repos/asf/lens/blob/7fb9be45/lens-server/src/test/java/org/apache/lens/server/query/constraint/ThreadSafeEstimatedQueryCollectionTest.java -- diff --git a/lens-server/src/test/java/org/apache/lens/server/query/constraint/ThreadSafeEstimatedQueryCollectionTest.java b/lens-server/src/test/java/org/apache/lens/server/query/constraint/ThreadSafeEstimatedQueryCollectionTest.java new file mode 100644 index 000..9138f8e --- /dev/null +++ b/lens-server/src/test/java/org/apache/lens/server/query/constraint/ThreadSafeEstimatedQueryCollectionTest.java @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.lens.server.query.constraint; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import static org.testng.Assert.assertEquals; + +import org.apache.lens.server.api.driver.LensDriver; +import org.apache.lens.server.api.query.QueryContext; +import org.apache.lens.server.api.query.constraint.MaxConcurrentDriverQueriesConstraint; +import org.apache.lens.server.api.query.constraint.QueryLaunchingConstraint; +import org.apache.lens.server.api.query.cost.FactPartitionBasedQueryCost; +import org.apache.lens.server.api.query.cost.QueryCost; +import org.apache.lens.server.query.collect.DefaultEstimatedQueryCollection; +import org.apache.lens.server.query.collect.DefaultQueryCollection; +import org.apache.lens.server.query.collect.ThreadSafeEstimatedQueryCollection; + +import org.testng.annotations.DataProvider; +import org.testng.annotations.Test; + +public class ThreadSafeEstimatedQueryCollectionTest { + public static final QueryCost COST = new FactPartitionBasedQueryCost(10); + + @DataProvider + public Object[][] dpTestAllowsLaunchOfQuery() { +return new Object[][]{{2, true}, {3, false}, {11, false}}; + } + + @Test(dataPr
lens git commit: LENS-745 : Fix dropping latest partition from timeline
Repository: lens Updated Branches: refs/heads/master 2901b4b33 - 86f251a75 LENS-745 : Fix dropping latest partition from timeline Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/86f251a7 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/86f251a7 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/86f251a7 Branch: refs/heads/master Commit: 86f251a75b3a010a795f29be982ee19d9b2ba780 Parents: 2901b4b Author: Rajat Khandelwal pro...@apache.org Authored: Mon Aug 31 10:19:56 2015 +0530 Committer: Amareshwari Sriramadasu amareshw...@apache.org Committed: Mon Aug 31 10:19:56 2015 +0530 -- .../lens/cube/metadata/TimePartition.java | 2 - .../apache/lens/cube/metadata/UpdatePeriod.java | 57 ++-- .../timeline/StoreAllPartitionTimeline.java | 5 +- .../org/apache/lens/cube/parse/DateUtil.java| 77 -- .../org/apache/lens/cube/parse/TimeRange.java | 2 +- .../cube/metadata/TestCubeMetastoreClient.java | 21 +-- .../lens/cube/metadata/TestTimePartition.java | 64 + .../lens/cube/metadata/UpdatePeriodTest.java| 60 .../timeline/TestPartitionTimelines.java| 143 +++ .../apache/lens/cube/parse/TestDateUtil.java| 4 +- 10 files changed, 258 insertions(+), 177 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/86f251a7/lens-cube/src/main/java/org/apache/lens/cube/metadata/TimePartition.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/TimePartition.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/TimePartition.java index 11e6ef6..d52f168 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/TimePartition.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/TimePartition.java @@ -37,8 +37,6 @@ public class TimePartition implements ComparableTimePartition, Named { private TimePartition(@NonNull UpdatePeriod updatePeriod, @NonNull Date date) { this.updatePeriod = updatePeriod; -Calendar cal = Calendar.getInstance(); -cal.setTime(date); this.date = updatePeriod.truncate(date); this.dateString = updatePeriod.format().format(this.date); } http://git-wip-us.apache.org/repos/asf/lens/blob/86f251a7/lens-cube/src/main/java/org/apache/lens/cube/metadata/UpdatePeriod.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/UpdatePeriod.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/UpdatePeriod.java index b4dff46..6c61e94 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/UpdatePeriod.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/UpdatePeriod.java @@ -27,22 +27,28 @@ import java.util.Calendar; import java.util.Comparator; import java.util.Date; +import org.apache.lens.cube.error.LensCubeErrorCode; import org.apache.lens.cube.parse.DateUtil; +import org.apache.lens.server.api.error.LensException; import org.apache.commons.lang3.time.DateUtils; +import lombok.Getter; + public enum UpdatePeriod implements Named { - SECONDLY(SECOND, 1000, 1.4f, -MM-dd-HH-mm-ss), - MINUTELY(MINUTE, 60 * SECONDLY.weight(), 1.35f, -MM-dd-HH-mm), - HOURLY(HOUR_OF_DAY, 60 * MINUTELY.weight(), 1.3f, -MM-dd-HH), - DAILY(DAY_OF_MONTH, 24 * HOURLY.weight(), 1f, -MM-dd), - WEEKLY(WEEK_OF_YEAR, 7 * DAILY.weight(), 0.7f, -'W'ww), - MONTHLY(MONTH, 30 * DAILY.weight(), 0.6f, -MM), - QUARTERLY(MONTH, 3 * MONTHLY.weight(), 0.55f, -MM), - YEARLY(YEAR, 12 * MONTHLY.weight(), 0.52f, ), - CONTINUOUS(Calendar.SECOND, 1, 1.5f, -MM-dd-HH-mm-ss); + SECONDLY(second, SECOND, 1000, 1.4f, -MM-dd-HH-mm-ss), + MINUTELY(minute, MINUTE, 60 * SECONDLY.weight(), 1.35f, -MM-dd-HH-mm), + HOURLY(hour, HOUR_OF_DAY, 60 * MINUTELY.weight(), 1.3f, -MM-dd-HH), + DAILY(day, DAY_OF_MONTH, 24 * HOURLY.weight(), 1f, -MM-dd), + WEEKLY(week, WEEK_OF_YEAR, 7 * DAILY.weight(), 0.7f, -'W'ww), + MONTHLY(month, MONTH, 30 * DAILY.weight(), 0.6f, -MM), + QUARTERLY(quarter, MONTH, 3 * MONTHLY.weight(), 0.55f, -MM), + YEARLY(year, YEAR, 12 * MONTHLY.weight(), 0.52f, ), + CONTINUOUS(continuous, Calendar.SECOND, 1, 1.5f, -MM-dd-HH-mm-ss); public static final long MIN_INTERVAL = values()[0].weight(); + @Getter + private String unitName; private final int calendarField; private final long weight; /** @@ -159,7 +165,8 @@ public enum UpdatePeriod implements Named { private static ThreadLocalDateFormat quarterlyFormat; private static ThreadLocalDateFormat yearlyFormat; - UpdatePeriod(int calendarField, long diff, float normalizationFactor, String format) { + UpdatePeriod
lens git commit: LENS-392 : Look ahead timerange should not look for all finer granularity partitions to be present
Repository: lens Updated Branches: refs/heads/master 4e81ef4dd -> 08135aa69 LENS-392 : Look ahead timerange should not look for all finer granularity partitions to be present Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/08135aa6 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/08135aa6 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/08135aa6 Branch: refs/heads/master Commit: 08135aa693658aa454e55a2c1e81c9e0fa19444b Parents: 4e81ef4 Author: Rajat Khandelwal <pro...@apache.org> Authored: Wed Sep 16 09:50:55 2015 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Wed Sep 16 09:50:55 2015 +0530 -- .../lens/cube/metadata/FactPartition.java | 14 ++- .../lens/cube/metadata/TimePartition.java | 9 ++ .../lens/cube/metadata/TimePartitionRange.java | 5 + .../timeline/RangesPartitionTimeline.java | 4 +- .../cube/parse/AbridgedTimeRangeWriter.java | 5 +- .../lens/cube/parse/StorageTableResolver.java | 43 - .../apache/lens/cube/parse/CubeTestSetup.java | 52 ++- .../lens/cube/parse/TestCubeRewriter.java | 97 ++-- 8 files changed, 130 insertions(+), 99 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/08135aa6/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactPartition.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactPartition.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactPartition.java index fc2d85b..f934ad3 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactPartition.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactPartition.java @@ -42,6 +42,7 @@ public class FactPartition implements Comparable { @Getter @Setter private FactPartition containingPart; + @Getter private final DateFormat partFormat; @Getter @Setter @@ -59,7 +60,18 @@ public class FactPartition implements Comparable { public FactPartition(String partCol, Date partSpec, UpdatePeriod period, FactPartition containingPart, DateFormat partFormat, Set storageTables) { this(partCol, partSpec, period, containingPart, partFormat); -this.storageTables.addAll(storageTables); +if (storageTables != null) { + this.storageTables.addAll(storageTables); +} + } + + public FactPartition(String partCol, TimePartition timePartition) { +this(partCol, timePartition, null, null); + } + + public FactPartition(String partCol, TimePartition timePartition, FactPartition containingPart, Set +storageTables) { +this(partCol, timePartition.getDate(), timePartition.getUpdatePeriod(), containingPart, null, storageTables); } public boolean hasContainingPart() { http://git-wip-us.apache.org/repos/asf/lens/blob/08135aa6/lens-cube/src/main/java/org/apache/lens/cube/metadata/TimePartition.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/TimePartition.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/TimePartition.java index d52f168..0026262 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/TimePartition.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/TimePartition.java @@ -121,6 +121,7 @@ public class TimePartition implements Comparable, Named { return rangeUpto(next()); } + @Override public String getName() { return getDateString(); @@ -129,4 +130,12 @@ public class TimePartition implements Comparable, Named { public TimePartitionRange emptyRange() throws LensException { return this.rangeUpto(this); } + + public static TimePartition max(TimePartition p1, TimePartition p2) { +return p1.compareTo(p2) >= 0 ? p1 : p2; + } + + public static TimePartition min(TimePartition p1, TimePartition p2) { +return p1.compareTo(p2) < 0 ? p1 : p2; + } } http://git-wip-us.apache.org/repos/asf/lens/blob/08135aa6/lens-cube/src/main/java/org/apache/lens/cube/metadata/TimePartitionRange.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/TimePartitionRange.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/TimePartitionRange.java index f5f8d4c..01069a5 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/TimePartitionRange.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/TimePartitionRange.java @@ -18,6 +18,7 @@ */ package org.apache.lens.cube.metadata; +import java.util.Date; import java.util.Iterator; import org.apache.lens.cube.parse.DateUtil; @@ -33,6 +34,10 @@ public cla
[1/2] lens git commit: LENS-742 : Adds query feature : Saved query and parameterization
Repository: lens Updated Branches: refs/heads/master 4addd7b62 -> 4e81ef4dd http://git-wip-us.apache.org/repos/asf/lens/blob/4e81ef4d/lens-server/src/main/java/org/apache/lens/server/query/save/SavedQueryDao.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/query/save/SavedQueryDao.java b/lens-server/src/main/java/org/apache/lens/server/query/save/SavedQueryDao.java new file mode 100644 index 000..9dfde0d --- /dev/null +++ b/lens-server/src/main/java/org/apache/lens/server/query/save/SavedQueryDao.java @@ -0,0 +1,483 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.lens.server.query.save; + +import java.io.IOException; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Arrays; +import java.util.List; +import java.util.Set; + +import javax.ws.rs.core.MultivaluedMap; + +import org.apache.lens.api.query.save.ListResponse; +import org.apache.lens.api.query.save.Parameter; +import org.apache.lens.api.query.save.SavedQuery; +import org.apache.lens.server.api.error.LensException; +import org.apache.lens.server.api.query.save.exception.SavedQueryNotFound; + +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.ResultSetHandler; +import org.apache.commons.lang3.StringEscapeUtils; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.base.Joiner; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import lombok.AllArgsConstructor; +import lombok.Data; + +public class SavedQueryDao { + + private static final ObjectMapper MAPPER = new ObjectMapper(); + private static final String VALUE_ALIAS = "value_alias"; + private static final String SAVED_QUERY_TABLE_NAME = "saved_query"; + private static final String ID_COL_NAME = "id"; + private static final String NAME_COL_NAME = "name"; + private static final String DESCRIPTION_COL_NAME = "description"; + private static final String QUERY_COL_NAME = "query"; + private static final String PARAMS_COL_NAME = "params_json"; + private static final String CREATED_AT_COL_NAME = "created_at"; + private static final String UPDATED_AT_COL_NAME = "updated_at"; + + private final QueryRunner runner; + private final Dialect dialect; + + SavedQueryDao(String dialectClass, QueryRunner runner) +throws LensException { +try { + this.runner = runner; + this.dialect = (Dialect) Class.forName(dialectClass).newInstance(); + createSavedQueryTableIfNotExists(); +} catch (Exception e) { + throw new LensException("Error initializing saved query dao", e); +} + } + + /** + * Creates the saved query table + * + * @throws LensException + */ + public void createSavedQueryTableIfNotExists() throws LensException { +try { + runner.update(dialect.getCreateTableSyntax()); +} catch (SQLException e) { + throw new LensException("Cannot create saved query table!", e); +} + } + + /** + * Saves the query passed + * + * @param savedQuery + * @return + * @throws LensException + */ + public long saveQuery(SavedQuery savedQuery) throws LensException { +try { + final ECMAEscapedSavedQuery ecmaEscaped = ECMAEscapedSavedQuery.getFor(savedQuery); + runner.update( +"insert into " + SAVED_QUERY_TABLE_NAME + " values (" + dialect.getAutoIncrementId(runner) + ", " + + "'" + ecmaEscaped.getName() + "'" + + ", " + + "'" + ecmaEscaped.getDescription() + "'" + + "," + + "'" + ecmaEscaped.getQuery() + "'" + + "," + + "'" + ecmaEscaped.getParameters() + "'" + + "," + + "now()" + + "," + + "now()" + + ")" + ); + return dialect.getLastInsertedID(runner); +} catch (SQLException e) { + throw new LensException("Save query failed !", e); +} + } + + /** + * Updates the saved query id with new payload + * + * @param id + * @param savedQuery + * @throws LensException + */ + public
[2/2] lens git commit: LENS-742 : Adds query feature : Saved query and parameterization
LENS-742 : Adds query feature : Saved query and parameterization Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/4e81ef4d Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/4e81ef4d Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/4e81ef4d Branch: refs/heads/master Commit: 4e81ef4ddfef2d8c89c48576e474c2094cbbc56b Parents: 4addd7b Author: Amruth S <amruthkesa...@gmail.com> Authored: Tue Sep 15 18:05:20 2015 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Tue Sep 15 18:05:20 2015 +0530 -- .../lens/api/error/LensCommonErrorCode.java | 10 +- .../lens/api/query/save/ListResponse.java | 51 ++ .../apache/lens/api/query/save/Parameter.java | 80 +++ .../api/query/save/ParameterCollectionType.java | 40 ++ .../lens/api/query/save/ParameterDataType.java | 48 ++ .../api/query/save/ParameterParserResponse.java | 50 ++ .../query/save/ResourceModifiedResponse.java| 70 +++ .../apache/lens/api/query/save/SavedQuery.java | 70 +++ lens-api/src/main/resources/lens-errors.conf| 27 ++ .../lens/server/api/LensConfConstants.java | 16 + .../server/api/query/save/SavedQueryHelper.java | 93 .../api/query/save/SavedQueryService.java | 94 .../exception/MissingParameterException.java| 46 ++ .../exception/ParameterCollectionException.java | 53 ++ .../save/exception/ParameterValueException.java | 51 ++ .../save/exception/PrivilegeException.java | 51 ++ .../save/exception/SavedQueryNotFound.java | 45 ++ .../save/exception/ValueEncodeException.java| 49 ++ .../param/ParameterCollectionTypeEncoder.java | 70 +++ .../save/param/ParameterDataTypeEncoder.java| 91 .../api/query/save/param/ParameterParser.java | 135 ++ .../api/query/save/param/ParameterResolver.java | 126 + .../api/query/save/TestParameterParser.java | 79 +++ .../api/query/save/TestParameterResolution.java | 176 +++ lens-server/enunciate.xml | 1 + .../lens/server/query/save/SavedQueryApp.java | 48 ++ .../lens/server/query/save/SavedQueryDao.java | 483 +++ .../server/query/save/SavedQueryResource.java | 307 .../query/save/SavedQueryServiceImpl.java | 141 ++ .../apache/lens/server/util/UtilityMethods.java | 19 +- .../src/main/resources/lensserver-default.xml | 33 +- .../query/save/TestSavedQueryService.java | 274 +++ lens-server/src/test/resources/lens-site.xml| 22 +- src/site/apt/admin/config.apt | 92 ++-- src/site/apt/user/index.apt | 23 + 35 files changed, 3017 insertions(+), 47 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/4e81ef4d/lens-api/src/main/java/org/apache/lens/api/error/LensCommonErrorCode.java -- diff --git a/lens-api/src/main/java/org/apache/lens/api/error/LensCommonErrorCode.java b/lens-api/src/main/java/org/apache/lens/api/error/LensCommonErrorCode.java index 754e6e1..9c5eaf5 100644 --- a/lens-api/src/main/java/org/apache/lens/api/error/LensCommonErrorCode.java +++ b/lens-api/src/main/java/org/apache/lens/api/error/LensCommonErrorCode.java @@ -26,7 +26,15 @@ public enum LensCommonErrorCode { INTERNAL_SERVER_ERROR(1001), - INVALID_XML_ERROR(1002); + INVALID_XML_ERROR(1002), + + RESOURCE_NOT_FOUND(1003), + + NOT_AUTHORIZED(1004), + + MISSING_PARAMETERS(1005), + + INVALID_PARAMETER_VALUE(1006); public int getValue() { return this.errorCode; http://git-wip-us.apache.org/repos/asf/lens/blob/4e81ef4d/lens-api/src/main/java/org/apache/lens/api/query/save/ListResponse.java -- diff --git a/lens-api/src/main/java/org/apache/lens/api/query/save/ListResponse.java b/lens-api/src/main/java/org/apache/lens/api/query/save/ListResponse.java new file mode 100644 index 000..e707642 --- /dev/null +++ b/lens-api/src/main/java/org/apache/lens/api/query/save/ListResponse.java @@ -0,0 +1,51 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
lens git commit: LENS-891 : Fix Weekly covering info for last Sunday of year and first Sunday of next year
Repository: lens Updated Branches: refs/heads/master b3b7e5f4d -> b63e06c0c LENS-891 : Fix Weekly covering info for last Sunday of year and first Sunday of next year Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/b63e06c0 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/b63e06c0 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/b63e06c0 Branch: refs/heads/master Commit: b63e06c0cdec67ffb6dc5f14d89f7d10091ef2d5 Parents: b3b7e5f Author: Rajat Khandelwal <pro...@apache.org> Authored: Thu Dec 10 11:06:52 2015 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Thu Dec 10 11:06:52 2015 +0530 -- .../src/main/java/org/apache/lens/cube/parse/DateUtil.java | 9 + .../test/java/org/apache/lens/cube/parse/TestDateUtil.java | 4 2 files changed, 5 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/b63e06c0/lens-cube/src/main/java/org/apache/lens/cube/parse/DateUtil.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/DateUtil.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/DateUtil.java index 5e17eac..cd05c68 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/DateUtil.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/DateUtil.java @@ -343,20 +343,13 @@ public final class DateUtil { Calendar cal = Calendar.getInstance(); cal.setTime(from); -int fromWeek = cal.get(Calendar.WEEK_OF_YEAR); int fromDay = cal.get(Calendar.DAY_OF_WEEK); -int fromYear = cal.get(YEAR); - -cal.clear(); -cal.set(YEAR, fromYear); -cal.set(Calendar.WEEK_OF_YEAR, fromWeek); cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); -int maxDayInWeek = cal.getActualMaximum(Calendar.DAY_OF_WEEK); Date fromWeekStartDate = cal.getTime(); boolean coverable = dayDiff % 7 == 0; if (fromWeekStartDate.before(from)) { // Count from the start of next week - dayDiff -= (maxDayInWeek - (fromDay - Calendar.SUNDAY)); + dayDiff -= (cal.getActualMaximum(Calendar.DAY_OF_WEEK) - (fromDay - Calendar.SUNDAY)); coverable = false; } http://git-wip-us.apache.org/repos/asf/lens/blob/b63e06c0/lens-cube/src/test/java/org/apache/lens/cube/parse/TestDateUtil.java -- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestDateUtil.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestDateUtil.java index ab88fbe..ff9a96d 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestDateUtil.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestDateUtil.java @@ -76,6 +76,7 @@ public class TestDateUtil { } } + @Test public void testMonthsBetween() throws Exception { int i = 0; @@ -194,6 +195,9 @@ public class TestDateUtil { weeks = getWeeklyCoveringInfo(DATE_FMT.parse("2013-May-26"), DATE_FMT.parse("2013-Jun-10")); assertEquals(weeks, new CoveringInfo(2, false), "2013-May-26 to 2013-Jun-10"); + +weeks = getWeeklyCoveringInfo(DATE_FMT.parse("2015-Dec-27"), DATE_FMT.parse("2016-Jan-03")); +assertEquals(weeks, new CoveringInfo(1, true), "2015-Dec-27 to 2016-Jan-03"); } @Test
lens git commit: LENS-888 : Fix limit of 4000 on total string length of dim attribute names of derived cube
Repository: lens Updated Branches: refs/heads/master b63e06c0c -> 22e202208 LENS-888 : Fix limit of 4000 on total string length of dim attribute names of derived cube Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/22e20220 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/22e20220 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/22e20220 Branch: refs/heads/master Commit: 22e202208cf6e7f216321f53a5cdc2cbdc113801 Parents: b63e06c Author: Rajat Khandelwal <pro...@apache.org> Authored: Thu Dec 10 11:10:08 2015 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Thu Dec 10 11:10:08 2015 +0530 -- .../apache/lens/cube/metadata/DerivedCube.java | 27 +++ .../lens/cube/metadata/MetastoreUtil.java | 16 ++- .../cube/metadata/TestCubeMetastoreClient.java | 28 +--- 3 files changed, 56 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/22e20220/lens-cube/src/main/java/org/apache/lens/cube/metadata/DerivedCube.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/DerivedCube.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/DerivedCube.java index 3c30f78..681aa7b 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/DerivedCube.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/DerivedCube.java @@ -137,16 +137,23 @@ public class DerivedCube extends AbstractCubeTable implements CubeInterface { @Override public void addProperties() { super.addProperties(); -getProperties().put(MetastoreUtil.getCubeMeasureListKey(getName()), StringUtils.join(measures, ",").toLowerCase()); -getProperties().put(MetastoreUtil.getCubeDimensionListKey(getName()), - StringUtils.join(dimensions, ",").toLowerCase()); +updateMeasureProperties(); +updateDimAttributeProperties(); getProperties().put(MetastoreUtil.getParentCubeNameKey(getName()), parent.getName().toLowerCase()); getProperties().put(MetastoreUtil.getParentCubeNameKey(getName()), parent.getName().toLowerCase()); } + public void updateDimAttributeProperties() { +MetastoreUtil.addNameStrings(getProperties(), MetastoreUtil.getCubeDimensionListKey(getName()), + MetastoreUtil.getNamedSetFromStringSet(dimensions)); + } + public void updateMeasureProperties() { +MetastoreUtil.addNameStrings(getProperties(), MetastoreUtil.getCubeMeasureListKey(getName()), + MetastoreUtil.getNamedSetFromStringSet(measures)); + } public static Set getMeasures(String name, Map<String, String> props) { Set measures = new HashSet(); -String measureStr = props.get(MetastoreUtil.getCubeMeasureListKey(name)); +String measureStr = MetastoreUtil.getNamedStringValue(props, MetastoreUtil.getCubeMeasureListKey(name)); measures.addAll(Arrays.asList(StringUtils.split(measureStr, ','))); return measures; } @@ -164,7 +171,7 @@ public class DerivedCube extends AbstractCubeTable implements CubeInterface { public static Set getDimensions(String name, Map<String, String> props) { Set dimensions = new HashSet(); -String dimStr = props.get(MetastoreUtil.getCubeDimensionListKey(name)); +String dimStr = MetastoreUtil.getNamedStringValue(props, MetastoreUtil.getCubeDimensionListKey(name)); dimensions.addAll(Arrays.asList(StringUtils.split(dimStr, ','))); return dimensions; } @@ -234,7 +241,7 @@ public class DerivedCube extends AbstractCubeTable implements CubeInterface { */ public void addMeasure(String measure) throws HiveException { measures.add(measure.toLowerCase()); -getProperties().put(MetastoreUtil.getCubeMeasureListKey(getName()), StringUtils.join(measures, ",").toLowerCase()); +updateMeasureProperties(); } /** @@ -245,8 +252,7 @@ public class DerivedCube extends AbstractCubeTable implements CubeInterface { */ public void addDimension(String dimension) throws HiveException { dimensions.add(dimension.toLowerCase()); -getProperties().put(MetastoreUtil.getCubeDimensionListKey(getName()), - StringUtils.join(dimensions, ",").toLowerCase()); +updateDimAttributeProperties(); } /** @@ -256,8 +262,7 @@ public class DerivedCube extends AbstractCubeTable implements CubeInterface { */ public void removeDimension(String dimName) { dimensions.remove(dimName.toLowerCase()); -getProperties().put(MetastoreUtil.getCubeDimensionListKey(getName()), - StringUtils.join(dimensions, ",").toLowerCase()); +updateDimAttributeProperties(); } /** @@ -267,7 +272,7 @@ public class DerivedCub
lens git commit: LENS-851 : Replace columns with aliases in where clause of the inner query
Repository: lens Updated Branches: refs/heads/master ff891e2cf -> bf4c0bec0 LENS-851 : Replace columns with aliases in where clause of the inner query Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/bf4c0bec Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/bf4c0bec Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/bf4c0bec Branch: refs/heads/master Commit: bf4c0bec023307417de75f4c13ed1c344fc1f06e Parents: ff891e2 Author: Rajat Khandelwal <pro...@apache.org> Authored: Sat Dec 12 15:30:23 2015 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Sat Dec 12 15:30:23 2015 +0530 -- lens-api/src/main/resources/lens-errors.conf| 25 +-- .../lens/cube/error/LensCubeErrorCode.java | 6 +- .../apache/lens/cube/metadata/ExprColumn.java | 60 ++--- .../lens/cube/metadata/MetastoreUtil.java | 16 + .../apache/lens/cube/parse/CandidateFact.java | 8 +-- .../apache/lens/cube/parse/GroupbyResolver.java | 15 + .../org/apache/lens/cube/parse/HQLParser.java | 11 +++- .../lens/cube/parse/SingleFactHQLContext.java | 8 +-- .../parse/SingleFactMultiStorageHQLContext.java | 68 +++- .../apache/lens/cube/parse/UnionHQLContext.java | 2 +- .../cube/metadata/TestCubeMetastoreClient.java | 10 +-- .../lens/cube/metadata/TestExprColumn.java | 20 +++--- .../apache/lens/cube/parse/CubeTestSetup.java | 2 +- .../lens/cube/parse/TestCubeRewriter.java | 4 +- .../apache/lens/server/metastore/JAXBUtils.java | 8 +-- 15 files changed, 161 insertions(+), 102 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/bf4c0bec/lens-api/src/main/resources/lens-errors.conf -- diff --git a/lens-api/src/main/resources/lens-errors.conf b/lens-api/src/main/resources/lens-errors.conf index ca8562f..c880543 100644 --- a/lens-api/src/main/resources/lens-errors.conf +++ b/lens-api/src/main/resources/lens-errors.conf @@ -284,9 +284,15 @@ lensCubeErrorsForQuery = [ } { - errorCode = 3031 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "The query is answerable from two storages but union is disabled." +errorCode = 3031 +httpStatusCode = ${BAD_REQUEST} +errorMsg = "The query is answerable from two storages but union is disabled." + } + + { +errorCode = 3032 +httpStatusCode = ${INTERNAL_SERVER_ERROR} +errorMsg = "Could not parse expression %s" } ] @@ -298,10 +304,17 @@ lensCubeErrorsForMetastore = [ } { - errorCode = 3102 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "No timeline found for fact=%s, storage=%s, update period=%s, partition column=%s." +errorCode = 3102 +httpStatusCode = ${BAD_REQUEST} +errorMsg = "No timeline found for fact=%s, storage=%s, update period=%s, partition column=%s." } + + { +errorCode = 3103 +httpStatusCode = ${BAD_REQUEST} +errorMsg = "The Expression %s is Not Parsable." + } + ] lensCubeErrors = ${lensCubeErrorsForQuery}${lensCubeErrorsForMetastore} http://git-wip-us.apache.org/repos/asf/lens/blob/bf4c0bec/lens-cube/src/main/java/org/apache/lens/cube/error/LensCubeErrorCode.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/error/LensCubeErrorCode.java b/lens-cube/src/main/java/org/apache/lens/cube/error/LensCubeErrorCode.java index 6c5dc2f..68cd80b 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/error/LensCubeErrorCode.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/error/LensCubeErrorCode.java @@ -54,10 +54,12 @@ public enum LensCubeErrorCode { NO_CANDIDATE_FACT_AVAILABLE(3028, 1200), NO_CANDIDATE_DIM_STORAGE_TABLES(3029, 1300), NO_STORAGE_TABLE_AVAIABLE(3030, 1400), - STORAGE_UNION_DISABLED(3031, 100), + STORAGE_UNION_DISABLED(3031, 1500), + COULD_NOT_PARSE_EXPRESSION(3032, 1500), // Error codes greater than 3100 are errors while doing a metastore operation. ERROR_IN_ENTITY_DEFINITION(3101, 100), - TIMELINE_ABSENT(3102, 100); + TIMELINE_ABSENT(3102, 100), + EXPRESSION_NOT_PARSABLE(3103, 1500); public LensErrorInfo getLensErrorInfo() { return this.errorInfo; http://git-wip-us.apache.org/repos/asf/lens/blob/bf4c0bec/lens-cube/src/main/java/org/apache/lens/cube/metadata/ExprColumn.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/ExprColumn.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/ExprColumn.java index b418517..da87e31 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/
lens git commit: LENS-890 : Adds per-queue and per-priority driver max launched queries constraints
Repository: lens Updated Branches: refs/heads/master 73f92430c -> 4d3d2f82f LENS-890 : Adds per-queue and per-priority driver max launched queries constraints Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/4d3d2f82 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/4d3d2f82 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/4d3d2f82 Branch: refs/heads/master Commit: 4d3d2f82fb93ee4d5c52dc3b4910573953094c0a Parents: 73f9243 Author: Rajat Khandelwal <pro...@apache.org> Authored: Tue Dec 15 18:45:08 2015 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Tue Dec 15 18:45:08 2015 +0530 -- .../org/apache/lens/api/util/CommonUtils.java | 27 ++- .../FactPartitionBasedQueryCostCalculator.java | 8 +- .../org/apache/lens/driver/hive/HiveDriver.java | 68 +++--- .../apache/lens/driver/hive/TestHiveDriver.java | 233 --- .../src/test/resources/priority_tests.data | 1 + .../server/api/driver/AbstractLensDriver.java | 13 +- .../lens/server/api/driver/LensDriver.java | 13 +- .../server/api/query/AbstractQueryContext.java | 9 +- .../lens/server/api/query/QueryContext.java | 12 +- .../MaxConcurrentDriverQueriesConstraint.java | 54 - ...oncurrentDriverQueriesConstraintFactory.java | 49 +++- .../api/query/TestAbstractQueryContext.java | 4 +- ...axConcurrentDriverQueriesConstraintTest.java | 181 +- .../server/query/QueryExecutionServiceImpl.java | 1 + .../ThreadSafeEstimatedQueryCollectionTest.java | 3 +- 15 files changed, 527 insertions(+), 149 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/4d3d2f82/lens-api/src/main/java/org/apache/lens/api/util/CommonUtils.java -- diff --git a/lens-api/src/main/java/org/apache/lens/api/util/CommonUtils.java b/lens-api/src/main/java/org/apache/lens/api/util/CommonUtils.java index 38d58c7..119c924 100644 --- a/lens-api/src/main/java/org/apache/lens/api/util/CommonUtils.java +++ b/lens-api/src/main/java/org/apache/lens/api/util/CommonUtils.java @@ -27,6 +27,25 @@ public class CommonUtils { } + public interface EntryParser<K, V> { +K parseKey(String str); + +V parseValue(String str); + } + + private static EntryParser<String, String> defaultEntryParser = new EntryParser<String, String>() { +@Override +public String parseKey(String str) { + return str; +} + +@Override +public String parseValue(String str) { + return str; +} + }; + + /** * Splits given String str around non-escaped commas. Then parses each of the split element * as map entries in the format `key=value`. Constructs a map of such entries. @@ -36,7 +55,11 @@ public class CommonUtils { * @return parsed map */ public static Map<String, String> parseMapFromString(String str) { -Map<String, String> map = new HashMap<>(); +return parseMapFromString(str, defaultEntryParser); + } + + public static <K, V> Map<K, V> parseMapFromString(String str, EntryParser<K, V> parser) { +Map<K, V> map = new HashMap<>(); if (str != null) { for (String kv : str.split("(? 1) { value = kvArray[1].replaceAll(",", ",").trim(); } - map.put(key, value); + map.put(parser.parseKey(key), parser.parseValue(value)); } } } http://git-wip-us.apache.org/repos/asf/lens/blob/4d3d2f82/lens-cube/src/main/java/org/apache/lens/cube/query/cost/FactPartitionBasedQueryCostCalculator.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/query/cost/FactPartitionBasedQueryCostCalculator.java b/lens-cube/src/main/java/org/apache/lens/cube/query/cost/FactPartitionBasedQueryCostCalculator.java index d56e1c7..9fecdbc 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/query/cost/FactPartitionBasedQueryCostCalculator.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/query/cost/FactPartitionBasedQueryCostCalculator.java @@ -47,8 +47,11 @@ public class FactPartitionBasedQueryCostCalculator implements QueryCostCalculato */ @SuppressWarnings("unchecked") // required for (Set) casting - private double getTotalPartitionCost(final AbstractQueryContext queryContext, LensDriver driver) + private Double getTotalPartitionCost(final AbstractQueryContext queryContext, LensDriver driver) throws LensException { +if (queryContext.getDriverRewriterPlan(driver) == null) { + return null; +} double cost = 0; for (Map.Entry<String, Set> entry : getAllPartiti
lens git commit: LENS-879 : Adds Base framework for scheduler
Repository: lens Updated Branches: refs/heads/master 0e4c18cb9 -> 7e9e47ea6 LENS-879 : Adds Base framework for scheduler Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/7e9e47ea Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/7e9e47ea Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/7e9e47ea Branch: refs/heads/master Commit: 7e9e47ea66109470327607fafb26045080fc969d Parents: 0e4c18c Author: Ajay Yadava <ajayyad...@apache.org> Authored: Thu Dec 10 16:28:40 2015 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Thu Dec 10 16:28:40 2015 +0530 -- .../lens/api/query/SchedulerJobHandle.java | 82 ++ .../apache/lens/api/query/SchedulerJobInfo.java | 68 + .../api/query/SchedulerJobInstanceHandle.java | 86 ++ .../api/query/SchedulerJobInstanceInfo.java | 84 ++ .../src/main/resources/scheduler-job-0.1.xsd| 283 +++ .../src/main/resources/example-job.xml | 55 .../api/scheduler/QuerySchedulerService.java| 26 -- .../server/api/scheduler/SchedulerJobStats.java | 29 ++ .../server/api/scheduler/SchedulerService.java | 238 .../lens/server/metrics/MetricsServiceImpl.java | 4 +- .../scheduler/QuerySchedulerServiceImpl.java| 55 .../server/scheduler/SchedulerServiceImpl.java | 200 + .../src/main/resources/lensserver-default.xml | 2 +- .../server/healthcheck/TestHealthChecks.java| 4 +- pom.xml | 2 +- src/site/apt/admin/config.apt | 2 +- 16 files changed, 1132 insertions(+), 88 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/7e9e47ea/lens-api/src/main/java/org/apache/lens/api/query/SchedulerJobHandle.java -- diff --git a/lens-api/src/main/java/org/apache/lens/api/query/SchedulerJobHandle.java b/lens-api/src/main/java/org/apache/lens/api/query/SchedulerJobHandle.java new file mode 100644 index 000..aa4dc13 --- /dev/null +++ b/lens-api/src/main/java/org/apache/lens/api/query/SchedulerJobHandle.java @@ -0,0 +1,82 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.lens.api.query; + +import java.io.Serializable; +import java.util.UUID; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +import org.apache.commons.lang.StringUtils; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; + +/** + * Handle for SchedulerJob. + */ +@XmlRootElement +@AllArgsConstructor +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@EqualsAndHashCode(callSuper = false) +public class SchedulerJobHandle implements Serializable { + + /** + * The Constant serialVersionUID. + */ + private static final long serialVersionUID = 1L; + + /** + * The handle id. + */ + @XmlElement + @Getter + private UUID handleId; + + /** + * From string. + * + * @param handle the handle for scheduler job + * @return the handle for + */ + public static SchedulerJobHandle fromString(String handle) { +return new SchedulerJobHandle(UUID.fromString(handle)); + } + + public String getHandleIdString() { +if (handleId == null) { + return StringUtils.EMPTY; +} +return handleId.toString(); + } + + /** + * String representation of the SchedulerJobHandle. + * @return string representation of the handleId + */ + @Override + public String toString() { +return getHandleIdString(); + } + +} http://git-wip-us.apache.org/repos/asf/lens/blob/7e9e47ea/lens-api/src/main/java/org/apache/lens/api/query/SchedulerJobInfo.java -- diff --git a/lens-api/src/main/java/org/apache/lens/api/query/SchedulerJobInfo.java b/lens-api/src/main/java/org/apache/lens/api/query/Schedul
lens git commit: LENS-851 : Fix aliasing for non-aggregate functions in multi fact union query
Repository: lens Updated Branches: refs/heads/master d5e923e25 -> 1b475f2ea LENS-851 : Fix aliasing for non-aggregate functions in multi fact union query Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/1b475f2e Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/1b475f2e Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/1b475f2e Branch: refs/heads/master Commit: 1b475f2ea67a275b22248f677a08d5caec7f959a Parents: d5e923e Author: Rajat Khandelwal <pro...@apache.org> Authored: Fri Jan 8 14:53:17 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Fri Jan 8 14:53:17 2016 +0530 -- .../java/org/apache/lens/cube/parse/HQLParser.java | 15 +++ .../cube/parse/SingleFactMultiStorageHQLContext.java | 2 +- .../org/apache/lens/cube/parse/TestCubeRewriter.java | 15 +++ 3 files changed, 31 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/1b475f2e/lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java index 6c3d4c3..bfb65c7 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java @@ -732,6 +732,21 @@ public final class HQLParser { return false; } + public static boolean isNonAggregateFunctionAST(ASTNode node) { +int exprTokenType = node.getToken().getType(); +if (exprTokenType == HiveParser.TOK_FUNCTION || exprTokenType == HiveParser.TOK_FUNCTIONDI + || exprTokenType == HiveParser.TOK_FUNCTIONSTAR) { + assert (node.getChildCount() != 0); + if (node.getChild(0).getType() == HiveParser.Identifier) { +String functionName = BaseSemanticAnalyzer.unescapeIdentifier(node.getChild(0).getText()); +if (FunctionRegistry.getGenericUDAFResolver(functionName) == null) { + return true; +} + } +} +return false; + } + /** * @param node an ASTNode * @return true when input node is a SELECT AST Node. Otherwise, false. http://git-wip-us.apache.org/repos/asf/lens/blob/1b475f2e/lens-cube/src/main/java/org/apache/lens/cube/parse/SingleFactMultiStorageHQLContext.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/SingleFactMultiStorageHQLContext.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/SingleFactMultiStorageHQLContext.java index e531e6b..ac56328 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/SingleFactMultiStorageHQLContext.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/SingleFactMultiStorageHQLContext.java @@ -185,7 +185,7 @@ public class SingleFactMultiStorageHQLContext extends UnionHQLContext { outerAST.addChild(dotAST); innerToOuterASTs.put(new HashableASTNode(innerSelectASTWithoutAlias), outerAST); return outerAST; -} else if (isTableColumnAST(astNode)) { +} else if (isTableColumnAST(astNode) || isNonAggregateFunctionAST(astNode)) { if (innerToOuterASTs.containsKey(new HashableASTNode(astNode))) { return innerToOuterASTs.get(new HashableASTNode(astNode)); } http://git-wip-us.apache.org/repos/asf/lens/blob/1b475f2e/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java -- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java index f02cdb0..61fb73c 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java @@ -417,6 +417,21 @@ public class TestCubeRewriter extends TestQueryRewrite { } conf.setBoolean(CubeQueryConfUtil.ENABLE_STORAGES_UNION, true); + hqlQuery = rewrite("select ascii(cityid) as `City ID`, msr8, msr7 as `Third measure` " ++ "from testCube where cityid = 'a' and zipcode = 'b' and " + TWO_MONTHS_RANGE_UPTO_HOURS, conf); + + expected = getExpectedUnionQuery(TEST_CUBE_NAME, storages, provider, +"SELECT testcube.alias0 as `City ID`, sum(testcube.alias1) + max(testcube.alias2), " + + "case when sum(testcube.alias1) = 0 then 0 else sum(testcube.alias3)/sum(testcube.alias1) end " + + "as `Third Measure`", +null, "group by testcube.alias0", +"select ascii(testcube.cityid)
lens git commit: LENS-884 : Fix lens-ship-jars.jar to have version in the assembly as well
Repository: lens Updated Branches: refs/heads/master 942f071f9 -> 404d4518d LENS-884 : Fix lens-ship-jars.jar to have version in the assembly as well Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/404d4518 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/404d4518 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/404d4518 Branch: refs/heads/master Commit: 404d4518d9cf96d1a2c41a73da598fc27fece992 Parents: 942f071 Author: Rajat Khandelwal <pro...@apache.org> Authored: Fri Nov 27 12:46:54 2015 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Fri Nov 27 12:46:54 2015 +0530 -- lens-dist/src/main/assembly/bin-dist.xml | 1 - lens-ship-jars/pom.xml | 19 --- pom.xml | 22 ++ 3 files changed, 22 insertions(+), 20 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/404d4518/lens-dist/src/main/assembly/bin-dist.xml -- diff --git a/lens-dist/src/main/assembly/bin-dist.xml b/lens-dist/src/main/assembly/bin-dist.xml index 535e991..dede085 100644 --- a/lens-dist/src/main/assembly/bin-dist.xml +++ b/lens-dist/src/main/assembly/bin-dist.xml @@ -411,7 +411,6 @@ ../lens-ship-jars/target/lens-ship-jars-${project.version}.jar /server/shipjars/ - lens-ship-jars.jar http://git-wip-us.apache.org/repos/asf/lens/blob/404d4518/lens-ship-jars/pom.xml -- diff --git a/lens-ship-jars/pom.xml b/lens-ship-jars/pom.xml index b150980..ece22a1 100644 --- a/lens-ship-jars/pom.xml +++ b/lens-ship-jars/pom.xml @@ -81,26 +81,7 @@ - - -package - - shade - - - - - - log4j.properties - - - - - - - - http://git-wip-us.apache.org/repos/asf/lens/blob/404d4518/pom.xml -- diff --git a/pom.xml b/pom.xml index b19857f..732b3bb 100644 --- a/pom.xml +++ b/pom.xml @@ -567,6 +567,28 @@ + + org.apache.maven.plugins + maven-shade-plugin + + + package + +shade + + + + + +log4j.properties + + + + + + + +
lens git commit: LENS-840 : LDAP config loader should be more forgiving for attribute absense
Repository: lens Updated Branches: refs/heads/master 114dab346 -> b3b7e5f4d LENS-840 : LDAP config loader should be more forgiving for attribute absense Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/b3b7e5f4 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/b3b7e5f4 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/b3b7e5f4 Branch: refs/heads/master Commit: b3b7e5f4d087be5377e0f043e00b57dfb6e4e124 Parents: 114dab3 Author: Rajat Khandelwal <pro...@apache.org> Authored: Mon Nov 30 11:37:14 2015 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Nov 30 11:37:14 2015 +0530 -- .../lens/server/user/LDAPBackedDatabaseUserConfigLoader.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/b3b7e5f4/lens-server/src/main/java/org/apache/lens/server/user/LDAPBackedDatabaseUserConfigLoader.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/user/LDAPBackedDatabaseUserConfigLoader.java b/lens-server/src/main/java/org/apache/lens/server/user/LDAPBackedDatabaseUserConfigLoader.java index 82b76c9..a647282 100644 --- a/lens-server/src/main/java/org/apache/lens/server/user/LDAPBackedDatabaseUserConfigLoader.java +++ b/lens-server/src/main/java/org/apache/lens/server/user/LDAPBackedDatabaseUserConfigLoader.java @@ -29,6 +29,7 @@ import java.util.concurrent.TimeUnit; import javax.naming.Context; import javax.naming.NamingEnumeration; import javax.naming.NamingException; +import javax.naming.directory.Attribute; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; import javax.naming.ldap.InitialLdapContext; @@ -155,7 +156,8 @@ public class LDAPBackedDatabaseUserConfigLoader extends DatabaseUserConfigLoader String[] attributes = new String[ldapFields.length]; SearchResult sr = findAccountByAccountName(user); for (int i = 0; i < attributes.length; i++) { - attributes[i] = sr.getAttributes().get(ldapFields[i]).get().toString(); + Attribute attr = sr.getAttributes().get(ldapFields[i]); + attributes[i] = (attr == null ? null : attr.get().toString()); } return attributes; }
[2/2] lens git commit: LENS-123 : Adds ability to load different instances of same driver class
LENS-123 : Adds ability to load different instances of same driver class Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/114dab34 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/114dab34 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/114dab34 Branch: refs/heads/master Commit: 114dab34642929152230cd049f1436ad796bedc2 Parents: 404d451 Author: Puneet Gupta <puneet.k.gu...@gmail.com> Authored: Mon Nov 30 11:06:12 2015 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Nov 30 11:06:12 2015 +0530 -- .../lens/api/query/LensPreparedQuery.java | 8 +- .../org/apache/lens/api/query/LensQuery.java| 4 +- .../lens/cli/commands/LensQueryCommands.java| 2 +- .../drivers/hive/hive1/hivedriver-site.xml | 80 ++ .../org/apache/lens/client/LensStatement.java | 2 +- .../drivers/hive/hive1/hivedriver-site.xml | 80 ++ .../lens/driver/cube/TestMinCostSelector.java | 8 +- .../org/apache/lens/driver/es/ESDriver.java | 13 +- .../org/apache/lens/driver/es/ESDriverTest.java | 2 +- .../org/apache/lens/driver/hive/HiveDriver.java | 51 --- .../apache/lens/driver/hive/TestHiveDriver.java | 4 +- .../lens/driver/hive/TestRemoteHiveDriver.java | 16 +- .../drivers/hive/hive1/hivedriver-site.xml | 49 +++ .../src/test/resources/hivedriver-site.xml | 49 --- .../org/apache/lens/driver/jdbc/JDBCDriver.java | 38 ++--- .../driver/jdbc/TestColumnarSQLRewriter.java| 6 +- .../apache/lens/driver/jdbc/TestJDBCFinal.java | 2 +- .../apache/lens/driver/jdbc/TestJdbcDriver.java | 12 +- .../drivers/jdbc/jdbc1/jdbcdriver-site.xml | 70 + .../src/test/resources/jdbcdriver-site.xml | 70 - .../drivers/hive/hive1/hivedriver-site.xml | 80 ++ lens-ml-lib/src/test/resources/lens-site.xml| 2 +- .../lib/query/TestAbstractFileFormatter.java| 2 +- .../lens/server/api/LensConfConstants.java | 20 ++- .../server/api/driver/AbstractLensDriver.java | 71 + .../lens/server/api/driver/LensDriver.java | 13 +- .../server/api/query/AbstractQueryContext.java | 2 +- .../api/query/DriverSelectorQueryContext.java | 4 +- .../server/api/query/FinishedLensQuery.java | 15 +- .../server/api/query/PreparedQueryContext.java | 7 +- .../lens/server/api/query/QueryContext.java | 3 +- .../lens/server/api/driver/MockDriver.java | 14 +- .../lens/server/api/query/MockQueryContext.java | 2 +- .../api/query/TestAbstractQueryContext.java | 4 +- .../apache/lens/server/query/LensServerDAO.java | 10 +- .../server/query/QueryExecutionServiceImpl.java | 146 ++- .../apache/lens/server/rewrite/RewriteUtil.java | 2 +- .../lens/server/session/LensSessionImpl.java| 15 +- .../src/main/resources/lensserver-default.xml | 2 +- .../org/apache/lens/server/LensJerseyTest.java | 3 + .../apache/lens/server/TestServerRestart.java | 10 +- .../lens/server/query/TestEventService.java | 2 + .../apache/lens/server/query/TestLensDAO.java | 2 +- .../lens/server/query/TestQueryConstraints.java | 60 +--- .../lens/server/query/TestQueryService.java | 38 +++-- .../lens/server/rewrite/TestRewriting.java | 17 ++- .../drivers/hive/hive1/hivedriver-site.xml | 85 +++ .../drivers/hive/hive2/hivedriver-site.xml | 85 +++ .../drivers/jdbc/jdbc1/jdbcdriver-site.xml | 58 .../mock/fail1/failing-query-driver-site.xml| 32 .../mockHive/mockHive1/hivedriver-site.xml | 95 .../mockHive/mockHive2/hivedriver-site.xml | 95 .../resources/failing-query-driver-site.xml | 27 .../src/test/resources/hivedriver-site.xml | 80 -- .../src/test/resources/jdbcdriver-site.xml | 55 --- lens-server/src/test/resources/lens-site.xml| 4 +- src/site/apt/admin/config-server.apt| 37 - src/site/apt/admin/config.apt | 2 +- src/site/apt/lenshome/install-and-run.apt | 18 ++- .../drivers/hive/hive1/hivedriver-site.xml | 57 .../drivers/jdbc/jdbc1/jdbcdriver-site.xml | 50 +++ .../server/hivedriver-site.xml | 57 .../server/jdbcdriver-site.xml | 50 --- tools/conf-pseudo-distr/server/lens-site.xml| 2 +- .../drivers/hive/hive1/hivedriver-site.xml | 41 ++ .../drivers/jdbc/jdbc1/jdbcdriver-site.xml | 50 +++ tools/conf/server/hivedriver-site.xml | 41 -- tools/conf/server/jdbcdriver-site.xml | 50 --- tools/conf/server/lens-site.xml | 2 +- 69 files changed, 1463 insertions(+), 7
[1/2] lens git commit: LENS-123 : Adds ability to load different instances of same driver class
Repository: lens Updated Branches: refs/heads/master 404d4518d -> 114dab346 http://git-wip-us.apache.org/repos/asf/lens/blob/114dab34/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 7201e0d..ffd2d42 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 @@ -47,6 +47,7 @@ import org.apache.lens.driver.hive.HiveDriver; import org.apache.lens.server.BaseLensService; import org.apache.lens.server.LensServerConf; import org.apache.lens.server.LensServices; +import org.apache.lens.server.api.LensConfConstants; import org.apache.lens.server.api.driver.*; import org.apache.lens.server.api.error.LensException; import org.apache.lens.server.api.error.LensMultiCauseException; @@ -72,7 +73,8 @@ import org.apache.lens.server.util.FairPriorityBlockingQueue; import org.apache.lens.server.util.UtilityMethods; import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; + import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FileSystem; @@ -86,6 +88,7 @@ import org.slf4j.LoggerFactory; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; + import lombok.*; import lombok.extern.slf4j.Slf4j; @@ -337,25 +340,9 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE * @throws LensException the lens exception */ private void loadDriversAndSelector() throws LensException { -Class[] driverClasses = conf.getClasses(DRIVER_CLASSES); -if (driverClasses != null) { - for (Class driverClass : driverClasses) { -try { - LensDriver driver = (LensDriver) driverClass.newInstance(); - driver.configure(LensServerConf.getConfForDrivers()); - if (driver instanceof HiveDriver) { -driver.registerDriverEventListener(driverEventListener); - } - drivers.put(driverClass.getName(), driver); - log.info("Driver for {} is loaded", driverClass); -} catch (Exception e) { - log.warn("Could not load the driver:{}", driverClass, e); - throw new LensException("Could not load driver " + driverClass, e); -} - } -} else { - throw new LensException("No drivers specified"); -} +//Load all configured Drivers +loadDrivers(); +//Load configured Driver Selector try { Class driverSelectorClass = conf.getClass(DRIVER_SELECTOR_CLASS, MinQueryCostSelector.class, @@ -369,6 +356,87 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE } } + /** + * Loads drivers for the configured Driver types in lens-site.xml + * + * The driver's resources (-site.xml and other files) should be present + * under directory conf/drivers// + * Example :conf/drivers/hive/h1, conf/drivers/hive/h2, conf/drivers/jdbc/mysql1, conf/drivers/jdbc/vertica1 + * + * @throws LensException + */ + private void loadDrivers() throws LensException { +Collection driverTypes = conf.getStringCollection(DRIVER_TYPES_AND_CLASSES); +if (driverTypes.isEmpty()) { + throw new LensException("No drivers configured"); +} +File driversBaseDir = new File(System.getProperty(LensConfConstants.CONFIG_LOCATION, +LensConfConstants.DEFAULT_CONFIG_LOCATION), LensConfConstants.DRIVERS_BASE_DIR); +if (!driversBaseDir.isDirectory()) { + throw new LensException("No drivers found at location " + driversBaseDir.getAbsolutePath()); +} +for (String driverType : driverTypes) { + if (StringUtils.isBlank(driverType)) { +throw new LensException("Driver type Configuration not specified correctly. Encountered blank driver type"); + } + String[] driverTypeAndClass = StringUtils.split(driverType.trim(), ':'); + if (driverTypeAndClass.length != 2) { +throw new LensException("Driver type Configuration not specified correctly : " + driverType); + } + loadDriversForType(driverTypeAndClass[0], driverTypeAndClass[1], driversBaseDir); +} +if (drivers.isEmpty()){ + throw new LensException("No drivers loaded. Please check the drivers in :"+driversBaseDir); +} + } + /** + * Loads drivers of a particular type + * + * @param driverType : type of driver (hive, jdbc, el, etc) + * @param driverTypeClassName :driver class name + * @param driversBaseDir :path for
lens git commit: LENS-881 : Remove hive-metastore jar from lens-ship-jars
Repository: lens Updated Branches: refs/heads/master b71be2dc9 -> 5d79ecfdb LENS-881 : Remove hive-metastore jar from lens-ship-jars Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/5d79ecfd Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/5d79ecfd Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/5d79ecfd Branch: refs/heads/master Commit: 5d79ecfdbce74bd5b1f77911f200af1b7d76a01a Parents: b71be2d Author: Amareshwari Sriramadasu <amareshw...@apache.org> Authored: Thu Nov 26 10:25:10 2015 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Thu Nov 26 10:25:10 2015 +0530 -- lens-ship-jars/pom.xml | 6 -- 1 file changed, 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/5d79ecfd/lens-ship-jars/pom.xml -- diff --git a/lens-ship-jars/pom.xml b/lens-ship-jars/pom.xml index 6268445..b150980 100644 --- a/lens-ship-jars/pom.xml +++ b/lens-ship-jars/pom.xml @@ -52,11 +52,6 @@ net.sf.opencsv opencsv - - org.apache.hive - hive-metastore - compile - @@ -72,7 +67,6 @@ org.apache.lens:lens-storage-db org.apache.lens:lens-cube org.apache.lens:lens-query-lib - org.apache.hive:hive-metastore net.sf.opencsv:opencsv
lens git commit: LENS-917 : Fixs table pruning for multiple chains for same destination table
Repository: lens Updated Branches: refs/heads/master 9c03c76e6 -> c7451f8e8 LENS-917 : Fixs table pruning for multiple chains for same destination table Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/c7451f8e Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/c7451f8e Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/c7451f8e Branch: refs/heads/master Commit: c7451f8e8e8f429fc55458b03dbb10a2b7428be9 Parents: 9c03c76 Author: Amareshwari Sriramadasu <amareshw...@apache.org> Authored: Tue Jan 12 11:09:24 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Tue Jan 12 11:09:24 2016 +0530 -- .../org/apache/lens/cube/parse/Aliased.java | 4 + .../lens/cube/parse/CandidateTableResolver.java | 150 +-- .../lens/cube/parse/CubeQueryContext.java | 43 +++--- .../lens/cube/parse/ExpressionResolver.java | 3 + .../lens/cube/parse/StorageTableResolver.java | 4 +- .../lens/cube/parse/join/AutoJoinContext.java | 12 +- .../apache/lens/cube/parse/CubeTestSetup.java | 28 .../cube/parse/TestDenormalizationResolver.java | 16 +- 8 files changed, 152 insertions(+), 108 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/c7451f8e/lens-cube/src/main/java/org/apache/lens/cube/parse/Aliased.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/Aliased.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/Aliased.java index 56fe9fc..160a9c6 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/Aliased.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/Aliased.java @@ -36,4 +36,8 @@ public class Aliased { public static Aliased create(K obj, String alias) { return new Aliased(obj, alias); } + + public String getName() { +return object.getName(); + } } http://git-wip-us.apache.org/repos/asf/lens/blob/c7451f8e/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java index 38ff5a4..00ccf36 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java @@ -67,9 +67,9 @@ class CandidateTableResolver implements ContextRewriter { checkForQueriedColumns = false; } else { // populate optional tables - for (Dimension dim : cubeql.getOptionalDimensions()) { + for (Aliased dim : cubeql.getOptionalDimensions()) { log.info("Populating optional dim:{}", dim); -populateDimTables(dim, cubeql, true); +populateDimTables(dim.getObject(), cubeql, true); } if (cubeql.getAutoJoinCtx() != null) { // Before checking for candidate table columns, prune join paths containing non existing columns @@ -117,7 +117,7 @@ class CandidateTableResolver implements ContextRewriter { return; } try { - Set candidates = new HashSet(); + Set candidates = new HashSet<>(); cubeql.getCandidateDimTables().put(dim, candidates); List dimtables = cubeql.getMetastoreClient().getAllDimensionTables(dim); if (dimtables.isEmpty()) { @@ -126,7 +126,7 @@ class CandidateTableResolver implements ContextRewriter { "Dimension tables do not exist"); } else { log.info("Not considering optional dimension {} as, No dimension tables exist", dim); - removeOptionalDim(cubeql, dim); + removeOptionalDimWithoutAlias(cubeql, dim); } } for (CubeDimensionTable dimtable : dimtables) { @@ -139,44 +139,30 @@ class CandidateTableResolver implements ContextRewriter { } } - private void pruneOptionalDims(CubeQueryContext cubeql) { -Set tobeRemoved = new HashSet(); -Set allCandidates = new HashSet(); -allCandidates.addAll(cubeql.getCandidateFacts()); -for (Set cdims : cubeql.getCandidateDimTables().values()) { - allCandidates.addAll(cdims); -} -Set removedCandidates = new HashSet(); -for (Map.Entry<Dimension, OptionalDimCtx> optdimEntry : cubeql.getOptionalDimensionMap().entrySet()) { - Dimension dim = optdimEntry.getKey(); - OptionalDimCtx optdim = optdimEntry.getValue(); - Iterator iter = optdim.requiredForCandidates.iterator(); - while (iter.hasNext()) { -CandidateTable candidate = iter.next(); -if (!allCandidates.contains(candidate)) { - l
lens git commit: LENS-987 : Add AlarmService for scheduling time based queries
Repository: lens Updated Branches: refs/heads/master 68c5267f0 -> 92456effb LENS-987 : Add AlarmService for scheduling time based queries Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/92456eff Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/92456eff Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/92456eff Branch: refs/heads/master Commit: 92456effb9508d4578894a82c1f2a419fe504d97 Parents: 68c5267 Author: Lavkesh Lahngir <lavk...@linux.com> Authored: Mon Jun 13 17:17:04 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Jun 13 17:17:04 2016 +0530 -- lens-server-api/pom.xml | 4 + .../server/api/events/SchedulerAlarmEvent.java | 51 + lens-server/pom.xml | 4 + .../org/apache/lens/server/LensServices.java| 7 +- .../lens/server/metrics/MetricsServiceImpl.java | 2 + .../notification/services/AlarmService.java | 220 +++ .../notification/services/AlarmServiceTest.java | 180 +++ pom.xml | 6 + 8 files changed, 473 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/92456eff/lens-server-api/pom.xml -- diff --git a/lens-server-api/pom.xml b/lens-server-api/pom.xml index 5508fb9..b59c249 100644 --- a/lens-server-api/pom.xml +++ b/lens-server-api/pom.xml @@ -105,5 +105,9 @@ org.slf4j jcl-over-slf4j + + joda-time + joda-time + http://git-wip-us.apache.org/repos/asf/lens/blob/92456eff/lens-server-api/src/main/java/org/apache/lens/server/api/events/SchedulerAlarmEvent.java -- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/events/SchedulerAlarmEvent.java b/lens-server-api/src/main/java/org/apache/lens/server/api/events/SchedulerAlarmEvent.java new file mode 100644 index 000..2bcf0d6 --- /dev/null +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/events/SchedulerAlarmEvent.java @@ -0,0 +1,51 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.lens.server.api.events; + +import org.apache.lens.api.query.SchedulerJobHandle; + +import org.joda.time.DateTime; + +import lombok.Data; + +/** + * This event is triggered by the AlarmService whenever a scheduled query needs to be scheduled. + */ +@Data +public class SchedulerAlarmEvent extends LensEvent { + + /** + * jobHandle for which the alarm needs to be triggered. + */ + private SchedulerJobHandle jobHandle; + + private DateTime nominalTime; + + public SchedulerAlarmEvent(SchedulerJobHandle jobHandle, DateTime nominalTime) { +super(nominalTime.getMillis()); +this.jobHandle = jobHandle; +this.nominalTime = nominalTime; + } + + @Override + public String getEventId() { +return jobHandle.getHandleIdString(); + } + +} http://git-wip-us.apache.org/repos/asf/lens/blob/92456eff/lens-server/pom.xml -- diff --git a/lens-server/pom.xml b/lens-server/pom.xml index b73cd05..2294b2a 100644 --- a/lens-server/pom.xml +++ b/lens-server/pom.xml @@ -242,6 +242,10 @@ guava + org.quartz-scheduler + quartz + + org.apache.lens lens-server-api test-jar http://git-wip-us.apache.org/repos/asf/lens/blob/92456eff/lens-server/src/main/java/org/apache/lens/server/LensServices.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/LensServices.java b/lens-server/src/main/java/org/apache/lens/server/LensServices.java index 10ec8b7..f6f2f36 100644 --- a/lens-server/src/main/java/org/apache/lens/server/LensServices.java +++ b/lens-server/src/main/java/org/apache/lens/server/LensServi
lens git commit: LENS-1151 : Add logs for Queries moving between waiting and queued queries data structures
Repository: lens Updated Branches: refs/heads/master 4fea0c4a2 -> 714aae99d LENS-1151 : Add logs for Queries moving between waiting and queued queries data structures Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/714aae99 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/714aae99 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/714aae99 Branch: refs/heads/master Commit: 714aae99d67319a1719b08a3386b5893d2b250ce Parents: 4fea0c4 Author: Rajat Khandelwal <pro...@apache.org> Authored: Fri Jun 17 10:35:27 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Fri Jun 17 10:35:27 2016 +0530 -- .../lens/server/query/QueryExecutionServiceImpl.java | 13 +++-- .../query/collect/UnioningWaitingQueriesSelector.java | 3 +++ .../DefaultQueryLaunchingConstraintsChecker.java | 3 +++ 3 files changed, 9 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/714aae99/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 1f6ec13..2de098d 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 @@ -697,18 +697,12 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE log.debug("Acquiring lock in QuerySubmitter"); removalFromLaunchedQueriesLock.lock(); try { - -boolean isQueryAllowedToLaunch = this.constraintsChecker.canLaunch(query, launchedQueries); - -log.debug("isQueryAllowedToLaunch:{}", isQueryAllowedToLaunch); -if (isQueryAllowedToLaunch) { - +if (this.constraintsChecker.canLaunch(query, launchedQueries)) { /* Query is not going to be added to waiting queries. No need to keep the lock. First release lock, then launch query */ removalFromLaunchedQueriesLock.unlock(); launchQuery(query); } else { - /* Query is going to be added to waiting queries. Keep holding the lock to avoid any removal from launched queries. First add to waiting queries, then release lock */ addToWaitingQueries(query); @@ -3185,12 +3179,11 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE Set eligibleWaitingQueries = this.waitingQueriesSelector .selectQueries(finishedQuery, this.waitingQueries); - +log.info("Eligible queries to pick from waiting queries: {}", eligibleWaitingQueries); if (eligibleWaitingQueries.isEmpty()) { - log.debug("No queries eligible to move out of waiting state."); + log.info("No queries eligible to move out of waiting state."); return; } - waitingQueries.removeAll(eligibleWaitingQueries); queuedQueries.addAll(eligibleWaitingQueries); if (log.isDebugEnabled()) { http://git-wip-us.apache.org/repos/asf/lens/blob/714aae99/lens-server/src/main/java/org/apache/lens/server/query/collect/UnioningWaitingQueriesSelector.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/query/collect/UnioningWaitingQueriesSelector.java b/lens-server/src/main/java/org/apache/lens/server/query/collect/UnioningWaitingQueriesSelector.java index 8db059e..40b837f 100644 --- a/lens-server/src/main/java/org/apache/lens/server/query/collect/UnioningWaitingQueriesSelector.java +++ b/lens-server/src/main/java/org/apache/lens/server/query/collect/UnioningWaitingQueriesSelector.java @@ -32,11 +32,13 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import lombok.NonNull; +import lombok.extern.slf4j.Slf4j; /** * Selects queries eligible by all {@link WaitingQueriesSelectionPolicy} to move them out of waiting state. * */ +@Slf4j public class UnioningWaitingQueriesSelector implements WaitingQueriesSelector { private final ImmutableSet selectionPolicies; @@ -86,6 +88,7 @@ public class UnioningWaitingQueriesSelector implements WaitingQueriesSelector { Set candiateQueries = selectionPolicy.selectQueries(finishedQuery, waitingQueries); candidateQueriesSets.add(candiateQueries); + l
lens git commit: LENS-909 : Remove sending result as part of email incase of inmemory results
Repository: lens Updated Branches: refs/heads/master b805ee989 -> bee5cfd8d LENS-909 : Remove sending result as part of email incase of inmemory results Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/bee5cfd8 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/bee5cfd8 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/bee5cfd8 Branch: refs/heads/master Commit: bee5cfd8d6f216a0af042a4ae6772aa4dabfe320 Parents: b805ee9 Author: Puneet Gupta <puneet.k.gu...@gmail.com> Authored: Sun Feb 7 15:11:34 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Sun Feb 7 15:11:34 2016 +0530 -- .../lens/server/query/QueryEndNotifier.java | 26 +++- .../server/query/TestQueryEndEmailNotifier.java | 19 +++--- 2 files changed, 40 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/bee5cfd8/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java b/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java index ca00b4d..63c38d9 100644 --- a/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java +++ b/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java @@ -34,6 +34,8 @@ import javax.mail.internet.MimeMultipart; import org.apache.lens.api.query.QueryStatus; import org.apache.lens.server.LensServices; +import org.apache.lens.server.api.driver.InMemoryResultSet; +import org.apache.lens.server.api.driver.LensResultSet; import org.apache.lens.server.api.error.LensException; import org.apache.lens.server.api.events.AsyncEventListener; import org.apache.lens.server.api.metrics.MetricsService; @@ -44,6 +46,9 @@ import org.apache.lens.server.model.LogSegregationContext; import org.apache.commons.lang3.StringUtils; import org.apache.hadoop.hive.conf.HiveConf; +import org.joda.time.format.DateTimeFormat; +import org.joda.time.format.DateTimeFormatter; + import lombok.Data; import lombok.NonNull; import lombok.extern.slf4j.Slf4j; @@ -60,6 +65,18 @@ public class QueryEndNotifier extends AsyncEventListener { /** The Constant EMAIL_ERROR_COUNTER. */ public static final String EMAIL_ERROR_COUNTER = "email-send-errors"; + /** The time in seconds for which in memory result is available */ + private final int inMemoryResultsetTTLSecs; + + /** Time formatter for email message corresponding to InMemoryResultset + * Example : 2016-01-25 07:05:46 PM, IST + */ + static final DateTimeFormatter MESSAGE_DATE_FORMATTER = DateTimeFormat.forPattern("-MM-dd hh:mm:SS aaa, z"); + + /** Mail message corresponding to InMemoryResultset*/ + static final String RESULT_AVAILABLE_UNTIL_MSG = + "Query result is temporarily cached in the server and will be available until "; + /** The from. */ private final String from; @@ -97,6 +114,7 @@ public class QueryEndNotifier extends AsyncEventListener { mailSmtpConnectionTimeout = Integer.parseInt(conf.get(MAIL_SMTP_CONNECTIONTIMEOUT, MAIL_DEFAULT_SMTP_CONNECTIONTIMEOUT)); this.logSegregationContext = logSegregationContext; +this.inMemoryResultsetTTLSecs =conf.getInt(INMEMORY_RESULT_SET_TTL_SECS, DEFAULT_INMEMORY_RESULT_SET_TTL_SECS); } /* @@ -172,7 +190,13 @@ public class QueryEndNotifier extends AsyncEventListener { private String getResultMessage(QueryContext queryContext) { try { - return queryService.getResultset(queryContext.getQueryHandle()).toQueryResult().toPrettyString(); + LensResultSet result = queryService.getResultset(queryContext.getQueryHandle()); + if (result instanceof InMemoryResultSet) { // Do not include the result rows for InMemory results. +long availableUntilTime = ((InMemoryResultSet)result).getCreationTime() + inMemoryResultsetTTLSecs; +return RESULT_AVAILABLE_UNTIL_MSG + MESSAGE_DATE_FORMATTER.print(availableUntilTime); + } else { +return result.toQueryResult().toPrettyString(); + } } catch (LensException e) { log.error("Error retrieving result of query handle {} for sending e-mail", queryContext.getQueryHandle(), e); return "Error retrieving result."; http://git-wip-us.apache.org/repos/asf/lens/blob/bee5cfd8/lens-server/src/test/java/org/apache/lens/server/query/TestQueryEndEmailNotifier.java -- diff --git a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryEndEmailNotifier.java b/lens-server/src/test/java/org/apache/lens/server/q
[2/3] lens git commit: LENS-791 : Fix CLI output to print yaml representation of entity
http://git-wip-us.apache.org/repos/asf/lens/blob/b805ee98/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPlan.xml -- diff --git a/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPlan.xml b/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPlan.xml new file mode 100644 index 000..c4128b8 --- /dev/null +++ b/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPlan.xml @@ -0,0 +1,43 @@ + + + + +table1 +table2 + + false + MapReduce + scanning mode 1 + plan is to +run this +big query one +by one + + +1000 +1.0 +HIGH + + +81799e48-574c-4305-bd51-1c277c15713d + + \ No newline at end of file http://git-wip-us.apache.org/repos/asf/lens/blob/b805ee98/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPlan.yaml -- diff --git a/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPlan.yaml b/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPlan.yaml new file mode 100644 index 000..879227a --- /dev/null +++ b/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPlan.yaml @@ -0,0 +1,29 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +#http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +Tables Queried: table1, table2 +Is Has Sub Query: false +Exec Mode: MapReduce +Scan Mode: scanning mode 1 +Prepare Handle: 81799e48-574c-4305-bd51-1c277c15713d +Plan String: plan is to +run this +big query one +by one + +Query Cost: + Estimated Exec Time Millis: 1000 + Estimated Resource Usage: 1.0 + Cost Type: HIGH http://git-wip-us.apache.org/repos/asf/lens/blob/b805ee98/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPrepareHandle.xml -- diff --git a/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPrepareHandle.xml b/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPrepareHandle.xml new file mode 100644 index 000..21c5294 --- /dev/null +++ b/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPrepareHandle.xml @@ -0,0 +1,24 @@ + + + + 81799e48-574c-4305-bd51-1c277c15713d + \ No newline at end of file http://git-wip-us.apache.org/repos/asf/lens/blob/b805ee98/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPrepareHandle.yaml -- diff --git a/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPrepareHandle.yaml b/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPrepareHandle.yaml new file mode 100644 index 000..8bce762 --- /dev/null +++ b/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryPrepareHandle.yaml @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +#http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +81799e48-574c-4305-bd51-1c277c15713d \ No newline at end of file http://git-wip-us.apache.org/repos/asf/lens/blob/b805ee98/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryResultSetMetadata.xml -- diff --git a/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryResultSetMetadata.xml b/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryResultSetMetadata.xml new file
lens git commit: LENS-901 : Add option to stream results from execute timeout api, along with persisting the result
Repository: lens Updated Branches: refs/heads/master f88cf9bc3 -> 58d863643 LENS-901 : Add option to stream results from execute timeout api, along with persisting the result Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/58d86364 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/58d86364 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/58d86364 Branch: refs/heads/master Commit: 58d8636433f2166e4428a7a1c933e76aeadf2fde Parents: f88cf9b Author: Puneet Gupta <puneet.k.gu...@gmail.com> Authored: Fri Feb 5 08:31:15 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Fri Feb 5 08:31:15 2016 +0530 -- .../api/query/QueryHandleWithResultSet.java | 7 + .../org/apache/lens/api/query/QueryStatus.java | 5 + .../lens/driver/es/client/ESResultSet.java | 6 - .../org/apache/lens/driver/hive/HiveDriver.java | 21 +- .../lens/driver/hive/HiveInMemoryResultSet.java | 8 +- .../org/apache/lens/driver/jdbc/JDBCDriver.java | 18 +- .../apache/lens/driver/jdbc/JDBCResultSet.java | 13 -- .../apache/lens/driver/jdbc/TestJdbcDriver.java | 84 .../lens/server/api/LensConfConstants.java | 20 ++ .../server/api/driver/AbstractLensDriver.java | 34 +++- .../server/api/driver/InMemoryResultSet.java| 4 +- .../PartiallyFetchedInMemoryResultSet.java | 177 + .../lens/server/api/query/QueryContext.java | 86 +++-- .../lens/server/api/driver/MockDriver.java | 5 - .../server/query/QueryExecutionServiceImpl.java | 191 +-- .../src/main/resources/lenssession-default.xml | 21 ++ .../apache/lens/server/query/TestLensDAO.java | 2 +- .../lens/server/query/TestQueryService.java | 174 + .../lens/server/query/TestResultFormatting.java | 2 +- src/site/apt/admin/session-config.apt | 28 +-- 20 files changed, 733 insertions(+), 173 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/58d86364/lens-api/src/main/java/org/apache/lens/api/query/QueryHandleWithResultSet.java -- diff --git a/lens-api/src/main/java/org/apache/lens/api/query/QueryHandleWithResultSet.java b/lens-api/src/main/java/org/apache/lens/api/query/QueryHandleWithResultSet.java index a5da867..bf8967e 100644 --- a/lens-api/src/main/java/org/apache/lens/api/query/QueryHandleWithResultSet.java +++ b/lens-api/src/main/java/org/apache/lens/api/query/QueryHandleWithResultSet.java @@ -54,6 +54,13 @@ public class QueryHandleWithResultSet extends QuerySubmitResult { private QueryResult result; /** + * The result metadata + */ + @Getter + @Setter + private QueryResultSetMetadata resultMetadata; + + /** * The status. */ @Getter http://git-wip-us.apache.org/repos/asf/lens/blob/58d86364/lens-api/src/main/java/org/apache/lens/api/query/QueryStatus.java -- diff --git a/lens-api/src/main/java/org/apache/lens/api/query/QueryStatus.java b/lens-api/src/main/java/org/apache/lens/api/query/QueryStatus.java index 915dac7..40e5d87 100644 --- a/lens-api/src/main/java/org/apache/lens/api/query/QueryStatus.java +++ b/lens-api/src/main/java/org/apache/lens/api/query/QueryStatus.java @@ -212,6 +212,11 @@ public class QueryStatus implements Serializable { return status.equals(Status.SUCCESSFUL) || status.equals(Status.FAILED) || status.equals(Status.CANCELED); } + public boolean successful() { +return status.equals(Status.SUCCESSFUL); + } + + public boolean launched() { return status.equals(Status.LAUNCHED); } http://git-wip-us.apache.org/repos/asf/lens/blob/58d86364/lens-driver-es/src/main/java/org/apache/lens/driver/es/client/ESResultSet.java -- diff --git a/lens-driver-es/src/main/java/org/apache/lens/driver/es/client/ESResultSet.java b/lens-driver-es/src/main/java/org/apache/lens/driver/es/client/ESResultSet.java index 464b535..b59949b 100644 --- a/lens-driver-es/src/main/java/org/apache/lens/driver/es/client/ESResultSet.java +++ b/lens-driver-es/src/main/java/org/apache/lens/driver/es/client/ESResultSet.java @@ -23,7 +23,6 @@ import java.util.Iterator; import org.apache.lens.api.query.ResultRow; import org.apache.lens.server.api.driver.InMemoryResultSet; import org.apache.lens.server.api.driver.LensResultSetMetadata; -import org.apache.lens.server.api.error.LensException; import lombok.NonNull; @@ -68,9 +67,4 @@ public class ESResultSet extends InMemoryResultSet { public LensResultSetMetadata getMetadata() { return resultSetMetadata; } - - @Override - public boolean seekToStart() throw
[1/3] lens git commit: LENS-791 : Fix CLI output to print yaml representation of entity
Repository: lens Updated Branches: refs/heads/master 58d863643 -> b805ee989 http://git-wip-us.apache.org/repos/asf/lens/blob/b805ee98/lens-examples/src/test/resources/yaml/fact2.yaml -- diff --git a/lens-examples/src/test/resources/yaml/fact2.yaml b/lens-examples/src/test/resources/yaml/fact2.yaml new file mode 100644 index 000..97112c8 --- /dev/null +++ b/lens-examples/src/test/resources/yaml/fact2.yaml @@ -0,0 +1,36 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +#http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +columns: + dim1: type: INT + dim3: type: INT + measure2: type: INT + measure3: type: FLOAT + measure4: type: FLOAT +properties: + cube.fact.is.aggregated: true +storageTables: + local: +updatePeriods: HOURLY, DAILY +tableDesc: + partCols: +dt: type: STRING, comment: Time column + timePartCols: dt + external: true + tableLocation: /tmp/examples/fact2_local + fieldDelimiter: , +name: fact2 +cubeName: sample_cube +weight: 200.0 http://git-wip-us.apache.org/repos/asf/lens/blob/b805ee98/lens-examples/src/test/resources/yaml/local-cluster-storage.yaml -- diff --git a/lens-examples/src/test/resources/yaml/local-cluster-storage.yaml b/lens-examples/src/test/resources/yaml/local-cluster-storage.yaml new file mode 100644 index 000..e9f4ffe --- /dev/null +++ b/lens-examples/src/test/resources/yaml/local-cluster-storage.yaml @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +#http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +properties: + storage.url: hdfs://localhost:8020/ +name: cluster1 +classname: org.apache.lens.cube.metadata.HDFSStorage http://git-wip-us.apache.org/repos/asf/lens/blob/b805ee98/lens-examples/src/test/resources/yaml/local-storage.yaml -- diff --git a/lens-examples/src/test/resources/yaml/local-storage.yaml b/lens-examples/src/test/resources/yaml/local-storage.yaml new file mode 100644 index 000..4835fcb --- /dev/null +++ b/lens-examples/src/test/resources/yaml/local-storage.yaml @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +#http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +properties: + storage.url: file:/// +name: local +classname: org.apache.lens.cube.metadata.HDFSStorage http://git-wip-us.apache.org/repos/asf/lens/blob/b805ee98/lens-examples/src/test/resources/yaml/product-local-parts.yaml -- diff --git a/lens-examples/src/test/resources/yaml/product-local-parts.yaml b/lens-examples/src/test/resources/yaml/product-local-parts.yaml new file mode 100644 index 000..bd2c543 --- /dev/null +++
[3/3] lens git commit: LENS-791 : Fix CLI output to print yaml representation of entity
LENS-791 : Fix CLI output to print yaml representation of entity Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/b805ee98 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/b805ee98 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/b805ee98 Branch: refs/heads/master Commit: b805ee989188c5889e6472b48572d126b6515414 Parents: 58d8636 Author: Rajat Khandelwal <pro...@apache.org> Authored: Fri Feb 5 14:12:29 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Fri Feb 5 14:12:29 2016 +0530 -- lens-api/pom.xml| 7 + .../java/org/apache/lens/api/APIResult.java | 33 +- .../main/java/org/apache/lens/api/DateTime.java | 2 +- .../main/java/org/apache/lens/api/LensConf.java | 6 +- .../org/apache/lens/api/LensSessionHandle.java | 47 +-- .../java/org/apache/lens/api/ToXMLString.java | 73 .../java/org/apache/lens/api/ToYAMLString.java | 121 ++ .../apache/lens/api/jaxb/LensJAXBContext.java | 47 ++- .../lens/api/jaxb/YAMLToStringStrategy.java | 389 +++ .../lens/api/query/InMemoryQueryResult.java | 5 + .../lens/api/query/LensPreparedQuery.java | 4 +- .../org/apache/lens/api/query/LensQuery.java| 3 +- .../org/apache/lens/api/query/QueryHandle.java | 10 - .../lens/api/query/QueryPrepareHandle.java | 10 - .../org/apache/lens/api/query/QueryResult.java | 3 +- .../lens/api/query/QueryResultSetMetadata.java | 4 +- .../org/apache/lens/api/query/QueryStatus.java | 42 +- .../lens/api/query/QuerySubmitResult.java | 3 +- .../apache/lens/api/query/SchedulerJobInfo.java | 2 + .../org/apache/lens/api/result/QueryCostTO.java | 1 - .../lens/api/jaxb/YAMLToStringStrategyTest.java | 166 .../toString/org.apache.lens.api.DateTime.xml | 24 ++ .../toString/org.apache.lens.api.DateTime.yaml | 16 + .../toString/org.apache.lens.api.LensConf.xml | 33 ++ .../toString/org.apache.lens.api.LensConf.yaml | 17 + ...pache.lens.api.query.InMemoryQueryResult.xml | 49 +++ ...ache.lens.api.query.InMemoryQueryResult.yaml | 17 + apache.lens.api.query.LensPreparedQuery.xml | 43 ++ ...apache.lens.api.query.LensPreparedQuery.yaml | 24 ++ .../org.apache.lens.api.query.LensQuery.xml | 67 .../org.apache.lens.api.query.LensQuery.yaml| 42 ++ ...che.lens.api.query.PersistentQueryResult.xml | 27 ++ ...he.lens.api.query.PersistentQueryResult.yaml | 19 + .../org.apache.lens.api.query.QueryHandle.xml | 24 ++ .../org.apache.lens.api.query.QueryHandle.yaml | 16 + lens.api.query.QueryHandleWithResultSet.xml | 26 ++ ...lens.api.query.QueryHandleWithResultSet.yaml | 16 + .../org.apache.lens.api.query.QueryPlan.xml | 43 ++ .../org.apache.lens.api.query.QueryPlan.yaml| 29 ++ ...apache.lens.api.query.QueryPrepareHandle.xml | 24 ++ ...pache.lens.api.query.QueryPrepareHandle.yaml | 16 + ...he.lens.api.query.QueryResultSetMetadata.xml | 33 ++ ...e.lens.api.query.QueryResultSetMetadata.yaml | 17 + .../org.apache.lens.api.query.QueryStatus.xml | 35 ++ .../org.apache.lens.api.query.QueryStatus.yaml | 22 ++ .../org.apache.lens.api.query.ResultRow.xml | 33 ++ .../org.apache.lens.api.query.ResultRow.yaml| 16 + ...apache.lens.api.query.SchedulerJobHandle.xml | 24 ++ ...pache.lens.api.query.SchedulerJobHandle.yaml | 16 + .../org.apache.lens.api.result.QueryCostTO.xml | 26 ++ .../org.apache.lens.api.result.QueryCostTO.yaml | 18 + .../lens/cli/commands/BaseLensCommand.java | 37 +- .../lens/cli/commands/LensCRUDCommand.java | 7 +- .../cli/commands/LensConnectionCommands.java| 26 +- .../cli/commands/LensDimensionCommands.java | 7 +- .../lens/cli/commands/LensQueryCommands.java| 6 +- .../cli/commands/LogicalTableCrudCommand.java | 13 +- .../apache/lens/cli/LensCliApplicationTest.java | 3 +- .../apache/lens/cli/TestLensCubeCommands.java | 5 +- .../lens/cli/TestLensDimensionCommands.java | 4 +- .../cli/TestLensDimensionTableCommands.java | 6 +- .../apache/lens/cli/TestLensFactCommands.java | 4 +- .../lens/cli/TestLensStorageCommands.java | 4 +- .../java/org/apache/lens/client/LensClient.java | 1 + .../apache/lens/client/LensMetadataClient.java | 26 +- .../org/apache/lens/client/LensStatement.java | 2 +- .../src/main/resources/lens-client-default.xml | 5 + lens-examples/pom.xml | 16 +- .../apache/lens/examples/SampleMetastore.java | 5 +- .../src/main/resources/example-job.xml | 5 +- .../examples/ExampleSchemaToStringTest.java | 45 +++ .../test/resources/yaml/city-local-part.yaml| 20 + lens-examples/src/test/resources/yaml/city.yaml | 23 ++ .../src/test/resources/yaml/city_subset.yaml| 30 ++
lens git commit: LENS-946 : Fix filter clauses in multi fact or multi storage queries
Repository: lens Updated Branches: refs/heads/master bee5cfd8d -> 0b3203d04 LENS-946 : Fix filter clauses in multi fact or multi storage queries Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/0b3203d0 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/0b3203d0 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/0b3203d0 Branch: refs/heads/master Commit: 0b3203d047d9738141d153e9f7894fcc6ac64f79 Parents: bee5cfd Author: Amareshwari Sriramadasu <amareshw...@apache.org> Authored: Mon Feb 8 12:00:53 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Feb 8 12:00:53 2016 +0530 -- .../apache/lens/cube/parse/CandidateFact.java | 22 ++- .../lens/cube/parse/CubeQueryContext.java | 9 ++- .../apache/lens/cube/parse/DefaultQueryAST.java | 2 +- .../cube/parse/DenormalizationResolver.java | 13 +++- .../lens/cube/parse/ExpressionResolver.java | 12 +++- .../parse/SingleFactMultiStorageHQLContext.java | 10 --- .../apache/lens/cube/parse/CubeTestSetup.java | 24 +-- .../lens/cube/parse/TestBaseCubeQueries.java| 68 ++-- .../lens/cube/parse/TestCubeRewriter.java | 25 ++- 9 files changed, 132 insertions(+), 53 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/0b3203d0/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java index 4faebe1..1b0de34 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java @@ -76,12 +76,11 @@ public class CandidateFact implements CandidateTable, QueryAST { @Getter @Setter private Integer limitValue; - private List timenodes = Lists.newArrayList(); private final List selectIndices = Lists.newArrayList(); private final List dimFieldIndices = Lists.newArrayList(); private Collection columns; @Getter - private final Map<String, String> storgeWhereClauseMap = new HashMap<>(); + private final Map<String, ASTNode> storgeWhereClauseMap = new HashMap<>(); @Getter private final Map<TimeRange, Map<String, LinkedHashSet>> rangeToStoragePartMap = new HashMap<>(); @Getter @@ -145,18 +144,6 @@ public class CandidateFact implements CandidateTable, QueryAST { return alias; } - static class TimeRangeNode { -ASTNode timenode; -ASTNode parent; -int childIndex; - -TimeRangeNode(ASTNode timenode, ASTNode parent, int childIndex) { - this.timenode = timenode; - this.parent = parent; - this.childIndex = childIndex; -} - } - void incrementPartsQueried(int incr) { numQueriedParts += incr; } @@ -174,8 +161,8 @@ public class CandidateFact implements CandidateTable, QueryAST { } - public String getWhereClause(String storageTable) { -return getStorgeWhereClauseMap().get(storageTable); + public ASTNode getStorageWhereClause(String storageTable) { +return storgeWhereClauseMap.get(storageTable); } public boolean isExpressionAnswerable(ASTNode node, CubeQueryContext context) throws LensException { @@ -231,7 +218,7 @@ public class CandidateFact implements CandidateTable, QueryAST { private Set getColsInExpr(final CubeQueryContext cubeql, final Set cubeCols, ASTNode expr) throws LensException { -final Set cubeColsInExpr = new HashSet(); +final Set cubeColsInExpr = new HashSet<>(); HQLParser.bft(expr, new ASTNodeVisitor() { @Override public void visit(TreeNode visited) { @@ -346,7 +333,6 @@ public class CandidateFact implements CandidateTable, QueryAST { return null; } - /** * @return the selectIndices */ http://git-wip-us.apache.org/repos/asf/lens/blob/0b3203d0/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 ebf8875..b8b6db9 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 @@ -875,7 +875,7 @@ public class CubeQueryContext implements TrackQueriedColumns, QueryAST { ASTNode rangeAST = HQLParser.parseExpr(rangeWhere); range.getParent().setChild(range.getChildIndex(), rangeAST); } -
[2/7] lens git commit: LENS-920 : Fix issues in producing and consuming json for all api
http://git-wip-us.apache.org/repos/asf/lens/blob/d559ef2e/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java -- diff --git a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java index ef8c1aa..d9b7679 100644 --- a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java +++ b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java @@ -33,10 +33,7 @@ import java.util.*; import javax.ws.rs.NotFoundException; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.Application; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; +import javax.ws.rs.core.*; import org.apache.lens.api.APIResult; import org.apache.lens.api.LensConf; @@ -77,16 +74,11 @@ import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; -import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.media.multipart.FormDataBodyPart; import org.glassfish.jersey.media.multipart.FormDataContentDisposition; import org.glassfish.jersey.media.multipart.FormDataMultiPart; -import org.glassfish.jersey.media.multipart.MultiPartFeature; import org.glassfish.jersey.test.TestProperties; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; +import org.testng.annotations.*; import com.codahale.metrics.MetricRegistry; import com.google.common.base.Optional; @@ -130,7 +122,7 @@ public class TestQueryService extends LensJerseyTest { super.setUp(); queryService = LensServices.get().getService(QueryExecutionService.NAME); metricsSvc = LensServices.get().getService(MetricsService.NAME); -Mapsessionconf = new HashMap (); +Map sessionconf = new HashMap<>(); sessionconf.put("test.session.key", "svalue"); lensSessionId = queryService.openSession("foo@localhost", "bar", sessionconf); // @localhost should be removed // automatically @@ -167,17 +159,6 @@ public class TestQueryService extends LensJerseyTest { return new QueryServiceTestApp(); } - /* - * (non-Javadoc) - * - * @see org.glassfish.jersey.test.JerseyTest#configureClient(org.glassfish.jersey.client.ClientConfig) - */ - @Override - protected void configureClient(ClientConfig config) { -config.register(MultiPartFeature.class); -config.register(LensJAXBContextResolver.class); - } - /** The test table. */ public static final String TEST_TABLE = "TEST_TABLE"; @@ -188,7 +169,7 @@ public class TestQueryService extends LensJerseyTest { * @throws InterruptedException the interrupted exception */ private void createTable(String tblName) throws InterruptedException { -LensServerTestUtil.createTable(tblName, target(), lensSessionId); +LensServerTestUtil.createTable(tblName, target(), lensSessionId, defaultMT); } /** @@ -199,7 +180,7 @@ public class TestQueryService extends LensJerseyTest { * @throws InterruptedException the interrupted exception */ private void loadData(String tblName, final String testDataFile) throws InterruptedException { -LensServerTestUtil.loadDataFromClasspath(tblName, testDataFile, target(), lensSessionId); +LensServerTestUtil.loadDataFromClasspath(tblName, testDataFile, target(), lensSessionId, defaultMT); } /** @@ -209,19 +190,17 @@ public class TestQueryService extends LensJerseyTest { * @throws InterruptedException the interrupted exception */ private void dropTable(String tblName) throws InterruptedException { -LensServerTestUtil.dropTable(tblName, target(), lensSessionId); +LensServerTestUtil.dropTable(tblName, target(), lensSessionId, defaultMT); } - // test get a random query, should return 400 - /** - * Test get random query. + * Test get random query. should return 400 */ - @Test - public void testGetRandomQuery() { + @Test(dataProvider = "mediaTypeData") + public void testGetRandomQuery(MediaType mt) { final WebTarget target = target().path("queryapi/queries"); -Response rs = target.path("random").queryParam("sessionid", lensSessionId).request().get(); +Response rs = target.path("random").queryParam("sessionid", lensSessionId).request(mt).get(); assertEquals(rs.getStatus(), 400); } @@ -229,7 +208,7 @@ public class TestQueryService extends LensJerseyTest { public void testLoadingMultipleDrivers() { Collection drivers = queryService.getDrivers(); assertEquals(drivers.size(), 4); -Set driverNames = new HashSet(drivers.size()); +Set driverNames = new HashSet<>(drivers.size()); for
[4/7] lens git commit: LENS-920 : Fix issues in producing and consuming json for all api
http://git-wip-us.apache.org/repos/asf/lens/blob/d559ef2e/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java -- diff --git a/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java b/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java index 925fc86..4bc3f0a 100644 --- a/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java +++ b/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java @@ -29,10 +29,7 @@ import javax.ws.rs.BadRequestException; import javax.ws.rs.NotFoundException; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.Application; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; +import javax.ws.rs.core.*; import javax.xml.bind.JAXBElement; import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.XMLGregorianCalendar; @@ -44,6 +41,7 @@ import org.apache.lens.api.LensSessionHandle; import org.apache.lens.api.StringList; import org.apache.lens.api.error.LensCommonErrorCode; import org.apache.lens.api.metastore.*; +import org.apache.lens.api.metastore.ObjectFactory; import org.apache.lens.api.result.LensAPIResult; import org.apache.lens.cube.metadata.*; import org.apache.lens.cube.metadata.ExprColumn.ExprSpec; @@ -62,15 +60,9 @@ import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.mapred.SequenceFileInputFormat; -import org.glassfish.jersey.client.ClientConfig; -import org.glassfish.jersey.media.multipart.FormDataBodyPart; -import org.glassfish.jersey.media.multipart.FormDataContentDisposition; -import org.glassfish.jersey.media.multipart.FormDataMultiPart; -import org.glassfish.jersey.media.multipart.MultiPartFeature; +import org.glassfish.jersey.test.TestProperties; import org.testng.Assert; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; +import org.testng.annotations.*; import com.google.common.collect.Lists; import com.google.common.collect.Sets; @@ -80,8 +72,6 @@ import lombok.extern.slf4j.Slf4j; @Test(groups = "unit-test") public class TestMetastoreService extends LensJerseyTest { private ObjectFactory cubeObjectFactory; - protected String mediaType = MediaType.APPLICATION_XML; - protected MediaType medType = MediaType.APPLICATION_XML_TYPE; protected String dbPFX = "TestMetastoreService_"; CubeMetastoreServiceImpl metastoreService; LensSessionHandle lensSessionId; @@ -90,7 +80,7 @@ public class TestMetastoreService extends LensJerseyTest { assertEquals(result.getStatus(), Status.SUCCEEDED, String.valueOf(result)); } - @BeforeTest + @BeforeMethod public void setUp() throws Exception { super.setUp(); cubeObjectFactory = new ObjectFactory(); @@ -99,7 +89,7 @@ public class TestMetastoreService extends LensJerseyTest { } - @AfterTest + @AfterMethod public void tearDown() throws Exception { metastoreService.closeSession(lensSessionId); super.tearDown(); @@ -107,62 +97,67 @@ public class TestMetastoreService extends LensJerseyTest { @Override protected Application configure() { +enable(TestProperties.LOG_TRAFFIC); +enable(TestProperties.DUMP_ENTITY); return new MetastoreApp(); } - @Override - protected void configureClient(ClientConfig config) { -config.register(MultiPartFeature.class); - } - - @Test - public void testSetDatabase() throws Exception { -WebTarget dbTarget = target().path("metastore").path("databases/current"); -String dbName = "test_set_db"; + @Test(dataProvider = "mediaTypeData") + public void testSetDatabase(MediaType mediaType) throws Exception { +String prevDb = getCurrentDatabase(mediaType); +String dbName = "test_set_db" + mediaType.getSubtype(); try { - dbTarget.queryParam("sessionid", lensSessionId).request(mediaType).put(Entity.xml(dbName), APIResult.class); - fail("Should get 404"); -} catch (NotFoundException e) { - // expected -} + WebTarget dbTarget = target().path("metastore").path("databases/current"); + try { +dbTarget.queryParam("sessionid", lensSessionId).request(mediaType).put(getEntityForString(dbName, mediaType), + APIResult.class); +fail("Should get 404"); + } catch (NotFoundException e) { +// expected + } -// create -APIResult result = target().path("metastore").path("databases") - .queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(dbName), APIResult.class); -assertNotNull(result); -assertSuccess(result); + // create + APIResult result = target().path("metastore").path("databases") +
[1/7] lens git commit: LENS-920 : Fix issues in producing and consuming json for all api
Repository: lens Updated Branches: refs/heads/master a5091fe0c -> d559ef2e5 http://git-wip-us.apache.org/repos/asf/lens/blob/d559ef2e/lens-server/src/test/java/org/apache/lens/server/session/TestSessionResource.java -- diff --git a/lens-server/src/test/java/org/apache/lens/server/session/TestSessionResource.java b/lens-server/src/test/java/org/apache/lens/server/session/TestSessionResource.java index 3055ce5..bde7b9b 100644 --- a/lens-server/src/test/java/org/apache/lens/server/session/TestSessionResource.java +++ b/lens-server/src/test/java/org/apache/lens/server/session/TestSessionResource.java @@ -53,11 +53,10 @@ import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.ql.metadata.Hive; -import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.media.multipart.FormDataBodyPart; import org.glassfish.jersey.media.multipart.FormDataContentDisposition; import org.glassfish.jersey.media.multipart.FormDataMultiPart; -import org.glassfish.jersey.media.multipart.MultiPartFeature; +import org.glassfish.jersey.test.TestProperties; import org.testng.Assert; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; @@ -101,39 +100,31 @@ public class TestSessionResource extends LensJerseyTest { */ @Override protected Application configure() { +enable(TestProperties.LOG_TRAFFIC); +enable(TestProperties.DUMP_ENTITY); return new SessionApp(); } - /* - * (non-Javadoc) - * - * @see org.glassfish.jersey.test.JerseyTest#configureClient(org.glassfish.jersey.client.ClientConfig) - */ - @Override - protected void configureClient(ClientConfig config) { -config.register(MultiPartFeature.class); - } - /** * Test session. */ - @Test - public void testSession() { + @Test(dataProvider = "mediaTypeData") + public void testSession(MediaType mt) { final WebTarget target = target().path("session"); final FormDataMultiPart mp = new FormDataMultiPart(); mp.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("username").build(), "foo")); mp.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("password").build(), "bar")); mp.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("sessionconf").fileName("sessionconf").build(), - new LensConf(), MediaType.APPLICATION_XML_TYPE)); + new LensConf(), mt)); -final LensSessionHandle handle = target.request().post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE), +final LensSessionHandle handle = target.request(mt).post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE), LensSessionHandle.class); Assert.assertNotNull(handle); // get all session params final WebTarget paramtarget = target().path("session/params"); -StringList sessionParams = paramtarget.queryParam("sessionid", handle).request().get(StringList.class); +StringList sessionParams = paramtarget.queryParam("sessionid", handle).request(mt).get(StringList.class); System.out.println("Session params:" + sessionParams.getElements()); Assert.assertTrue(sessionParams.getElements().size() > 1); Assert.assertTrue(sessionParams.getElements().contains("lens.session.cluster.user=testlensuser")); @@ -142,14 +133,14 @@ public class TestSessionResource extends LensJerseyTest { // set hive variable FormDataMultiPart setpart = new FormDataMultiPart(); setpart.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("sessionid").build(), handle, - MediaType.APPLICATION_XML_TYPE)); + mt)); setpart.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("key").build(), "hivevar:myvar")); setpart.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("value").build(), "10")); -APIResult result = paramtarget.request().put(Entity.entity(setpart, MediaType.MULTIPART_FORM_DATA_TYPE), +APIResult result = paramtarget.request(mt).put(Entity.entity(setpart, MediaType.MULTIPART_FORM_DATA_TYPE), APIResult.class); Assert.assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); // get myvar session params -sessionParams = paramtarget.queryParam("sessionid", handle).queryParam("key", "hivevar:myvar").request() +sessionParams = paramtarget.queryParam("sessionid", handle).queryParam("key", "hivevar:myvar").request(mt) .get(StringList.class); System.out.println("Session params:" + sessionParams.getElements()); Assert.assertEquals(sessionParams.getElements().size(), 1); @@ -158,39 +149,39 @@ public class TestSessionResource extends LensJerseyTest { // set hive conf setpart = new FormDataMultiPart(); setpart.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("sessionid").build(), handle, - MediaType.APPLICATION_XML_TYPE)); + mt));
[7/7] lens git commit: LENS-920 : Fix issues in producing and consuming json for all api
LENS-920 : Fix issues in producing and consuming json for all api Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/d559ef2e Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/d559ef2e Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/d559ef2e Branch: refs/heads/master Commit: d559ef2e524ee6c28d45b35cca827fd507b15665 Parents: a5091fe Author: Amareshwari Sriramadasu <amareshw...@apache.org> Authored: Tue Feb 2 18:50:28 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Tue Feb 2 18:50:28 2016 +0530 -- lens-api/pom.xml| 8 + .../java/org/apache/lens/api/APIResult.java | 29 +- .../main/java/org/apache/lens/api/LensConf.java | 2 +- .../org/apache/lens/api/LensSessionHandle.java | 3 + .../main/java/org/apache/lens/api/Priority.java | 5 + .../java/org/apache/lens/api/UUIDAdapter.java | 50 ++ .../apache/lens/api/query/QueryCostType.java| 5 + .../org/apache/lens/api/query/QueryHandle.java | 4 + .../lens/api/query/QueryPrepareHandle.java | 4 + .../lens/api/query/QueryResultSetMetadata.java | 2 + .../org/apache/lens/api/query/QueryStatus.java | 4 + .../apache/lens/api/query/ResultColumnType.java | 2 + .../lens/api/query/SchedulerJobHandle.java | 4 + .../api/query/SchedulerJobInstanceHandle.java | 4 + .../org/apache/lens/api/result/QueryCostTO.java | 2 +- .../MoxyJsonConfigurationContextResolver.java | 38 + lens-api/src/main/resources/cube-0.1.xsd| 12 +- .../apache/lens/cli/LensCliApplicationTest.java | 2 +- .../cli/TestLensDimensionTableCommands.java | 2 +- .../resources/cube_with_no_weight_facts.xml | 16 +- .../resources/dim-local-storage-element.xml | 2 +- lens-cli/src/test/resources/dim_table.xml | 10 +- lens-cli/src/test/resources/dim_table2.xml | 8 +- .../resources/fact-local-storage-element.xml| 2 +- lens-cli/src/test/resources/fact1.xml | 10 +- .../src/test/resources/fact_without_weight.xml | 10 +- .../src/test/resources/lens-client-site.xml | 4 +- lens-cli/src/test/resources/logback.xml | 49 ++ lens-cli/src/test/resources/sample-cube.xml | 18 +- lens-cli/src/test/resources/test-detail.xml | 4 +- lens-cli/src/test/resources/test-dimension.xml | 16 +- .../org/apache/lens/client/LensConnection.java | 5 +- .../apache/lens/client/LensMetadataClient.java | 196 ++--- .../org/apache/lens/client/LensStatement.java | 34 +- .../apache/lens/examples/SampleMetastore.java | 3 + lens-examples/src/main/resources/city.xml | 8 +- .../src/main/resources/city_subset.xml | 4 +- lens-examples/src/main/resources/city_table.xml | 10 +- lens-examples/src/main/resources/customer.xml | 14 +- .../src/main/resources/customer_table.xml | 14 +- lens-examples/src/main/resources/dim_table.xml | 10 +- lens-examples/src/main/resources/dim_table2.xml | 8 +- lens-examples/src/main/resources/dim_table3.xml | 8 +- lens-examples/src/main/resources/dim_table4.xml | 10 +- lens-examples/src/main/resources/fact1.xml | 10 +- lens-examples/src/main/resources/fact2.xml | 12 +- lens-examples/src/main/resources/product.xml| 16 +- .../src/main/resources/product_db_table.xml | 14 +- .../src/main/resources/product_table.xml| 16 +- lens-examples/src/main/resources/rawfact.xml| 16 +- .../resources/sales-aggr-continuous-fact.xml| 26 +- .../src/main/resources/sales-aggr-fact1.xml | 38 +- .../src/main/resources/sales-aggr-fact2.xml | 28 +- lens-examples/src/main/resources/sales-cube.xml | 54 +- .../src/main/resources/sales-raw-fact.xml | 40 +- .../src/main/resources/sample-cube.xml | 16 +- .../main/resources/sample-db-only-dimension.xml | 8 +- .../src/main/resources/sample-dimension.xml | 8 +- .../src/main/resources/sample-dimension2.xml| 6 +- .../java/org/apache/lens/ml/server/MLApp.java | 5 + .../java/org/apache/lens/ml/TestMLRunner.java | 8 - .../server/api/driver/InMemoryResultSet.java| 2 +- lens-server/pom.xml | 9 - .../java/org/apache/lens/server/BaseApp.java| 53 ++ .../java/org/apache/lens/server/LensServer.java | 1 - .../apache/lens/server/ServerModeFilter.java| 15 +- .../metastore/CubeMetastoreServiceImpl.java | 24 +- .../apache/lens/server/metastore/JAXBUtils.java | 10 +- .../lens/server/metastore/MetastoreApp.java | 29 +- .../server/metastore/MetastoreResource.java | 20 +- .../org/apache/lens/server/query/QueryApp.java | 24 +- .../lens/server/query/QueryServiceResource.java | 4 +- .../lens/server/query/save/SavedQueryApp.java | 22 +- .../server/query/save/SavedQueryResource.java | 4 +- .../lens/serv
lens git commit: LENS-970 : Send hivedriver and query-lib test logs to target/test.log
Repository: lens Updated Branches: refs/heads/master d81211723 -> 84831297c LENS-970 : Send hivedriver and query-lib test logs to target/test.log Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/84831297 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/84831297 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/84831297 Branch: refs/heads/master Commit: 84831297c3e090ff603598854f95e63a5f9d3ae7 Parents: d812117 Author: Rajat Khandelwal <pro...@apache.org> Authored: Sat Feb 27 22:40:55 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Sat Feb 27 22:40:55 2016 +0530 -- lens-driver-hive/src/test/resources/logback.xml | 10 +++--- lens-query-lib/src/test/resources/logback.xml | 12 2 files changed, 15 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/84831297/lens-driver-hive/src/test/resources/logback.xml -- diff --git a/lens-driver-hive/src/test/resources/logback.xml b/lens-driver-hive/src/test/resources/logback.xml index 6da5fa4..c32886d 100644 --- a/lens-driver-hive/src/test/resources/logback.xml +++ b/lens-driver-hive/src/test/resources/logback.xml @@ -20,13 +20,17 @@ --> - + +target/test.log - %d (%t) [%p - %l] %m%n + %d{dd MMM HH:mm:ss,SSS} [%t] %-5p %c %L - %m%n + + INFO + - + http://git-wip-us.apache.org/repos/asf/lens/blob/84831297/lens-query-lib/src/test/resources/logback.xml -- diff --git a/lens-query-lib/src/test/resources/logback.xml b/lens-query-lib/src/test/resources/logback.xml index 2aa685f..c32886d 100644 --- a/lens-query-lib/src/test/resources/logback.xml +++ b/lens-query-lib/src/test/resources/logback.xml @@ -20,13 +20,17 @@ --> - + +target/test.log - %d (%t) [%p - %l] %m%n + %d{dd MMM HH:mm:ss,SSS} [%t] %-5p %c %L - %m%n + + INFO + - - + +
lens git commit: LENS-933 : Allow presubmit hook to throw LensException
Repository: lens Updated Branches: refs/heads/master 919936bec -> 8a3657291 LENS-933 : Allow presubmit hook to throw LensException Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/8a365729 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/8a365729 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/8a365729 Branch: refs/heads/master Commit: 8a36572918540e83eae8c16a45c8479879ae7949 Parents: 919936b Author: Rajat Khandelwal <prongs@apache,org> Authored: Wed Jan 27 16:49:03 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Wed Jan 27 16:49:03 2016 +0530 -- .../java/org/apache/lens/server/api/driver/DriverQueryHook.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/8a365729/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryHook.java -- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryHook.java b/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryHook.java index 70d999a..ecac6be 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryHook.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryHook.java @@ -21,6 +21,7 @@ */ package org.apache.lens.server.api.driver; +import org.apache.lens.server.api.error.LensException; import org.apache.lens.server.api.query.AbstractQueryContext; /** @@ -45,6 +46,7 @@ public interface DriverQueryHook { /** * Should be Called before launch on the driver * @param ctx + * @throws LensException */ - void preLaunch(AbstractQueryContext ctx); + void preLaunch(AbstractQueryContext ctx) throws LensException; }
lens git commit: LENS-951 : Fix test failures in java8
Repository: lens Updated Branches: refs/heads/master 223da282d -> c1e4434fd LENS-951 : Fix test failures in java8 Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/c1e4434f Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/c1e4434f Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/c1e4434f Branch: refs/heads/master Commit: c1e4434fde3143d38adc4fb5c501cad33ae6268b Parents: 223da28 Author: Rajat Khandelwal <pro...@apache.org> Authored: Wed Feb 17 14:27:25 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Wed Feb 17 14:27:25 2016 +0530 -- .../src/test/resources/toString/org.apache.lens.api.LensConf.xml | 4 .../test/resources/toString/org.apache.lens.api.LensConf.yaml| 1 - .../toString/org.apache.lens.api.query.LensPreparedQuery.xml | 4 .../toString/org.apache.lens.api.query.LensPreparedQuery.yaml| 1 - .../resources/toString/org.apache.lens.api.query.LensQuery.xml | 4 .../resources/toString/org.apache.lens.api.query.LensQuery.yaml | 1 - 6 files changed, 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/c1e4434f/lens-api/src/test/resources/toString/org.apache.lens.api.LensConf.xml -- diff --git a/lens-api/src/test/resources/toString/org.apache.lens.api.LensConf.xml b/lens-api/src/test/resources/toString/org.apache.lens.api.LensConf.xml index 41fc022..0f6447d 100644 --- a/lens-api/src/test/resources/toString/org.apache.lens.api.LensConf.xml +++ b/lens-api/src/test/resources/toString/org.apache.lens.api.LensConf.xml @@ -22,10 +22,6 @@ - key2 - value2 - - key1 value1 http://git-wip-us.apache.org/repos/asf/lens/blob/c1e4434f/lens-api/src/test/resources/toString/org.apache.lens.api.LensConf.yaml -- diff --git a/lens-api/src/test/resources/toString/org.apache.lens.api.LensConf.yaml b/lens-api/src/test/resources/toString/org.apache.lens.api.LensConf.yaml index 82548fd..a8d3dc5 100644 --- a/lens-api/src/test/resources/toString/org.apache.lens.api.LensConf.yaml +++ b/lens-api/src/test/resources/toString/org.apache.lens.api.LensConf.yaml @@ -13,5 +13,4 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -key2: value2 key1: value1 \ No newline at end of file http://git-wip-us.apache.org/repos/asf/lens/blob/c1e4434f/lens-api/src/test/resources/toString/org.apache.lens.api.query.LensPreparedQuery.xml -- diff --git a/lens-api/src/test/resources/toString/org.apache.lens.api.query.LensPreparedQuery.xml b/lens-api/src/test/resources/toString/org.apache.lens.api.query.LensPreparedQuery.xml index 1276b61..99fe1b4 100644 --- a/lens-api/src/test/resources/toString/org.apache.lens.api.query.LensPreparedQuery.xml +++ b/lens-api/src/test/resources/toString/org.apache.lens.api.query.LensPreparedQuery.xml @@ -31,10 +31,6 @@ -key2 -value2 - - key1 value1 http://git-wip-us.apache.org/repos/asf/lens/blob/c1e4434f/lens-api/src/test/resources/toString/org.apache.lens.api.query.LensPreparedQuery.yaml -- diff --git a/lens-api/src/test/resources/toString/org.apache.lens.api.query.LensPreparedQuery.yaml b/lens-api/src/test/resources/toString/org.apache.lens.api.query.LensPreparedQuery.yaml index 7893ec0..8940954 100644 --- a/lens-api/src/test/resources/toString/org.apache.lens.api.query.LensPreparedQuery.yaml +++ b/lens-api/src/test/resources/toString/org.apache.lens.api.query.LensPreparedQuery.yaml @@ -20,5 +20,4 @@ Prepared User: user Selected Driver Name: selected-driver Driver Query: select blah from driver table Conf: - key2: value2 key1: value1 http://git-wip-us.apache.org/repos/asf/lens/blob/c1e4434f/lens-api/src/test/resources/toString/org.apache.lens.api.query.LensQuery.xml -- diff --git a/lens-api/src/test/resources/toString/org.apache.lens.api.query.LensQuery.xml b/lens-api/src/test/resources/toString/org.apache.lens.api.query.LensQuery.xml index 4f84433..a681bca 100644 --- a/lens-api/src/test/resources/toString/org.apache.lens.api.query.LensQuery.xml +++ b/lens-api/src/test/resources/toString/org.apache.lens.api.query.LensQuery.xml @@ -48,10 +48,6 @@ -key2 -value2 - - key1 value1 http://git-wip-us.apache.org/repos/asf/lens/blob/c1
lens git commit: LENS-931 : Add unit test for fetch results being called before query completion
Repository: lens Updated Branches: refs/heads/master c1e4434fd -> c4fa10723 LENS-931 : Add unit test for fetch results being called before query completion Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/c4fa1072 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/c4fa1072 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/c4fa1072 Branch: refs/heads/master Commit: c4fa10723e094b07c6a0ba4dc3b2e490a0ed189c Parents: c1e4434 Author: Puneet Gupta <puneet.k.gu...@gmail.com> Authored: Wed Feb 17 14:30:04 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Wed Feb 17 14:30:04 2016 +0530 -- .../lens/server/query/TestQueryService.java | 62 +++- 1 file changed, 47 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/c4fa1072/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java -- diff --git a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java index 737c99a..699fa68 100644 --- a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java +++ b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java @@ -46,14 +46,13 @@ import org.apache.lens.api.result.LensErrorTO; import org.apache.lens.api.result.QueryCostTO; import org.apache.lens.cube.error.LensCubeErrorCode; import org.apache.lens.driver.hive.HiveDriver; +import org.apache.lens.lib.query.FilePersistentFormatter; import org.apache.lens.lib.query.FileSerdeFormatter; import org.apache.lens.server.LensJerseyTest; import org.apache.lens.server.LensServerTestUtil; import org.apache.lens.server.LensServices; import org.apache.lens.server.api.LensConfConstants; -import org.apache.lens.server.api.driver.InMemoryResultSet; -import org.apache.lens.server.api.driver.LensDriver; -import org.apache.lens.server.api.driver.LensResultSetMetadata; +import org.apache.lens.server.api.driver.*; import org.apache.lens.server.api.error.LensDriverErrorCode; import org.apache.lens.server.api.error.LensException; import org.apache.lens.server.api.metrics.LensMetricsRegistry; @@ -697,7 +696,8 @@ public class TestQueryService extends LensJerseyTest { fail("unexpected cancel status: " + result.getStatus()); } -// Test http download end point +// 1. Test http download end point and result path should be correct (when both driver and server persist) +// 2. Test Fetch result should fail before query is marked successful log.info("Starting httpendpoint test"); final FormDataMultiPart mp3 = new FormDataMultiPart(); mp3.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("sessionid").build(), lensSessionId, @@ -707,14 +707,31 @@ public class TestQueryService extends LensJerseyTest { mp3.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("operation").build(), "execute")); LensConf conf = new LensConf(); conf.addProperty(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true"); +conf.addProperty(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "true"); +conf.addProperty(LensConfConstants.QUERY_OUTPUT_FORMATTER, DeferredPersistentResultFormatter.class.getName()); +conf.addProperty("deferPersistenceByMillis", 5000); // defer persistence for 5 secs mp3.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("conf").fileName("conf").build(), conf, mt)); final QueryHandle handle3 = target.request(mt).post(Entity.entity(mp3, MediaType.MULTIPART_FORM_DATA_TYPE), new GenericType<LensAPIResult>() {}).getData(); -// Get query +QueryContext ctx3 = queryService.getQueryContext(handle3); +assertFalse(ctx3.finished()); //Formatting is deferred so query will take time to finish +try { + queryService.fetchResultSet(lensSessionId, handle3, 0, 100); + fail("client should not be allowed to fetch result before query finishes successfully"); +} catch (NotFoundException e) { + // Expected. Ignore +} waitForQueryToFinish(target(), lensSessionId, handle3, Status.SUCCESSFUL, mt); +LensResultSet rs = queryService.getResultset(handle3); +//check persisted result path +String expectedPath = +ctx3.getConf().get(LensConfConstants.RESULT_SET_PARENT_DIR) + "/" + handle3.getHandleIdString() ++ ctx3.getConf().get(LensConfConstants.QUERY_OUTPUT_FILE_EXTN); +assertTrue(((PersistentResultSet) rs).getOutputPath().endsWith(expectedPath));
lens git commit: LENS-963 : Fix table weight look up in FactPartition
Repository: lens Updated Branches: refs/heads/master c4fa10723 -> 57f547a21 LENS-963 : Fix table weight look up in FactPartition Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/57f547a2 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/57f547a2 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/57f547a2 Branch: refs/heads/master Commit: 57f547a215f8f34b22147cf2177f527cffc3b709 Parents: c4fa107 Author: Amareshwari Sriramadasu <amareshw...@apache.org> Authored: Fri Feb 19 09:42:05 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Fri Feb 19 09:42:05 2016 +0530 -- .../java/org/apache/lens/cube/metadata/FactPartition.java| 8 ++-- .../org/apache/lens/cube/metadata/TestFactPartition.java | 4 2 files changed, 10 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/57f547a2/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactPartition.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactPartition.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactPartition.java index 1e5ef93..355a1f0 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactPartition.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactPartition.java @@ -179,9 +179,13 @@ public class FactPartition implements Comparable { } public double getAllTableWeights(ImmutableMap<String, Double> tableWeights) { -float weight = 0; +double weight = 0; +Map<String, Double> tblWithoutDBWeghts = new HashMap<>(); +for (Map.Entry<String, Double> entry : tableWeights.entrySet()) { + tblWithoutDBWeghts.put(entry.getKey().substring(entry.getKey().indexOf('.') + 1), entry.getValue()); +} for (String tblName : getStorageTables()) { - Double tblWeight = tableWeights.get(tblName); + Double tblWeight = tblWithoutDBWeghts.get(tblName); if (tblWeight != null) { weight += tblWeight; } http://git-wip-us.apache.org/repos/asf/lens/blob/57f547a2/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestFactPartition.java -- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestFactPartition.java b/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestFactPartition.java index e802c3c..dbcf20b 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestFactPartition.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestFactPartition.java @@ -53,5 +53,9 @@ public class TestFactPartition { weights.put("st1", 0.2); weights.put("st2", 0.3); assertEquals(fp1.getAllTableWeights(ImmutableMap.copyOf(weights)), 0.5); +weights.clear(); +weights.put("db1.st1", 0.4); +weights.put("db2.st2", 0.5); +assertEquals(fp1.getAllTableWeights(ImmutableMap.copyOf(weights)), 0.9); } }
lens git commit: LENS-961 : Remove unused dependencies from lens parent pom
Repository: lens Updated Branches: refs/heads/master 57f547a21 -> 1608b32b7 LENS-961 : Remove unused dependencies from lens parent pom Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/1608b32b Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/1608b32b Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/1608b32b Branch: refs/heads/master Commit: 1608b32b7375ac99641f03f60ab2083f8b44d617 Parents: 57f547a Author: Rajat Khandelwal <pro...@apache.org> Authored: Fri Feb 19 09:42:57 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Fri Feb 19 09:42:57 2016 +0530 -- lens-server/pom.xml | 9 - pom.xml | 39 --- 2 files changed, 48 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/1608b32b/lens-server/pom.xml -- diff --git a/lens-server/pom.xml b/lens-server/pom.xml index 8dba837..75b8b32 100644 --- a/lens-server/pom.xml +++ b/lens-server/pom.xml @@ -143,11 +143,6 @@ - org.mortbay.jetty - jetty - - - org.testng testng @@ -329,10 +324,6 @@ -org.mortbay.jetty -maven-jetty-plugin - - org.codehaus.mojo exec-maven-plugin http://git-wip-us.apache.org/repos/asf/lens/blob/1608b32b/pom.xml -- diff --git a/pom.xml b/pom.xml index b3afa59..e248114 100644 --- a/pom.xml +++ b/pom.xml @@ -37,7 +37,6 @@ 1.7 3.0.1 2.5 -2.0 2.0.1 2.2.12 1.4 @@ -67,10 +66,6 @@ 2.3.3 2.3 0.1.42 - -0.9.0 - -6.1.26 2.22.1 2.3.23 3.0.2 @@ -93,7 +88,6 @@ 0.13.0 0.9.5 3.0 -${jetty.version} 1.2.1 1.28 2.7 @@ -529,11 +523,6 @@ ${jaxb2.basics.plugin.version} - org.mortbay.jetty - maven-jetty-plugin - ${jetty.plugin.version} - - org.codehaus.mojo exec-maven-plugin ${exec.plugin.version} @@ -1308,11 +1297,6 @@ org.glassfish.jersey.media -jersey-media-json-jackson -${jersey.version} - - -org.glassfish.jersey.media jersey-media-moxy ${jersey.version} @@ -1338,11 +1322,6 @@ ${servlet.api.version} -javax.servlet.jsp -jsp-api -${jsp.api.version} - - javax.xml.bind jaxb-api ${jaxb.api.version} @@ -1355,19 +1334,6 @@ -org.mortbay.jetty -jetty -${jetty.version} -compile - - -org.mortbay.jetty -jetty-plus -${jetty.version} -compile - - - com.codahale.metrics metrics-core ${metrics.version} @@ -1536,11 +1502,6 @@ -org.apache.thrift -libthrift -${libthrift.version} - - net.sf.opencsv opencsv ${opencsv.version}
lens git commit: LENS-959 : Remove cube keyword from all test cases of lens-cube
Repository: lens Updated Branches: refs/heads/master 1608b32b7 -> c0199ead2 LENS-959 : Remove cube keyword from all test cases of lens-cube Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/c0199ead Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/c0199ead Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/c0199ead Branch: refs/heads/master Commit: c0199ead2c4696599201b19000af2cd7a8cfa162 Parents: 1608b32 Author: Rajat Khandelwal <pro...@apache.org> Authored: Fri Feb 19 09:44:16 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Fri Feb 19 09:44:16 2016 +0530 -- .../lens/cube/parse/TestBaseCubeQueries.java| 10 +++ .../lens/cube/parse/TestCubeRewriter.java | 28 ++-- .../lens/cube/parse/TestExpressionResolver.java | 8 +++--- .../lens/cube/parse/TestQueryMetrics.java | 2 +- .../lens/cube/parse/TestRewriterPlan.java | 10 +++ .../lens/cube/parse/TestTimeRangeResolver.java | 4 +-- .../parse/TestTimeRangeWriterWithQuery.java | 2 +- 7 files changed, 32 insertions(+), 32 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/c0199ead/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java -- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java index 1d27558..de1d3ce 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java @@ -77,7 +77,7 @@ public class TestBaseCubeQueries extends TestQueryRewrite { + TWO_DAYS_RANGE, conf); //maxCause : FACT_NOT_AVAILABLE_IN_RANGE, Ordinal : 1 NoCandidateFactAvailableException ne2 = (NoCandidateFactAvailableException) -getLensExceptionInRewrite("cube select dim1 from " + cubeName + " where " + LAST_YEAR_RANGE, getConf()); +getLensExceptionInRewrite("select dim1 from " + cubeName + " where " + LAST_YEAR_RANGE, getConf()); assertEquals(ne1.compareTo(ne2), 8); } @@ -554,7 +554,7 @@ public class TestBaseCubeQueries extends TestQueryRewrite { conf.setBoolean(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, false); String hql, expected; // Prefer fact that has a storage with part col on queried time dim -hql = rewrite("cube select msr12 from basecube where " + TWO_DAYS_RANGE, conf); +hql = rewrite("select msr12 from basecube where " + TWO_DAYS_RANGE, conf); expected = getExpectedQuery(BASE_CUBE_NAME, "select sum(basecube.msr12) FROM ", null, null, getWhereForDailyAndHourly2days(BASE_CUBE_NAME, "c1_testfact2_base")); compareQueries(hql, expected); @@ -563,7 +563,7 @@ public class TestBaseCubeQueries extends TestQueryRewrite { conf.set(CubeQueryConfUtil.DRIVER_SUPPORTED_STORAGES, "C4"); conf.setBoolean(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, true); LensException exc = - getLensExceptionInRewrite("cube select msr12 from basecube where " + TWO_DAYS_RANGE, conf); + getLensExceptionInRewrite("select msr12 from basecube where " + TWO_DAYS_RANGE, conf); NoCandidateFactAvailableException ne = (NoCandidateFactAvailableException) exc; PruneCauses.BriefAndDetailedError pruneCause = ne.getJsonMessage(); assertTrue(pruneCause.getBrief().contains("Missing partitions")); @@ -578,7 +578,7 @@ public class TestBaseCubeQueries extends TestQueryRewrite { // fail on partial false. Should go to fallback column. Also testing transitivity of timedim relations conf.setBoolean(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, false); -hql = rewrite("cube select msr12 from basecube where " + TWO_DAYS_RANGE, conf); +hql = rewrite("select msr12 from basecube where " + TWO_DAYS_RANGE, conf); String dTimeWhereClause = "basecube.d_time >= '" + HIVE_QUERY_DATE_PARSER.get().format(ABSDATE_PARSER.get().parse( getAbsDateFormatString(getDateUptoHours( TWODAYS_BACK + "' and " @@ -598,7 +598,7 @@ public class TestBaseCubeQueries extends TestQueryRewrite { // Multiple timedims in single query. test that CubeQueryContext ctx = - rewriteCtx("cube select msr12 from basecube where " + TWO_DAYS_RANGE + " and " + TWO_DAYS_RANGE_TTD, conf); + rewriteCtx("select msr12 from basecube where " + TWO_DAYS_RANGE + " and " + TWO_DAYS_RANGE_TTD, conf); assertEquals(ctx
lens git commit: LENS-990 : Fix exception fetching results while purging a failed query
Repository: lens Updated Branches: refs/heads/master 8cd7c2022 -> a1445f3d3 LENS-990 : Fix exception fetching results while purging a failed query Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/a1445f3d Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/a1445f3d Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/a1445f3d Branch: refs/heads/master Commit: a1445f3d35d4a7e452ced7b1ca4431051382141e Parents: 8cd7c20 Author: Puneet Gupta <puneetgu...@apache.org> Authored: Mon Mar 21 14:32:18 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Mar 21 14:32:18 2016 +0530 -- .../org/apache/lens/server/api/driver/DriverQueryStatus.java | 4 .../java/org/apache/lens/server/api/query/QueryContext.java | 8 .../apache/lens/server/query/QueryExecutionServiceImpl.java | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/a1445f3d/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryStatus.java -- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryStatus.java b/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryStatus.java index 79d8bf1..2374c1e 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryStatus.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryStatus.java @@ -212,4 +212,8 @@ public class DriverQueryStatus implements Serializable { || state.equals(DriverQueryState.CANCELED) || state.equals(DriverQueryState.CLOSED); } + public boolean isSuccessful() { +return state.equals(DriverQueryState.SUCCESSFUL); + } + } http://git-wip-us.apache.org/repos/asf/lens/blob/a1445f3d/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 d01e4a4..8ee8a3b 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 @@ -335,10 +335,10 @@ public class QueryContext extends AbstractQueryContext { public boolean isResultAvailableInDriver() { // result is available in driver if driverStatus.isResultSetAvailable() - will be true for fetching inmemory // result set. -// if result is persisted in driver driverStatus.isResultSetAvailable() will be false -// so, for select queries, if result is persisted in driver, we return true sothat the result can be fetched thru -// persistent resultset -return isDriverPersistent() || driverStatus.isResultSetAvailable(); +// if result is persisted in driver driverStatus.isResultSetAvailable() will be false but isDriverPersistent will +// be true. So, for select queries, if result is persisted in driver, we return true so that the result can be +// fetched thru persistent resultset +return driverStatus.isSuccessful() && (isDriverPersistent() || driverStatus.isResultSetAvailable()); } /** http://git-wip-us.apache.org/repos/asf/lens/blob/a1445f3d/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 4c95506..90c25e4 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 @@ -538,7 +538,7 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE if (ctx.isResultAvailableInDriver()) { try { driverRS = ctx.getSelectedDriver().fetchResultSet(getCtx()); -} catch (LensException e) { +} catch (Exception e) { log.error( "Error while getting result ser form driver {}. Driver result set based purging logic will be ignored", ctx.getSelectedDriver(), e);
lens git commit: LENS-853 : Quit shell should close session all times
Repository: lens Updated Branches: refs/heads/master 0ba17ef5c -> b7773d6c7 LENS-853 : Quit shell should close session all times Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/b7773d6c Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/b7773d6c Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/b7773d6c Branch: refs/heads/master Commit: b7773d6c74cc323be10c0f416f4ec93d8711fe00 Parents: 0ba17ef Author: Raju Bairishetti <r...@apache.org> Authored: Sat Mar 5 07:45:27 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Sat Mar 5 07:45:27 2016 +0530 -- .../apache/lens/cli/commands/BaseLensCommand.java| 12 +++- .../lens/cli/TestLensConnectionCliCommands.java | 1 - .../org/apache/lens/cli/TestLensQueryCommands.java | 15 ++- .../apache/lens/server/session/SessionResource.java | 1 + 4 files changed, 22 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/b7773d6c/lens-cli/src/main/java/org/apache/lens/cli/commands/BaseLensCommand.java -- diff --git a/lens-cli/src/main/java/org/apache/lens/cli/commands/BaseLensCommand.java b/lens-cli/src/main/java/org/apache/lens/cli/commands/BaseLensCommand.java index 0c10198..be1ca12 100644 --- a/lens-cli/src/main/java/org/apache/lens/cli/commands/BaseLensCommand.java +++ b/lens-cli/src/main/java/org/apache/lens/cli/commands/BaseLensCommand.java @@ -57,7 +57,8 @@ public class BaseLensCommand implements ExecutionProcessor { protected DefaultPrettyPrinter pp; /** The is connection active. */ - protected static boolean isConnectionActive; + protected boolean isConnectionActive; + public static final String DATE_FMT = "-MM-dd'T'HH:mm:ss:SSS"; private LensClient lensClient = null; @@ -74,7 +75,7 @@ public class BaseLensCommand implements ExecutionProcessor { return DATE_PARSER.get().format(dt); } - static { + private void registerShutDownHook() { Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { closeClientConnection(); @@ -85,10 +86,10 @@ public class BaseLensCommand implements ExecutionProcessor { /** * Close client connection. */ - protected static synchronized void closeClientConnection() { + protected synchronized void closeClientConnection() { if (isConnectionActive) { log.debug("Request for stopping lens cli received"); - getClientWrapper().getClient().closeConnection(); + lensClient.closeConnection(); isConnectionActive = false; } } @@ -97,6 +98,7 @@ public class BaseLensCommand implements ExecutionProcessor { * Instantiates a new base lens command. */ public BaseLensCommand() { +registerShutDownHook(); mapper = new ObjectMapper(); mapper.setSerializationInclusion(Inclusion.NON_NULL); mapper.setSerializationInclusion(Inclusion.NON_DEFAULT); @@ -118,13 +120,13 @@ public class BaseLensCommand implements ExecutionProcessor { } public void setClient(LensClient client) { +isConnectionActive = true; lensClient = client; } public LensClient getClient() { if (lensClient == null) { setClient(getClientWrapper().getClient()); - isConnectionActive = true; } return lensClient; } http://git-wip-us.apache.org/repos/asf/lens/blob/b7773d6c/lens-cli/src/test/java/org/apache/lens/cli/TestLensConnectionCliCommands.java -- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensConnectionCliCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensConnectionCliCommands.java index 3c4d320..d1ec94e 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensConnectionCliCommands.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensConnectionCliCommands.java @@ -195,7 +195,6 @@ public class TestLensConnectionCliCommands extends LensCliApplicationTest { } } - /** * Test jar commands. */ http://git-wip-us.apache.org/repos/asf/lens/blob/b7773d6c/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java -- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java index 97e5512..616bf5d 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java @@ -92,6 +92,10 @@ public class TestLensQueryCommands extends LensCliApplicationTest { return qCom; } + private void clos
svn commit: r12897 - in /release/lens: 2.4-beta/ 2.5-beta/
Author: amareshwari Date: Mon Mar 28 11:58:47 2016 New Revision: 12897 Log: Release 2.5-beta Added: release/lens/2.5-beta/ release/lens/2.5-beta/apache-lens-2.5.0-beta-bin.tar.gz (with props) release/lens/2.5-beta/apache-lens-2.5.0-beta-bin.tar.gz.asc release/lens/2.5-beta/apache-lens-2.5.0-beta-bin.tar.gz.md5 release/lens/2.5-beta/apache-lens-2.5.0-beta-bin.tar.gz.sha512 release/lens/2.5-beta/apache-lens-2.5.0-beta-source-release.zip (with props) release/lens/2.5-beta/apache-lens-2.5.0-beta-source-release.zip.asc release/lens/2.5-beta/apache-lens-2.5.0-beta-source-release.zip.md5 release/lens/2.5-beta/apache-lens-2.5.0-beta-source-release.zip.sha512 Removed: release/lens/2.4-beta/ Added: release/lens/2.5-beta/apache-lens-2.5.0-beta-bin.tar.gz == Binary file - no diff available. Propchange: release/lens/2.5-beta/apache-lens-2.5.0-beta-bin.tar.gz -- svn:mime-type = application/octet-stream Added: release/lens/2.5-beta/apache-lens-2.5.0-beta-bin.tar.gz.asc == --- release/lens/2.5-beta/apache-lens-2.5.0-beta-bin.tar.gz.asc (added) +++ release/lens/2.5-beta/apache-lens-2.5.0-beta-bin.tar.gz.asc Mon Mar 28 11:58:47 2016 @@ -0,0 +1,16 @@ +-BEGIN PGP SIGNATURE- + +iQIcBAABAgAGBQJW66VhAAoJEImUbS/iTkagzuoP/jQ3AbSR4FVPjZLE9sEvsXx1 +McmSo8Ovd9fINObwpBA2WVl898pXtoKfT3A1CO+zJwXBCoZKS9TUqFADCbSaZFIl +PyXKiHrJXyomulQQLeWZO3HBZaJldG8YaEU+Tl5X2lcqYEyx9cspGDq6tR1GBZ3q +5n3wUEqPfbSUUJVBESjw+29UGir435xfM3RL8CuDr1y4sq7z/zshFT8xuInAaDZ2 +8LbA85bckgrqBklay3guyywN2Le/ezY6p79xhYCvd842IPnyROaVmRz9pFrhbTuB +bsgw5XIoWJbCgNAmkGQZWSgwV6uCp7y9L5yuHhcfgbMlSTsjHpPquTD7yWDA0Ub1 +dCM/e84hrOr2LtZ8GSjmVK/ugxGEQUyFwBB1SlfEuBZlc0D5tqQzJu6XsbXgSgSc +0gOr+nsPVANV6P9UMpaYywn7WvpE1dRjGrXzzjLXUg2kzTfm/rduZ0LRBMvDKAfK +nNpfOZ4PsHKfb3eyFL2UglWDEXF99BVF0hwulWss1rZSS5ExUvYVNGXHxgyroDIo +CpiubueoF63TrS3uSzbT8xZpiezAqBKcESFhwp4lvHOjp5pxciPTmzrqeUEK7jm2 +7n59ZRbek25r18xfqbHqU6yfySDEQ0A3NaYHYlt7ScoTw0WCyQgv/qRK2lAx6Par +BvEvO8jIxLTXHVy2+VOZ +=ACDa +-END PGP SIGNATURE- Added: release/lens/2.5-beta/apache-lens-2.5.0-beta-bin.tar.gz.md5 == --- release/lens/2.5-beta/apache-lens-2.5.0-beta-bin.tar.gz.md5 (added) +++ release/lens/2.5-beta/apache-lens-2.5.0-beta-bin.tar.gz.md5 Mon Mar 28 11:58:47 2016 @@ -0,0 +1,2 @@ +apache-lens-2.5.0-beta-bin.tar.gz: 73 CA 22 29 B6 4E 7E 77 58 7F 47 49 52 56 72 + 98 Added: release/lens/2.5-beta/apache-lens-2.5.0-beta-bin.tar.gz.sha512 == --- release/lens/2.5-beta/apache-lens-2.5.0-beta-bin.tar.gz.sha512 (added) +++ release/lens/2.5-beta/apache-lens-2.5.0-beta-bin.tar.gz.sha512 Mon Mar 28 11:58:47 2016 @@ -0,0 +1,4 @@ +apache-lens-2.5.0-beta-bin.tar.gz: 17273D87 7AD70C2D 68C4DB36 3C152D39 E61D325C + BCAA147E 45F961DE 750A1436 EBE81738 0E434671 + E45E BF56E537 1B3A7D7E 7F0176BD CE62011A + 2EAA40DF Added: release/lens/2.5-beta/apache-lens-2.5.0-beta-source-release.zip == Binary file - no diff available. Propchange: release/lens/2.5-beta/apache-lens-2.5.0-beta-source-release.zip -- svn:mime-type = application/octet-stream Added: release/lens/2.5-beta/apache-lens-2.5.0-beta-source-release.zip.asc == --- release/lens/2.5-beta/apache-lens-2.5.0-beta-source-release.zip.asc (added) +++ release/lens/2.5-beta/apache-lens-2.5.0-beta-source-release.zip.asc Mon Mar 28 11:58:47 2016 @@ -0,0 +1,16 @@ +-BEGIN PGP SIGNATURE- + +iQIcBAABAgAGBQJW66PrAAoJEImUbS/iTkagiZMP/j4YP+MOkSTEzpZVfJLYnVbf +QyrH9pCpUvlEXF8Z4PwlPCCsKH89VgEyxNp4Psqi9iek3WYB7rboJBMdC47e/NWM +Gz84qc5zvJK4KPO+iQlI2ef4fk4ojfvH/qPjX9X2mJ8L8h3EEotBc6fJnzdnE+dE +4Js+2yL8XZugXEBxxYg6OQ5vL8TFHCq+Dkv9zoek4YpeArXMPfn0bwbrZyXJfLPW +4oj/CHvJVsrU7ibq0ZdVZrK4eIp1YNb1v/aXYrw72Q0FcIDfxjei++eDLxsy7m2m +nKR5vqNNDXbuUfyg3uR87a2oYoiOHW/B5YgO2+5X0cpIRelQeDbvxQW+JNS6g7Fh +LmwtxI8eHOh0o7kQfjbcBKdeRfKDMkchzRpEXznZITRwdN9TtIGodjMhIoxnHaGH +yjhsCRxqWUIdL51vCmhu8H+848nAzXTbpxybx6yqnCdjZa2tJ/lRaiXYtT9l37Fs +16I3pb5UJlpl/sckWUTsQB0DqRazNka5BTiqtTritYuZ2zaxoSzafG5Pz9l3S+vM +6dlk19CjZufaIh39nME1BVm559j00Xo0ZidbMWwZ8VoQPPH69jXLlDdHsRiHrxBI +zy4wg+DYXA69elYiG0Qg7g+3ZQgP++dpIhddth4hx+o9rcejYf6vRzhaqFtfafJS +pKD1XebhObYaIXYT8sxG +=7ESF +-END PGP SIGNATURE- Added: release/lens/2.5-beta/apache-lens-2.5.0-beta-source-release.zip.md5
lens git commit: LENS-993 : Fix thread pool creations on server
Repository: lens Updated Branches: refs/heads/master a1445f3d3 -> aeca66ad4 LENS-993 : Fix thread pool creations on server Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/aeca66ad Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/aeca66ad Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/aeca66ad Branch: refs/heads/master Commit: aeca66ad432d7717b9d7651d7a3c9277da25bb70 Parents: a1445f3 Author: Amareshwari Sriramadasu <amareshw...@apache.org> Authored: Mon Mar 28 15:37:11 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Mar 28 15:37:11 2016 +0530 -- .../server/api/events/AsyncEventListener.java | 22 +++- .../lens/server/query/QueryEndNotifier.java | 5 ++--- .../server/query/QueryExecutionServiceImpl.java | 3 ++- .../lens/server/query/ResultFormatter.java | 5 ++--- .../lens/server/query/TestEventService.java | 2 +- 5 files changed, 15 insertions(+), 22 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/aeca66ad/lens-server-api/src/main/java/org/apache/lens/server/api/events/AsyncEventListener.java -- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/events/AsyncEventListener.java b/lens-server-api/src/main/java/org/apache/lens/server/api/events/AsyncEventListener.java index 84728e5..9473465 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/events/AsyncEventListener.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/events/AsyncEventListener.java @@ -60,44 +60,38 @@ public abstract class AsyncEventListener implements LensEve * Create a single threaded event listener with an unbounded queue, with daemon threads. */ public AsyncEventListener() { -this(1, 1); +this(1); } /** * Create a event listener with poolSize threads with an unbounded queue and daemon threads. * * @param poolSize the pool size - * @param maxPoolSize the max pool size */ - public AsyncEventListener(int poolSize, int maxPoolSize) { -this(poolSize, maxPoolSize, -1, 10, true); + public AsyncEventListener(int poolSize) { +this(poolSize, 60, true); } /** * Create an asynchronous event listener which uses a thread poool to process events. * * @param poolSize size of the event processing pool - * @param maxPoolSizethe max pool size - * @param maxQueueSize max size of the event queue, if this is non positive, then the queue is unbounded * @param timeOutSeconds time out in seconds when an idle thread is destroyed * @param isDaemon if the threads used to process should be daemon threads, * if false, then implementation should call stop() * to stop the thread pool */ - public AsyncEventListener(int poolSize, int maxPoolSize, int maxQueueSize, long timeOutSeconds, - final boolean isDaemon) { -if (maxQueueSize <= 0) { - eventQueue = new LinkedBlockingQueue(); -} else { - eventQueue = new ArrayBlockingQueue(maxQueueSize); -} + public AsyncEventListener(int poolSize, long timeOutSeconds, final boolean isDaemon) { +eventQueue = new LinkedBlockingQueue<>(); ThreadFactory factory = new BasicThreadFactory.Builder() .namingPattern(getName()+"_AsyncThread-%d") .daemon(isDaemon) .priority(Thread.NORM_PRIORITY) .build(); -processor = new ThreadPoolExecutor(poolSize, maxPoolSize, timeOutSeconds, TimeUnit.SECONDS, eventQueue, factory); +// fixed pool with min and max equal to poolSize +processor = new ThreadPoolExecutor(poolSize, poolSize, timeOutSeconds, TimeUnit.SECONDS, eventQueue, factory); +processor.allowCoreThreadTimeOut(true); } /** http://git-wip-us.apache.org/repos/asf/lens/blob/aeca66ad/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java b/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java index 63c38d9..91fddc9 100644 --- a/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java +++ b/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java @@ -95,8 +95,7 @@ public class QueryEndNotifier extends AsyncEventListener { private final LogSegregationContext logSegregationContext; /** QueryEndNotifier core and max pool size */ - private static final int CORE_POOL_SIZE = 2; - private static final int MAX_POOL_SIZE = 5; + private static final int CORE_POOL_SIZE = 5;
[2/3] lens git commit: LENS-788 : Push expressions before flattening and convert filters to array_contains filters for bridge tables
http://git-wip-us.apache.org/repos/asf/lens/blob/dba885ca/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBridgeTableQueries.java -- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBridgeTableQueries.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBridgeTableQueries.java index e8ad8ff..e8905c1 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBridgeTableQueries.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBridgeTableQueries.java @@ -48,14 +48,14 @@ public class TestBridgeTableQueries extends TestQueryRewrite { public void testBridgeTablesWithoutDimtablePartitioning() throws Exception { String query = "select usersports.name, sum(msr2) from basecube where " + TWO_DAYS_RANGE; String hqlQuery = rewrite(query, hConf); -String expected = getExpectedQuery("basecube", "select usersports.name, sum(basecube.msr2) FROM ", +String expected = getExpectedQuery("basecube", "select usersports.balias0, sum(basecube.msr2) FROM ", " join " + getDbName() + "c1_usertable userdim ON basecube.userid = userdim.id " -+ " join (select user_interests.user_id as user_id,collect_set(usersports.name) as name" ++ " join (select user_interests.user_id as user_id,collect_set(usersports.name) as balias0" + " from " + getDbName() + "c1_user_interests_tbl user_interests" + " join " + getDbName() + "c1_sports_tbl usersports on user_interests.sport_id = usersports.id" + " group by user_interests.user_id) usersports" + " on userdim.id = usersports.user_id ", - null, "group by usersports.name", null, + null, "group by usersports.balias0", null, getWhereForDailyAndHourly2days("basecube", "c1_testfact1_base")); TestCubeRewriter.compareQueries(hqlQuery, expected); // run with chain ref column @@ -68,14 +68,14 @@ public class TestBridgeTableQueries extends TestQueryRewrite { public void testBridgeTablesForExprFieldWithoutDimtablePartitioning() throws Exception { String query = "select substr(usersports.name, 10), sum(msr2) from basecube where " + TWO_DAYS_RANGE; String hqlQuery = rewrite(query, hConf); -String expected = getExpectedQuery("basecube", "select substr(usersports.name, 10), sum(basecube.msr2) FROM ", +String expected = getExpectedQuery("basecube", "select usersports.balias0, sum(basecube.msr2) FROM ", " join " + getDbName() + "c1_usertable userdim ON basecube.userid = userdim.id " -+ " join (select user_interests.user_id as user_id,collect_set(usersports.name) as name" ++ " join (select user_interests.user_id as user_id,collect_set(substr(usersports.name, 10)) as balias0" + " from " + getDbName() + "c1_user_interests_tbl user_interests" + " join " + getDbName() + "c1_sports_tbl usersports on user_interests.sport_id = usersports.id" + " group by user_interests.user_id) usersports" + " on userdim.id = usersports.user_id ", - null, "group by substr(( usersports . name ), 10 )", null, + null, "group by usersports.balias0", null, getWhereForDailyAndHourly2days("basecube", "c1_testfact1_base")); TestCubeRewriter.compareQueries(hqlQuery, expected); // run with chain ref column @@ -109,14 +109,14 @@ public class TestBridgeTableQueries extends TestQueryRewrite { conf.set(CubeQueryConfUtil.BRIDGE_TABLE_FIELD_AGGREGATOR, "custom_aggr"); String query = "select usersports.name, sum(msr2) from basecube where " + TWO_DAYS_RANGE; String hqlQuery = rewrite(query, conf); -String expected = getExpectedQuery("basecube", "select usersports.name, sum(basecube.msr2) FROM ", +String expected = getExpectedQuery("basecube", "select usersports.balias0, sum(basecube.msr2) FROM ", " join " + getDbName() + "c1_usertable userdim ON basecube.userid = userdim.id " -+ " join (select user_interests.user_id as user_id,custom_aggr(usersports.name) as name" ++ " join (select user_interests.user_id as user_id,custom_aggr(usersports.name) as balias0" + " from " + getDbName() + "c1_user_interests_tbl user_interests" + " join " + getDbName() + "c1_sports_tbl usersports on user_interests.sport_id = usersports.id" + " group by user_interests.user_id) usersports" + " on userdim.id = usersports.user_id ", - null, "group by usersports.name", null, + null, "group by usersports.balias0", null, getWhereForDailyAndHourly2days("basecube", "c1_testfact1_base")); TestCubeRewriter.compareQueries(hqlQuery, expected); // run with chain ref column @@ -129,16 +129,17 @@ public class TestBridgeTableQueries extends TestQueryRewrite { public void testBridgeTablesWithMegringChains() throws Exception { String query = "select userInterestIds.sport_id, usersports.name, sum(msr2) from basecube where
[3/3] lens git commit: LENS-788 : Push expressions before flattening and convert filters to array_contains filters for bridge tables
LENS-788 : Push expressions before flattening and convert filters to array_contains filters for bridge tables Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/dba885ca Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/dba885ca Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/dba885ca Branch: refs/heads/master Commit: dba885ca972e8a11281f1bc44ceb4b7dd3906ce0 Parents: 79b95f0 Author: Amareshwari Sriramadasu <amareshw...@apache.org> Authored: Wed Mar 30 10:25:20 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Wed Mar 30 10:25:20 2016 +0530 -- .../apache/lens/cube/parse/CandidateFact.java | 51 +- .../lens/cube/parse/CubeQueryConfUtil.java | 5 + .../lens/cube/parse/CubeQueryContext.java | 21 +- .../lens/cube/parse/DefaultAliasDecider.java| 13 +- .../apache/lens/cube/parse/DefaultQueryAST.java | 5 +- .../apache/lens/cube/parse/DimHQLContext.java | 29 +- .../lens/cube/parse/DimOnlyHQLContext.java | 10 - .../org/apache/lens/cube/parse/HQLParser.java | 49 +- .../apache/lens/cube/parse/JoinResolver.java| 9 +- .../lens/cube/parse/MultiFactHQLContext.java| 3 - .../org/apache/lens/cube/parse/QueryAST.java| 6 +- .../parse/SingleFactMultiStorageHQLContext.java | 8 - .../SingleFactSingleStorageHQLContext.java | 12 - .../lens/cube/parse/join/AutoJoinContext.java | 104 +--- .../cube/parse/join/BridgeTableJoinContext.java | 321 ++ .../src/main/resources/olap-query-conf.xml | 18 + .../apache/lens/cube/parse/CubeTestSetup.java | 19 +- .../lens/cube/parse/TestBridgeTableQueries.java | 618 +-- .../cube/parse/TestDefaultAliasDecider.java | 53 ++ .../apache/lens/cube/parse/TestHQLParser.java | 82 +++ .../org/apache/lens/cube/parse/TestQuery.java | 18 +- .../cube/parse/join/TestBridgeTableJoinCtx.java | 122 lens-dist/src/main/assembly/bin-dist.xml| 16 + .../lens/examples/PopulateSampleMetastore.java | 2 + .../apache/lens/examples/SampleMetastore.java | 4 + .../src/main/resources/cube-queries.sql | 6 +- .../resources/customer-interests-local-part.xml | 30 + .../resources/customer-interests-local.data | 6 + .../src/main/resources/customer-interests.xml | 31 + .../main/resources/customer_interests_table.xml | 52 ++ .../src/main/resources/db-storage-schema.sql| 18 + .../src/main/resources/interests-local-part.xml | 29 + .../src/main/resources/interests-local.data | 4 + lens-examples/src/main/resources/interests.xml | 31 + .../src/main/resources/interests_table.xml | 51 ++ lens-examples/src/main/resources/sales-cube.xml | 24 + src/site/apt/user/olap-cube.apt | 8 + src/site/apt/user/olap-query-conf.apt | 48 +- tools/conf/client/lens-client-site.xml | 16 +- 39 files changed, 1678 insertions(+), 274 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/dba885ca/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java index 82ca4f4..3f724b6 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java @@ -23,8 +23,6 @@ import static org.apache.hadoop.hive.ql.parse.HiveParser.*; import java.util.*; import org.apache.lens.cube.metadata.*; -import org.apache.lens.cube.parse.HQLParser.ASTNodeVisitor; -import org.apache.lens.cube.parse.HQLParser.TreeNode; import org.apache.lens.server.api.error.LensException; import org.apache.commons.lang.StringUtils; @@ -76,6 +74,8 @@ public class CandidateFact implements CandidateTable, QueryAST { @Getter @Setter private Integer limitValue; + @Getter + private String fromString; private final List selectIndices = Lists.newArrayList(); private final List dimFieldIndices = Lists.newArrayList(); private Collection columns; @@ -166,7 +166,7 @@ public class CandidateFact implements CandidateTable, QueryAST { } public boolean isExpressionAnswerable(ASTNode node, CubeQueryContext context) throws LensException { -return getColumns().containsAll(getColsInExpr(context, context.getCube().getAllFieldNames(), node)); +return getColumns().containsAll(HQLParser.getColsInExpr(context.getAliasForTableName(context.getCube()), node)); } /** @@ -182,7 +182,7 @@ public class CandidateFact implements CandidateTable, QueryAST { int currentChild = 0; for (int i = 0; i < cubeql.getSelectAST().get
svn commit: r12823 - /release/lens/KEYS
Author: amareshwari Date: Wed Mar 23 08:21:03 2016 New Revision: 12823 Log: Uploading Deepak Barr's KEYS Modified: release/lens/KEYS Modified: release/lens/KEYS == --- release/lens/KEYS (original) +++ release/lens/KEYS Wed Mar 23 08:21:03 2016 @@ -1451,3 +1451,73 @@ OSZtGkNYe7hcZ+/Qxnuj/Si0nIVpgKOV0ZRO6QK+ qA== =hmbB -END PGP PUBLIC KEY BLOCK- +pub 4096R/E24E46A0 2016-02-25 [expires: 2020-02-25] + Key fingerprint = D12C 73D3 550F F992 825B 6071 8994 6D2F E24E 46A0 +uid Deepak Kumar Barr <deepakb...@apache.org> +sig 315A87037 2016-02-25 Rajat Khandelwal <pro...@apache.org> +sig 3E24E46A0 2016-02-25 Deepak Kumar Barr <deepakb...@apache.org> +sub 4096R/D84CF2BC 2016-02-25 [expires: 2020-02-25] +sig E24E46A0 2016-02-25 Deepak Kumar Barr <deepakb...@apache.org> +-BEGIN PGP PUBLIC KEY BLOCK- + +mQINBFbO+/4BEACdsXxgskD768xS/Q5swV/hqF6Ht+0/tHSX6Va/pi/VMiInlpGw +cn38LGtXIHjt4AsUpTrvuTvzJzCrV6Pchv9tx6/RqOT2E1rVkqtewsChHuTXhYPM +avWsOSUDPL6HemLK791b2lL2pHPrv5bzK6T3eBWIXmy5ERyimPj354OQAi7bqSsi +f0cts6x0gGFJkr7mMnS/TdlXjYjn2qHO55EY1TeZWScleSoQJCTMuE8UlyxfsbS4 +cRm1zL7XjHesgfG/3vFRK/J6P6nNAbTotT6W5SbJ2Kevph9ZDv6nEs5oCAqHd70S +/693zsh8BjwP0BKYim19UQItirJ0Sk//2OOuQ3cc37LgsExFV4ldhOKnrP6W4AJI +KDNGb5LZlEbzPw7WOCQ5QzMW8xeVFJ1wfTfvZzdwWPdjDVd3baufF3b8bfYj/G5T +EKsxl39xsxI6/OZCeOKI5UcsOnwnMWGD/XWaa316tT+3bzbqFeDsLXW1u63R5sng +fN1ei+9imlKBHW7dBmAw9/+s1HdlVAi624s+NbnHi2vt9iCL0hMAGuCQlqVQc/3q +b261RYL+uLPCWf3MHUU9AX24vc5D7ZTVLXV+G2fibX7XEdj2HKHSGTWTLZILEWXu +QKd6pai+b3LoIZF+UacYrPE+MIxdmYajN+AsPNyGYJs01z+eiMDirMlCHwARAQAB +tClEZWVwYWsgS3VtYXIgQmFyciA8ZGVlcGFrYmFyckBhcGFjaGUub3JnPokCHAQT +AQoABgUCVs7/qQAKCRDfPFJjFahwN2SbEACGS7jA6fqe6GgO3264eBOPecH44KXQ +E5m4ieDv1urSnzlEBFvcB5Z75NIgOH5thx/tNk7Ssdr3rHZlAMpvGxs5/wHdIBKn +mWIY9tFgiV4bkgkfVDNjvjD6k9gx86yFVtxUfiQfndfXzNeeTt4RA0xhaR3cmqB5 +NZBJloR25zoi6b0vTVJrl3RKpVAdmwlwUE9Wwz0C/hsizACEQ0S1JrhArKrwgGzd +PbZprj/XjYrfsE7nsdzlDdPR+H2Wp1hUc231txaPhcuqMhb49xbFkYJlTcypYVxE +MtFH9QYrD6Z0CBIxgvkfz+XNfyLQ/nawh1Lts8oZtxW/F4ee2dV6XEuJB/PuXVq1 +wBIuDEU6rOVzCbjrNtjmfD3gMp0veDsZiFNqEeXsSi94Xwh7CFB2eNVLL6rHVKT3 +3qcZrhUjJoerhgb4jbKNehkXSHatWi7ro/UkK+nuCjMyvuFcnoMLxUiEzlDL8bb/ +seJM4QnMVad2ZusNM2IfUH4tScdG4k5fb13cSpiYB2IMVXbD0P0j1Mu0bUwhLSIJ +rzAFt/9XorC0jLIrIYwtC9tDaCKQ72mOXYOkljLzZjqTeEZD3jBr29SiUUycPxuN +qnxs6NtY1uCURjHbraufA76ELbWQUMdU1J4E9es0fLhV10OOQTKWnHO4ypzC4RzW +LGbIgQ8Zan83EokCPwQTAQgAKQUCVs77/gIbAwUJB4YfgAcLCQgHAwIBBhUIAgkK +CwQWAgMBAh4BAheAAAoJEImUbS/iTkag8NUQAIJj9p6QQ9cIpI9v4xUoDI3gS/9n +zkiPR1puG0qFiGB5sK0khZ41ygrO28wqeNfE5RadCNPQe4eJm9OO41AHnWSl0ms0 +nwfagXoBVqG28ScT8B2frnwwkKPK7tBdZcL7TXjI4Q+KO7lYuEUc7+/LYn9Pc/Q1 +RnVz76Q6KDgho4DysI1/7rHqwMdlawbWy6ZYXwePaisQ5jsReZlQR2+e+xKj8r+A +CHQfePNHr8csP14cMi2rPD6m77JKosEGOo1hEcLTarok0XQs/Yp+nOBSkDCH5z6a +lpcYsSfVffzkeyoc/JtIwQnKSBWIR7G80tnOuTL7aOlDhIiZiU+nU+wCy7dNn0GF +I5F4CD9CgM5A4q2wDWOiqaaDOXEqLuDBfcJWqkt8XtQf6Qk4JQ3Iin4ArhqP25qr +xEy4Odh2NjV8se2Mr5S6yOOJK6wRu67WTpC5jkBvTzcdZBKUExZjorx13Qrr2hNg +/wcx6Pkfd6+cddZVUSY8Wzsm00gZyWXavHJ3WaNdABu1ZmJMkAo1H3PDkaUsarWN +YkuLzw20x9OEApnvTm1BDYSSGX5w1NHj2Ac4faoCIbtH+g50cti3nnb+FzrATfOa +GM2kXalQfpyHUlZpnW1VpIr2Ji7LGlb7rkAOtoN56ROc0vsV9Xlsf971gJLtNsU4 +4xMqBW8elmXCpG0YuQINBFbO+/4BEADW+50qJbne94wQcAietC7bAagfsjj3lgmO +8wJbCw46burnWTgeFKEI07D3lwZbwlnQjJHTkmBuPEkarxLnL9qPUJAMcsLIXSiS +5FhZqnE2+9pEuggTqQ+3rw3npLlrNorGVWi+CyioUh1EjH9RhxVQVaPlBSMx/+ZP +GICCmEFGMMnbyKVDL3wk73e+fvP4hflBSlcvXDgDp9OK/4jtm30H8N+3ZwRvIptj ++ZnyvVPj/yWHdieBT1G6S6lhucOO0g2Meym1kXzBCD53wwcablf6WOQbSxvznSEs +MpfuoSqoYYcGmL6SQ4E5RmLcsNvys3hhsVjwaL4BYvKXtwh5PhfiEZPzU2e4Ftka +6PnfdyKmygSaNGRsCcOeBbH89bIox7dFOfBrw93kpiPpDD3A390LmuLw96A3gFIm +LqMlF2eIdySmtF6qD9D53pciTAP6u0ZcKMZftXVHhfEOLftedeHAVpthDCaeGU4z +AkWM0WGeNg6tGj+RLXWgAc0/L35RhR1k4dv/yoC0aduDx2ojTJiRYUomBbJwWR5b +tEHldRLYfaJ8i79LNrr9CyXn7+1D7aTXKXY+jFYxsCKe7VzCxP6foK/O8aW3Q9a3 +LyVS+0Y3Dv2Miwve9zA0M679ZhkJevP3Oa9cg5tTyqgviezhMCAfy/MMT0Ojlld8 +jBn7fiQQZQARAQABiQIlBBgBCAAPBQJWzvv+AhsMBQkHhh+AAAoJEImUbS/iTkag +R9sP/iVqyd+KmSNiF7Lc9sqjbaKd3zVZWRudB96O7aftDeSCrud2piE7xWd5ifRz +GT11c/oqUpwfyuytjmds0fvKvtN4wlsE02jOyQLWEMOVPMhw16mnGWJqfX4kRNib +rYlN6mEfjziDu5RGyKAM8vpnOEXgMYV/DaDllXAMpxG+4QwC3QeoN9+n4Myhu38o +WZAu2a0+Ag05mIKh05M3Degs3MsdJcFyyneYlFJUPkAV8dkf0Cnuku872I59MkUg +aN2m3K5k/vgsElyN6wZRWeGE4FXAnYQifwUwDhbz1HpPriFoWs1MjgCTnbuevCgW +rPcXoEa5fFjpcCFb565Ktr7LFreeVKdTe7KsUkYDkKnci59mNAZnpF+hymdVvfqp +966CP0UKH8Pq8quH64W4P+SHKQmC+AMJnelRxDajBZ/L8x3T/BF2eu2XRV0IrIJn +TlfIgjQOo7BZ0cWc5URKV6yD6o9v2uGOJUGhB+cnWdPQaf1J0r4/FYMkoFevJphu +1zMUj19RFQucZZNwnHmYtwh6tJ/4Mcx7FIhFi4MaANv48ex+fIXzLhtEusVRnxFg +Zvj3MUKejruKx/WGcPNQOm41TuTsHiGWt9ZsY+fj8xvKLssGfBQJs620Pty1bKWv +1ksRP8Yc23NKnj7yzRvRydZUKwhth3rrwgjElcH+PIxQjGXX +=ld2T +-END PGP PUBLIC KEY BLOCK- +
lens git commit: LENS-1013 : Add postDriverSelection to DriverQueryHook
Repository: lens Updated Branches: refs/heads/master 6995962fd -> 9b7541bcb LENS-1013 : Add postDriverSelection to DriverQueryHook Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/9b7541bc Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/9b7541bc Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/9b7541bc Branch: refs/heads/master Commit: 9b7541bcbcc33faf3cbde71452f334783795ea27 Parents: 6995962 Author: Puneet Gupta <puneet.k.gu...@gmail.com> Authored: Thu Apr 28 09:36:38 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Thu Apr 28 09:36:38 2016 +0530 -- .../org/apache/lens/driver/hive/HiveDriver.java | 6 ++- .../apache/lens/driver/hive/TestHiveDriver.java | 3 -- .../lens/driver/hive/TestRemoteHiveDriver.java | 3 -- .../org/apache/lens/driver/jdbc/JDBCDriver.java | 6 ++- .../apache/lens/driver/jdbc/TestJdbcDriver.java | 3 -- .../server/api/driver/AbstractLensDriver.java | 7 +++ .../lens/server/api/driver/DriverQueryHook.java | 39 -- .../lens/server/api/driver/LensDriver.java | 6 +++ .../server/api/driver/NoOpDriverQueryHook.java | 14 +++-- .../server/api/user/MockDriverQueryHook.java| 34 +--- .../server/query/QueryExecutionServiceImpl.java | 18 --- .../org/apache/lens/server/LensJerseyTest.java | 11 +++- .../apache/lens/server/TestServerRestart.java | 55 +--- .../lens/server/query/TestQueryService.java | 7 ++- .../drivers/hive/hive1/hivedriver-site.xml | 7 +++ .../drivers/hive/hive2/hivedriver-site.xml | 7 +++ 16 files changed, 176 insertions(+), 50 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/9b7541bc/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java -- diff --git a/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java b/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java index 6eec3f7..19a010e 100644 --- a/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java +++ b/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java @@ -559,7 +559,6 @@ public class HiveDriver extends AbstractLensDriver { Configuration qdconf = ctx.getDriverConf(this); qdconf.set("mapred.job.name", ctx.getQueryHandle().toString()); decidePriority(ctx); - queryHook.preLaunch(ctx); SessionHandle sessionHandle = getSession(ctx); OperationHandle op = getClient().executeStatementAsync(sessionHandle, ctx.getSelectedDriverQuery(), qdconf.getValByRegex(".*")); @@ -1370,4 +1369,9 @@ public class HiveDriver extends AbstractLensDriver { public boolean hasLensSession(LensSessionHandle session) { return lensToHiveSession.containsKey(session.getPublicId().toString()); } + + @Override + public DriverQueryHook getQueryHook() { +return queryHook; + } } http://git-wip-us.apache.org/repos/asf/lens/blob/9b7541bc/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java -- diff --git a/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java b/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java index 3f77b0c..cf51909 100644 --- a/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java +++ b/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java @@ -39,7 +39,6 @@ import org.apache.lens.server.api.query.QueryContext; import org.apache.lens.server.api.query.cost.QueryCost; import org.apache.lens.server.api.query.priority.CostRangePriorityDecider; import org.apache.lens.server.api.query.priority.CostToPriorityRangeConf; -import org.apache.lens.server.api.user.MockDriverQueryHook; import org.apache.lens.server.api.util.LensUtil; import org.apache.hadoop.conf.Configuration; @@ -121,7 +120,6 @@ public class TestHiveDriver { conf = new HiveConf(); conf.addResource("drivers/hive/hive1/hivedriver-site.xml"); conf.setClass(HiveDriver.HIVE_CONNECTION_CLASS, EmbeddedThriftConnection.class, ThriftConnection.class); -conf.setClass(HiveDriver.HIVE_QUERY_HOOK_CLASS, MockDriverQueryHook.class, DriverQueryHook.class); conf.set("hive.lock.manager", "org.apache.hadoop.hive.ql.lockmgr.EmbeddedLockManager"); conf.setBoolean(HiveDriver.HS2_CALCULATE_PRIORITY, true); driver = new HiveDriver(); @@ -484,7 +482,6 @@ public class TestHiveDriver { */ protected void validateExecuteAsync(QueryContext ctx, DriverQueryState finalState, boolean isPersisten
lens git commit: LENS-906 : Reduce test time for TestCubeMetastoreClient
Repository: lens Updated Branches: refs/heads/master f21130992 -> 6e11d780f LENS-906 : Reduce test time for TestCubeMetastoreClient Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/6e11d780 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/6e11d780 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/6e11d780 Branch: refs/heads/master Commit: 6e11d780f8ede78745f5247d983c0f63f42fb41d Parents: f211309 Author: Amareshwari Sriramadasu <amareshw...@apache.org> Authored: Wed Apr 27 08:45:30 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Wed Apr 27 08:45:30 2016 +0530 -- .../cube/metadata/TestCubeMetastoreClient.java | 73 ++-- 1 file changed, 69 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/6e11d780/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestCubeMetastoreClient.java -- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestCubeMetastoreClient.java b/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestCubeMetastoreClient.java index 0773005..02571ee 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestCubeMetastoreClient.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestCubeMetastoreClient.java @@ -72,6 +72,10 @@ public class TestCubeMetastoreClient { private static Set dimensions; private static Set cubeMeasures; private static Set cubeDimensions; + private static Set moreMeasures = Sets.newHashSet(); + private static Set moreDimensions = Sets.newHashSet(); + private static Set moreCubeMeasures = Sets.newHashSet(); + private static Set moreCubeDimensions = Sets.newHashSet(); private static Set hourlyAndDaily = Sets.newHashSet(HOURLY, DAILY); private static final String CUBE_NAME = "testMetastoreCube"; private static final String CUBE_NAME_WITH_PROPS = "testMetastoreCubeWithProps"; @@ -340,16 +344,20 @@ public class TestCubeMetastoreClient { }); cubeDimensions.add(new ReferencedDimAttribute(new FieldSchema("zipcityname", "string", "zip city name"), "Zip city name", "cityFromZip", "name", null, null, null)); -cubeMeasures.addAll(dummyMeasure); -cubeDimensions.addAll(dummyDimAttributes); +moreCubeMeasures.addAll(cubeMeasures); +moreCubeMeasures.addAll(dummyMeasure); +moreCubeDimensions.addAll(cubeDimensions); +moreCubeDimensions.addAll(dummyDimAttributes); cube = new Cube(cubeName, cubeMeasures, cubeDimensions, cubeExpressions, joinChains, emptyHashMap, 0.0); measures = Sets.newHashSet("msr1", "msr2", "msr3"); +moreMeasures.addAll(measures); for(CubeMeasure measure: dummyMeasure) { - measures.add(measure.getName()); + moreMeasures.add(measure.getName()); } dimensions = Sets.newHashSet("dim1", "dim2", "dim3"); +moreDimensions.addAll(dimensions); for(CubeDimAttribute dimAttribute: dummyDimAttributes) { - dimensions.add(dimAttribute.getName()); + moreDimensions.add(dimAttribute.getName()); } derivedCube = new DerivedCube(derivedCubeName, measures, dimensions, cube); @@ -784,6 +792,63 @@ public class TestCubeMetastoreClient { } @Test(priority = 1) + public void testCubeWithMoreMeasures() throws Exception { +String cubeName = "cubeWithMoreMeasures"; +Cube cube = new Cube(cubeName, moreCubeMeasures, moreCubeDimensions, cubeExpressions, joinChains, emptyHashMap, + 0.0); +client.createCube(cubeName, moreCubeMeasures, moreCubeDimensions, cubeExpressions, joinChains, emptyHashMap); +assertTrue(client.tableExists(cubeName)); +Table cubeTbl = client.getHiveTable(cubeName); +assertTrue(client.isCube(cubeTbl)); +Cube cube2 = new Cube(cubeTbl); +assertTrue(cube.equals(cube2)); +assertFalse(cube2.isDerivedCube()); +assertTrue(cube2.getTimedDimensions().isEmpty()); +assertEquals(moreCubeMeasures.size(), cube2.getMeasureNames().size()); +// +8 is for hierarchical dimension +assertEquals(moreCubeDimensions.size() + 8, cube2.getDimAttributeNames().size()); +assertEquals(moreCubeMeasures.size(), cube2.getMeasures().size()); +assertEquals(cubeExpressions.size(), cube2.getExpressions().size()); +assertEquals(cubeExpressions.size(), cube2.getExpressionNames().size()); +assertEquals(moreCubeDimensions.size(), cube2.getDimAttributes().size()); +assertEquals(moreCubeDimensions.size() + 8 + moreCubeMeasures.size() + cubeExpressions.size(), cube2 + .getAllFieldNames().size()); +assertNotNull(cube2
lens git commit: LENS-730 : Fix issues with column aliases in multifact query
Repository: lens Updated Branches: refs/heads/master 6e11d780f -> 3b3f42da5 LENS-730 : Fix issues with column aliases in multifact query Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/3b3f42da Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/3b3f42da Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/3b3f42da Branch: refs/heads/master Commit: 3b3f42da51808e1bb0d23357e1bfaecaca978896 Parents: 6e11d78 Author: Amareshwari Sriramadasu <amareshw...@apache.org> Authored: Wed Apr 27 09:52:06 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Wed Apr 27 09:52:06 2016 +0530 -- .../lens/cube/parse/AggregateResolver.java | 4 +- .../apache/lens/cube/parse/ColumnResolver.java | 44 +++-- .../lens/cube/parse/ExpressionResolver.java | 2 +- .../apache/lens/cube/parse/CubeTestSetup.java | 5 + .../lens/cube/parse/TestBaseCubeQueries.java| 165 --- .../lens/cube/parse/TestBridgeTableQueries.java | 46 +++--- .../lens/cube/parse/TestCubeRewriter.java | 10 +- .../lens/cube/parse/TestExpressionResolver.java | 12 +- 8 files changed, 210 insertions(+), 78 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/3b3f42da/lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java index fd7036a..1593a54 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java @@ -170,8 +170,8 @@ class AggregateResolver implements ContextRewriter { ASTNode tabident = HQLParser.findNodeByPath(node, TOK_TABLE_OR_COL, Identifier); ASTNode colIdent = (ASTNode) node.getChild(1); - colname = colIdent.getText(); - tabname = tabident.getText(); + colname = colIdent.getText().toLowerCase(); + tabname = tabident.getText().toLowerCase(); } String msrname = StringUtils.isBlank(tabname) ? colname : tabname + "." + colname; http://git-wip-us.apache.org/repos/asf/lens/blob/3b3f42da/lens-cube/src/main/java/org/apache/lens/cube/parse/ColumnResolver.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/ColumnResolver.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/ColumnResolver.java index 75aa3f4..58a1d4d 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/ColumnResolver.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/ColumnResolver.java @@ -61,10 +61,10 @@ class ColumnResolver implements ContextRewriter { } getColsForSelectTree(cubeql); getColsForWhereTree(cubeql); -getColsForTree(cubeql, cubeql.getJoinAST(), cubeql); -getColsForTree(cubeql, cubeql.getGroupByAST(), cubeql); -getColsForTree(cubeql, cubeql.getHavingAST(), cubeql); -getColsForTree(cubeql, cubeql.getOrderByAST(), cubeql); +getColsForTree(cubeql, cubeql.getJoinAST(), cubeql, true); +getColsForTree(cubeql, cubeql.getGroupByAST(), cubeql, true); +getColsForTree(cubeql, cubeql.getHavingAST(), cubeql, true); +getColsForTree(cubeql, cubeql.getOrderByAST(), cubeql, true); // Update join dimension tables for (String table : cubeql.getTblAliasToColumns().keySet()) { @@ -77,7 +77,8 @@ class ColumnResolver implements ContextRewriter { } // finds columns in AST passed. - static void getColsForTree(final CubeQueryContext cubeql, ASTNode tree, final TrackQueriedColumns tqc) + static void getColsForTree(final CubeQueryContext cubeql, ASTNode tree, final TrackQueriedColumns tqc, +final boolean skipAliases) throws LensException { if (tree == null) { return; @@ -98,7 +99,7 @@ class ColumnResolver implements ContextRewriter { // Take child ident.totext ASTNode ident = (ASTNode) node.getChild(0); String column = ident.getText().toLowerCase(); - if (cubeql.getExprToAliasMap().values().contains(column)) { + if (skipAliases && cubeql.getExprToAliasMap().values().contains(column)) { // column is an existing alias return; } @@ -137,18 +138,12 @@ class ColumnResolver implements ContextRewriter { // Updates alias for each selected expression. // Alias is updated as follows: // Case 1: If select expression does not have an alias - // ** And the expression has only one column queried, the column name is put - // as - // select alias. - // ** If the expression has more t
lens git commit: LENS-1022 : Reduce time for TestLensQueryCommands
Repository: lens Updated Branches: refs/heads/master e26ee5a71 -> d1c58cbcf LENS-1022 : Reduce time for TestLensQueryCommands Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/d1c58cbc Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/d1c58cbc Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/d1c58cbc Branch: refs/heads/master Commit: d1c58cbcf755321ae72d0fb1d9e9994e95f9f189 Parents: e26ee5a Author: Amareshwari Sriramadasu <amareshw...@apache.org> Authored: Wed Apr 27 18:18:14 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Wed Apr 27 18:18:14 2016 +0530 -- .../org/apache/lens/cli/TestLensQueryCommands.java | 16 .../lens/server/api/query/FinishedLensQuery.java| 2 +- .../lens/server/query/TestResultFormatting.java | 4 +++- lens-server/src/test/resources/lens-site.xml| 2 +- 4 files changed, 13 insertions(+), 11 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/d1c58cbc/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java -- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java index dbb5e9d..1dd2ffe 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java @@ -175,10 +175,10 @@ public class TestLensQueryCommands extends LensCliApplicationTest { int chkCount = 0; while (!qCom.getAllQueries("SUCCESSFUL", null, "all", null, -1, Long.MAX_VALUE).contains( "Total number of queries: " + (noOfSuccQueriesSoFar + 1))) { - Thread.sleep(2000); + Thread.sleep(100); chkCount++; - if (chkCount > 30) { -fail("Unable to get successful status for query even after 30 checks"); + if (chkCount > 100) { +fail("Unable to get successful status for query even after 100 checks"); } } if (closeConn) { @@ -215,7 +215,7 @@ public class TestLensQueryCommands extends LensCliApplicationTest { String handle = qCom.executePreparedQuery(qh, true, "testPrepQuery2"); log.debug("Perpared query handle is " + handle); while (!qCom.getClient().getQueryStatus(handle).finished()) { - Thread.sleep(5000); + Thread.sleep(100); } String status = qCom.getStatus(handle); log.debug("Prepared Query Status is " + status); @@ -225,8 +225,8 @@ public class TestLensQueryCommands extends LensCliApplicationTest { result = qCom.getQueryResults(handle, null, true); log.debug("Prepared Query Result is " + result); assertTrue(result.contains("1\tfirst")); -//Wait for query to purge. Purger runs every second -Thread.sleep(3000); +//Wait for query to purge. Purger runs every 100 millis +Thread.sleep(300); //Fetch again. Should not get resultset result = qCom.getQueryResults(handle, null, true); log.debug("Prepared Query Result is " + result); @@ -335,7 +335,7 @@ public class TestLensQueryCommands extends LensCliApplicationTest { String details = qCom.getDetails(null); assertTrue(details.contains("Driver Query:")); } - Thread.sleep(1000); + Thread.sleep(100); queryStatus = qCom.getClient().getQueryStatus(qh); } @@ -521,7 +521,7 @@ public class TestLensQueryCommands extends LensCliApplicationTest { String query = "cube select id,name from test_dim"; String qh = qCom.executeQuery(query, true, "testQuery"); while (!qCom.getClient().getQueryStatus(qh).finished()) { - Thread.sleep(5000); + Thread.sleep(100); } assertTrue(qCom.getStatus(qh).contains("Status: SUCCESSFUL")); http://git-wip-us.apache.org/repos/asf/lens/blob/d1c58cbc/lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java -- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java b/lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java index e1ce415..1d56757 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java @@ -225,7 +225,7 @@ public class FinishedLensQuery { qctx.setLaunchTime(this.startTime); qctx.setEndTime(getEndTime()); qctx.setStatusSkippingTransitionTe
lens git commit: LENS-1033 : Fix HQLParser to honor double spaces in literals
Repository: lens Updated Branches: refs/heads/master 34223e880 -> 4e822031f LENS-1033 : Fix HQLParser to honor double spaces in literals Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/4e822031 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/4e822031 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/4e822031 Branch: refs/heads/master Commit: 4e822031f4a3d75b45281ec5aadaf8f64cbb7542 Parents: 34223e8 Author: Amareshwari Sriramadasu <amareshw...@apache.org> Authored: Mon May 9 10:08:31 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon May 9 10:08:31 2016 +0530 -- .../org/apache/lens/cube/parse/HQLParser.java | 36 .../lens/cube/parse/TestBaseCubeQueries.java| 36 .../lens/cube/parse/TestBridgeTableQueries.java | 8 +- .../lens/cube/parse/TestCubeRewriter.java | 24 +++--- .../lens/cube/parse/TestExpressionContext.java | 64 +++--- .../apache/lens/cube/parse/TestHQLParser.java | 87 .../cube/parse/join/TestBridgeTableJoinCtx.java | 42 +- .../driver/jdbc/TestColumnarSQLRewriter.java| 30 +++ 8 files changed, 170 insertions(+), 157 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/4e822031/lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java index 0d00188..1f6b66c 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java @@ -372,7 +372,7 @@ public final class HQLParser { || KW_FALSE == rootType || KW_FORMATTED == rootType || KW_EXTENDED == rootType || KW_DEPENDENCY == rootType) { // StringLiterals should not be lower cased. if (StringLiteral == rootType) { -buf.append(' ').append(rootText).append(' '); +buf.append(rootText); } else if (KW_TRUE == rootType) { buf.append(" true "); } else if (KW_FALSE == rootType) { @@ -380,12 +380,9 @@ public final class HQLParser { } else if (Identifier == rootType && TOK_SELEXPR == root.getParent().getType()) { // back quote column alias in all cases. This is required since some alias values can match DB keywords // (example : year as alias) and in such case queries can fail on certain DBs if the alias in not back quoted -buf.append(" as `").append(rootText).append("` "); - } else if (Identifier == rootType && TOK_FUNCTIONSTAR == root.getParent().getType()) { -// count(*) or count(someTab.*): Don't append space after the identifier -buf.append(" ").append(rootText == null ? "" : rootText.toLowerCase()); +buf.append(" as `").append(rootText).append("`"); } else { -buf.append(" ").append(rootText == null ? "" : rootText.toLowerCase()).append(" "); +buf.append(rootText == null ? "" : rootText.toLowerCase()); } } else if (TOK_ALLCOLREF == rootType) { @@ -395,14 +392,14 @@ public final class HQLParser { } buf.append("."); } - buf.append(" * "); + buf.append("*"); } else if (TOK_FUNCTIONSTAR == rootType) { if (root.getChildCount() > 0) { for (int i = 0; i < root.getChildCount(); i++) { toInfixString((ASTNode) root.getChild(i), buf); } } - buf.append("(*) "); + buf.append("(*)"); } else if (UNARY_OPERATORS.contains(rootType)) { if (KW_NOT == rootType) { // Check if this is actually NOT IN @@ -410,7 +407,7 @@ public final class HQLParser { buf.append(" not "); } } else if (TILDE == rootType) { -buf.append(" ~ "); +buf.append(" ~"); } for (int i = 0; i < root.getChildCount(); i++) { @@ -429,7 +426,7 @@ public final class HQLParser { if (MINUS == rootType && root.getChildCount() == 1) { // If minus has only one child, then it's a unary operator. // Add Operator name first -buf.append(' ').append(rootText.toLowerCase()).append(' '); +buf.append(rootText.toLowerCase()); // Operand toInfixString((ASTNode) root.getChild(0), buf); } else { @@ -508,7 +505,7 @@ public final class HQLParser { // Distinct is a different case. String fname = root.getChild(0).getText(); - buf
lens git commit: LENS-1029 : Fix exception handling in lens server snapshotter
Repository: lens Updated Branches: refs/heads/master 4e822031f -> d264c9a44 LENS-1029 : Fix exception handling in lens server snapshotter Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/d264c9a4 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/d264c9a4 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/d264c9a4 Branch: refs/heads/master Commit: d264c9a44b3f0b889e87241a6eb9ec1051f7c6a5 Parents: 4e82203 Author: Puneet Gupta <puneet.k.gu...@gmail.com> Authored: Mon May 9 16:43:42 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon May 9 16:43:42 2016 +0530 -- .../lens/lib/query/AbstractFileFormatter.java | 12 +- .../lens/server/api/LensConfConstants.java | 27 +-- .../org/apache/lens/server/LensServices.java| 237 ++- .../src/main/resources/lensserver-default.xml | 20 +- .../apache/lens/server/TestServerRestart.java | 16 +- src/site/apt/admin/config.apt | 106 - src/site/apt/admin/deployment.apt | 10 +- 7 files changed, 220 insertions(+), 208 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/d264c9a4/lens-query-lib/src/main/java/org/apache/lens/lib/query/AbstractFileFormatter.java -- diff --git a/lens-query-lib/src/main/java/org/apache/lens/lib/query/AbstractFileFormatter.java b/lens-query-lib/src/main/java/org/apache/lens/lib/query/AbstractFileFormatter.java index 8c06621..2cd6b3f 100644 --- a/lens-query-lib/src/main/java/org/apache/lens/lib/query/AbstractFileFormatter.java +++ b/lens-query-lib/src/main/java/org/apache/lens/lib/query/AbstractFileFormatter.java @@ -18,9 +18,7 @@ */ package org.apache.lens.lib.query; -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; +import java.io.*; import org.apache.lens.server.api.driver.LensResultSetMetadata; import org.apache.lens.server.api.query.QueryContext; @@ -97,15 +95,15 @@ public abstract class AbstractFileFormatter extends AbstractOutputFormatter impl public void writeExternal(ObjectOutput out) throws IOException { out.writeUTF(metadata.toJson()); out.writeUTF(finalPath.toString()); -out.writeInt(numRows); -out.writeLong(fileSize); +out.writeObject(numRows); // writeObject and readObject have handling for null objects +out.writeObject(fileSize); } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { metadata = LensResultSetMetadata.fromJson(in.readUTF()); finalPath = new Path(in.readUTF()); -numRows = in.readInt(); -fileSize = in.readLong(); +numRows = (Integer)in.readObject(); +fileSize = (Long)in.readObject(); } } http://git-wip-us.apache.org/repos/asf/lens/blob/d264c9a4/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java -- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java b/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java index 23537cb..7cf6449 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java @@ -141,14 +141,14 @@ public final class LensConfConstants { public static final String DEFAULT_SERVER_BASE_URL = "http://0.0.0.0:/lensapi;; /** - * The Constant SERVER_RESTART_ENABLED. + * The Constant SERVER_STATE_PERSISTENCE_ENABLED. */ - public static final String SERVER_RESTART_ENABLED = SERVER_PFX + "restart.enabled"; + public static final String SERVER_STATE_PERSISTENCE_ENABLED = SERVER_PFX + "state.persistence.enabled"; /** - * The Constant DEFAULT_SERVER_RESTART_ENABLED. + * The Constant DEFAULT_SERVER_STATE_PERSISTENCE_ENABLED. */ - public static final boolean DEFAULT_SERVER_RESTART_ENABLED = true; + public static final boolean DEFAULT_SERVER_STATE_PERSISTENCE_ENABLED = true; /** * The Constant SERVER_STATE_PERSIST_LOCATION. @@ -161,16 +161,6 @@ public final class LensConfConstants { public static final String DEFAULT_SERVER_STATE_PERSIST_LOCATION = "file:///tmp/lensserver"; /** - * The Constant SERVER_RECOVER_ON_RESTART. - */ - public static final String SERVER_RECOVER_ON_RESTART = SERVER_PFX + "recover.onrestart"; - - /** - * The Constant DEFAULT_SERVER_RECOVER_ON_RESTART. - */ - public static final boolean DEFAULT_SERVER_RECOVER_ON_RESTART = true; - - /** * The Constant SESSION_TIMEOUT_SECONDS. */ public static final String SESS
lens git commit: LENS-1032 : Add option to kill the query on timeout api upon timeout
Repository: lens Updated Branches: refs/heads/master 382881940 -> 389daac9a LENS-1032 : Add option to kill the query on timeout api upon timeout Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/389daac9 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/389daac9 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/389daac9 Branch: refs/heads/master Commit: 389daac9a66b0cb69ac729a56b39b3aa903ad36a Parents: 3828819 Author: Puneet Gupta <puneet.k.gu...@gmail.com> Authored: Thu May 12 10:08:11 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Thu May 12 10:08:11 2016 +0530 -- .../org/apache/lens/api/query/QueryStatus.java | 8 ++ .../src/main/resources/lens-client-default.xml | 7 ++ .../org/apache/lens/driver/hive/HiveDriver.java | 3 + .../lens/server/api/LensConfConstants.java | 11 ++ .../server/query/QueryExecutionServiceImpl.java | 120 +++ .../lens/server/query/QueryServiceResource.java | 6 +- .../src/main/resources/lenssession-default.xml | 8 ++ .../lens/server/query/TestQueryService.java | 36 +- src/site/apt/admin/session-config.apt | 58 - 9 files changed, 201 insertions(+), 56 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/389daac9/lens-api/src/main/java/org/apache/lens/api/query/QueryStatus.java -- diff --git a/lens-api/src/main/java/org/apache/lens/api/query/QueryStatus.java b/lens-api/src/main/java/org/apache/lens/api/query/QueryStatus.java index 67d1e79..daedbf9 100644 --- a/lens-api/src/main/java/org/apache/lens/api/query/QueryStatus.java +++ b/lens-api/src/main/java/org/apache/lens/api/query/QueryStatus.java @@ -205,6 +205,14 @@ public class QueryStatus extends ToYAMLString implements Serializable { return status.equals(Status.FAILED); } + public boolean cancelled() { +return status.equals(Status.CANCELED); + } + + public boolean executed() { +return status.equals(Status.EXECUTED); + } + /** * Checks if is valid transition. http://git-wip-us.apache.org/repos/asf/lens/blob/389daac9/lens-client/src/main/resources/lens-client-default.xml -- diff --git a/lens-client/src/main/resources/lens-client-default.xml b/lens-client/src/main/resources/lens-client-default.xml index 96506ac..132e1b1 100644 --- a/lens-client/src/main/resources/lens-client-default.xml +++ b/lens-client/src/main/resources/lens-client-default.xml @@ -75,4 +75,11 @@ is used to execute a query. The default value is 10 seconds. + +lens.query.cancel.on.timeout +false +Specifies whether to attempt cancellation of a query whose execution takes longer than the timeout + value specified while submitting the query for execution. + + http://git-wip-us.apache.org/repos/asf/lens/blob/389daac9/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java -- diff --git a/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java b/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java index 1463cc2..b85a66f 100644 --- a/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java +++ b/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java @@ -1048,6 +1048,9 @@ public class HiveDriver extends AbstractLensDriver { this.timeoutMillis = timeoutMillis; this.listener = listener; this.pollInterval = timeoutMillis / 10; + if (pollInterval < 5000) { +pollInterval = 5000; //minimum poll interval is 5 secs + } } /* http://git-wip-us.apache.org/repos/asf/lens/blob/389daac9/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java -- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java b/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java index 7cf6449..a6df138 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java @@ -1070,4 +1070,15 @@ public final class LensConfConstants { * Default value of DEFAULT_STATUS_UPDATE_EXPONENTIAL_WAIT_FACTOR is 3 millis (30 seconds) */ public static final long DEFAULT_STATUS_UPDATE_EXPONENTIAL_WAIT_FACTOR = 3; + + /** + * Specifies whether to attempt cancellation of a query whose execution takes longer than the timeout value + * specified while su
lens git commit: LENS-383 :Add connection and read timeouts on rest api calls in lens client
Repository: lens Updated Branches: refs/heads/master 9b7541bcb -> dce5a812d LENS-383 :Add connection and read timeouts on rest api calls in lens client Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/dce5a812 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/dce5a812 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/dce5a812 Branch: refs/heads/master Commit: dce5a812ddef01800bd83e229d6ccbad4ddee18a Parents: 9b7541b Author: Puneet Gupta <puneet.k.gu...@gmail.com> Authored: Tue May 3 10:06:28 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Tue May 3 10:06:28 2016 +0530 -- .../apache/lens/client/LensClientConfig.java| 8 ++ .../org/apache/lens/client/LensConnection.java | 13 ++- .../org/apache/lens/client/LensStatement.java | 41 +++-- .../src/main/resources/lens-client-default.xml | 12 +++ .../org/apache/lens/client/TestLensClient.java | 95 +--- .../server/MockQueryExecutionServiceImpl.java | 74 +++ src/site/apt/admin/config.apt | 4 +- src/site/apt/user/client-config.apt | 16 ++-- 8 files changed, 239 insertions(+), 24 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/dce5a812/lens-client/src/main/java/org/apache/lens/client/LensClientConfig.java -- diff --git a/lens-client/src/main/java/org/apache/lens/client/LensClientConfig.java b/lens-client/src/main/java/org/apache/lens/client/LensClientConfig.java index 6a35a5e..b703e13 100644 --- a/lens-client/src/main/java/org/apache/lens/client/LensClientConfig.java +++ b/lens-client/src/main/java/org/apache/lens/client/LensClientConfig.java @@ -82,6 +82,14 @@ public class LensClientConfig extends Configuration { public static final String WS_FILTER_IMPL_SFX = ".ws.filter.impl"; + public static final String READ_TIMEOUT_MILLIS = CLIENT_PFX + "read.timeout.millis"; + + public static final int DEFAULT_READ_TIMEOUT_MILLIS = 30; //5 mins + + public static final String CONNECTION_TIMEOUT_MILLIS = CLIENT_PFX + "connection.timeout.millis"; + + public static final int DEFAULT_CONNECTION_TIMEOUT_MILLIS = 6; //60 secs + /** * Get the username from config * http://git-wip-us.apache.org/repos/asf/lens/blob/dce5a812/lens-client/src/main/java/org/apache/lens/client/LensConnection.java -- diff --git a/lens-client/src/main/java/org/apache/lens/client/LensConnection.java b/lens-client/src/main/java/org/apache/lens/client/LensConnection.java index 0c2557c..4951866 100644 --- a/lens-client/src/main/java/org/apache/lens/client/LensConnection.java +++ b/lens-client/src/main/java/org/apache/lens/client/LensConnection.java @@ -18,6 +18,8 @@ */ package org.apache.lens.client; +import static org.apache.lens.client.LensClientConfig.*; + import java.net.ConnectException; import java.util.HashMap; import java.util.Iterator; @@ -39,6 +41,7 @@ import org.apache.lens.api.StringList; import org.apache.lens.api.util.MoxyJsonConfigurationContextResolver; import org.apache.lens.client.exceptions.LensClientServerConnectionException; +import org.glassfish.jersey.client.ClientProperties; import org.glassfish.jersey.media.multipart.FormDataBodyPart; import org.glassfish.jersey.media.multipart.FormDataContentDisposition; import org.glassfish.jersey.media.multipart.FormDataMultiPart; @@ -120,7 +123,15 @@ public class LensConnection { while (itr.hasNext()) { cb.register(itr.next()); } -return cb.build(); +Client client = cb.build(); + +//Set Timeouts +LensClientConfig config = params.getConf(); +client.property(ClientProperties.CONNECT_TIMEOUT, config.getInt(CONNECTION_TIMEOUT_MILLIS, + DEFAULT_CONNECTION_TIMEOUT_MILLIS)); +client.property(ClientProperties.READ_TIMEOUT, config.getInt(READ_TIMEOUT_MILLIS, DEFAULT_READ_TIMEOUT_MILLIS)); + +return client; } private WebTarget getSessionWebTarget() { http://git-wip-us.apache.org/repos/asf/lens/blob/dce5a812/lens-client/src/main/java/org/apache/lens/client/LensStatement.java -- diff --git a/lens-client/src/main/java/org/apache/lens/client/LensStatement.java b/lens-client/src/main/java/org/apache/lens/client/LensStatement.java index f06bcd1..3cae717 100644 --- a/lens-client/src/main/java/org/apache/lens/client/LensStatement.java +++ b/lens-client/src/main/java/org/apache/lens/client/LensStatement.java @@ -18,6 +18,7 @@ */ package org.apache.lens.client; +import java.net.SocketTimeoutException; import java.util.List; import javax.ws.rs.clie
lens git commit: LENS-1156 : Fix TestUnionQueries.testDimAttrExpressionQuery test failure
Repository: lens Updated Branches: refs/heads/master e4d8b88f9 -> 3f03d29ba LENS-1156 : Fix TestUnionQueries.testDimAttrExpressionQuery test failure Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/3f03d29b Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/3f03d29b Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/3f03d29b Branch: refs/heads/master Commit: 3f03d29ba47755913e06cd3a397119c679b2f65a Parents: e4d8b88 Author: Amareshwari Sriramadasu <amareshw...@apache.org> Authored: Fri Jul 29 10:11:32 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Fri Jul 29 10:11:32 2016 +0530 -- .../lens/cube/parse/TestUnionQueries.java | 176 +++ 1 file changed, 100 insertions(+), 76 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/3f03d29b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestUnionQueries.java -- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestUnionQueries.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestUnionQueries.java index f5657e5..d5bc81c 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestUnionQueries.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestUnionQueries.java @@ -218,96 +218,120 @@ public class TestUnionQueries extends TestQueryRewrite { conf.set(getValidUpdatePeriodsKey("testfact", "C1"), "DAILY,HOURLY"); conf.set(getValidUpdatePeriodsKey("testfact2", "C1"), "YEARLY"); conf.set(getValidUpdatePeriodsKey("testfact", "C2"), "MONTHLY,DAILY"); -ArrayList storages = Lists.newArrayList("c1_testfact", "c2_testfact"); -getStorageToUpdatePeriodMap().put("c1_testfact", Lists.newArrayList(HOURLY, DAILY)); -getStorageToUpdatePeriodMap().put("c2_testfact", Lists.newArrayList(MONTHLY)); -StoragePartitionProvider provider = new StoragePartitionProvider() { - @Override - public Map<String, String> providePartitionsForStorage(String storage) { -return getWhereForMonthlyDailyAndHourly2monthsUnionQuery(storage); - } -}; + String hqlQuery = rewrite("select asciicity as `City Name`, cityAndState as citystate, isIndia as isIndia," + " msr8, msr7 as `Third measure` " + "from testCube where asciicity = 'c' and cityname = 'a' and zipcode = 'b' and " + TWO_MONTHS_RANGE_UPTO_HOURS, conf); -String expected = getExpectedUnionQuery(TEST_CUBE_NAME, storages, provider, - "SELECT testcube.alias0 as `City Name`, testcube.alias1 as citystate, testcube.alias2 as isIndia, " -+ "sum(testcube.alias3) + max(testcube.alias4), " -+ "case when sum(testcube.alias3) = 0 then 0 else sum(testcube.alias5)/sum(testcube.alias3) end " -+ "as `Third Measure`", - null, " group by testcube.alias0, testcube.alias1, testcube.alias2", - "select ascii(cubecity.name) as `alias0`, concat(cubecity.name, \":\", cubestate.name) as alias1," -+ "cubecity.name == 'DELHI' OR cubestate.name == 'KARNATAKA' OR cubestate.name == 'MAHARASHTRA' as alias2," -+ "sum(testcube.msr2) as `alias3`, max(testcube.msr3) as `alias4`, " -+ "sum(case when testcube.cityid = 'x' then testcube.msr21 else testcube.msr22 end) as `alias5`", " join " -+ getDbName() + "c1_statetable cubestate on testcube.stateid = cubestate.id and (cubestate.dt = 'latest') join" -+ getDbName() + "c1_citytable cubecity on testcube.cityid = cubecity.id and (cubecity.dt = 'latest')", - "ascii(cubecity.name) = 'c' and cubecity.name = 'a' and testcube.zipcode = 'b'", - " group by ascii(cubecity.name)), concat(cubecity.name, \":\", cubestate.name)," -+ "cubecity.name == 'DELHI' OR cubestate.name == 'KARNATAKA' OR cubestate.name == 'MAHARASHTRA'"); -compareQueries(hqlQuery, expected); +String joinExpr1 = " join " + + getDbName() + "c1_statetable cubestate on testcube.stateid = cubestate.id and (cubestate.dt = 'latest') join" + + getDbName() + "c1_citytable cubecity on testcube.cityid = cubecity.id and (cubecity.dt = 'latest')"; +String joinExpr2 = " join " + + getDbName() + "c1_citytable cubecity on testcube.cityid = cubecity.id and (cubecity.dt = 'latest') join" + + getDbName() + "c1_statetable cubestate on testcube.stateid = cubestat
lens git commit: LENS-1254 : Fix TestLensQueryCommands.showPersistentResultSet failure
Repository: lens Updated Branches: refs/heads/master 90c710018 -> ca372c1dc LENS-1254 : Fix TestLensQueryCommands.showPersistentResultSet failure Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/ca372c1d Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/ca372c1d Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/ca372c1d Branch: refs/heads/master Commit: ca372c1dc28c79677d0f417370bf09fcf1a329e8 Parents: 90c7100 Author: Puneet Gupta <puneet.k.gu...@gmail.com> Authored: Thu Aug 4 10:42:11 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Thu Aug 4 10:42:11 2016 +0530 -- .../src/test/java/org/apache/lens/cli/TestLensQueryCommands.java| 1 + 1 file changed, 1 insertion(+) -- http://git-wip-us.apache.org/repos/asf/lens/blob/ca372c1d/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java -- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java index ae30e9f..e1b19de 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java @@ -461,6 +461,7 @@ public class TestLensQueryCommands extends LensCliApplicationTest { public void showPersistentResultSet(LensQueryCommands qCom) throws Exception { System.out.println("@@PERSISTENT_RESULT_TEST-"); qCom.getClient().setConnectionParam("lens.query.enable.persistent.resultset", "true"); + qCom.getClient().setConnectionParam("lens.query.prefetch.inmemory.resultset", "false"); String query = "cube select id,name from test_dim"; try { String result = qCom.executeQuery(query, false, "testQuery3");
lens git commit: LENS-1184 : Add REST API for the scheduler
Repository: lens Updated Branches: refs/heads/master 4bcb7aa96 -> 265c4667a LENS-1184 : Add REST API for the scheduler Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/265c4667 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/265c4667 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/265c4667 Branch: refs/heads/master Commit: 265c4667af0dd7850892d0180c9ee72bb40b3e83 Parents: 4bcb7aa Author: Ajay Yadava <ajayyad...@apache.org> Authored: Tue Jul 5 10:16:07 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Tue Jul 5 10:16:07 2016 +0530 -- .../server/api/scheduler/SchedulerService.java | 25 ++- .../lens/server/scheduler/LensScheduler.java| 48 + .../lens/server/scheduler/ScheduleResource.java | 181 ++- .../server/scheduler/SchedulerServiceImpl.java | 73 ++-- 4 files changed, 288 insertions(+), 39 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/265c4667/lens-server-api/src/main/java/org/apache/lens/server/api/scheduler/SchedulerService.java -- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/scheduler/SchedulerService.java b/lens-server-api/src/main/java/org/apache/lens/server/api/scheduler/SchedulerService.java index 700a255..d0af876 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/scheduler/SchedulerService.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/scheduler/SchedulerService.java @@ -19,18 +19,22 @@ package org.apache.lens.server.api.scheduler; import java.util.Collection; -import java.util.Date; import java.util.List; import org.apache.lens.api.LensSessionHandle; import org.apache.lens.api.scheduler.*; +import org.apache.lens.server.api.LensService; +import org.apache.lens.server.api.SessionValidator; import org.apache.lens.server.api.error.LensException; /** * Scheduler interface. */ -public interface SchedulerService { +public interface SchedulerService extends LensService, SessionValidator { + + /** The constant NAME */ + String NAME = "scheduler"; /** * Submit a job. @@ -104,11 +108,9 @@ public interface SchedulerService { * * @param sessionHandle handle for the current session. * @param jobHandle handle for the job - * @param expiryTimetime after which the job shouldn't execute. * @throws LensException the lens exception */ - void expireJob(LensSessionHandle sessionHandle, SchedulerJobHandle jobHandle, - Date expiryTime) throws LensException; + void expireJob(LensSessionHandle sessionHandle, SchedulerJobHandle jobHandle) throws LensException; /** @@ -131,12 +133,10 @@ public interface SchedulerService { * * @param sessionHandle handle for the session. * @param jobHandle handle for the job - * @param effectiveTime time from which to resume the instances. * @return true if the job was resumed successfully, false otherwise. * @throws LensException the lens exception */ - boolean resumeJob(LensSessionHandle sessionHandle, SchedulerJobHandle jobHandle, -Date effectiveTime) throws LensException; + boolean resumeJob(LensSessionHandle sessionHandle, SchedulerJobHandle jobHandle) throws LensException; /** * Delete a job. @@ -155,16 +155,13 @@ public interface SchedulerService { * if null no entries will be removed from result * @param user filter for user who submitted the job, if specified only jobs submitted by the given user * will be returned, if not specified no entries will be removed from result on basis of userName - * @param jobName filter for jobName, if specified only the jobs with name same as given name will be considered - * , else no jobs will be filtered out on the basis of name. * @param startTime if specified only instances with scheduleTime after this time will be considered. * @param endTime if specified only instances with scheduleTime before this time will be considered. * @return A collection of stats per job * @throws LensException */ Collection getAllJobStats(LensSessionHandle sessionHandle, - String state, String user, - String jobName, long startTime, long endTime) throws LensException; + String state, String user, long startTime, long endTime) throws LensException; /** * Returns stats for a job. @@ -187,10 +184,10 @@ public interface SchedulerService { * @param sessionHandle handle for the session. * @p
lens git commit: LENS-991 : Remove shutdown hook getting added for each command
Repository: lens Updated Branches: refs/heads/master 265c4667a -> 42c4dfcb6 LENS-991 : Remove shutdown hook getting added for each command Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/42c4dfcb Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/42c4dfcb Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/42c4dfcb Branch: refs/heads/master Commit: 42c4dfcb64f59c341ad244b96872a921ea9043db Parents: 265c466 Author: Raju Bairishetti <r...@apache.org> Authored: Tue Jul 5 11:13:49 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Tue Jul 5 11:13:49 2016 +0530 -- .../lens/cli/commands/BaseLensCommand.java | 12 +- .../lens/cli/TestLensConnectionCliCommands.java | 146 +-- .../apache/lens/cli/TestLensCubeCommands.java | 6 +- .../lens/cli/TestLensDatabaseCommands.java | 5 +- .../lens/cli/TestLensNativeTableCommands.java | 4 +- .../apache/lens/cli/TestLensQueryCommands.java | 5 - .../org/apache/lens/client/TestLensClient.java | 56 +++ 7 files changed, 107 insertions(+), 127 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/42c4dfcb/lens-cli/src/main/java/org/apache/lens/cli/commands/BaseLensCommand.java -- diff --git a/lens-cli/src/main/java/org/apache/lens/cli/commands/BaseLensCommand.java b/lens-cli/src/main/java/org/apache/lens/cli/commands/BaseLensCommand.java index 9eb73b3..479746a 100644 --- a/lens-cli/src/main/java/org/apache/lens/cli/commands/BaseLensCommand.java +++ b/lens-cli/src/main/java/org/apache/lens/cli/commands/BaseLensCommand.java @@ -57,8 +57,7 @@ public class BaseLensCommand implements ExecutionProcessor { protected DefaultPrettyPrinter pp; /** The is connection active. */ - protected boolean isConnectionActive; - + protected static boolean isConnectionActive; public static final String DATE_FMT = "-MM-dd'T'HH:mm:ss:SSS"; private LensClient lensClient = null; @@ -75,7 +74,7 @@ public class BaseLensCommand implements ExecutionProcessor { return DATE_PARSER.get().format(dt); } - private void registerShutDownHook() { + static { Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { closeClientConnection(); @@ -86,10 +85,10 @@ public class BaseLensCommand implements ExecutionProcessor { /** * Close client connection. */ - protected synchronized void closeClientConnection() { + protected static synchronized void closeClientConnection() { if (isConnectionActive) { log.debug("Request for stopping lens cli received"); - lensClient.closeConnection(); + getClientWrapper().getClient().closeConnection(); isConnectionActive = false; } } @@ -98,7 +97,6 @@ public class BaseLensCommand implements ExecutionProcessor { * Instantiates a new base lens command. */ public BaseLensCommand() { -registerShutDownHook(); mapper = new ObjectMapper(); mapper.setSerializationInclusion(Inclusion.NON_NULL); mapper.setSerializationInclusion(Inclusion.NON_DEFAULT); @@ -120,13 +118,13 @@ public class BaseLensCommand implements ExecutionProcessor { } public void setClient(LensClient client) { -isConnectionActive = true; lensClient = client; } public LensClient getClient() { if (lensClient == null) { setClient(getClientWrapper().getClient()); + isConnectionActive = true; } return lensClient; } http://git-wip-us.apache.org/repos/asf/lens/blob/42c4dfcb/lens-cli/src/test/java/org/apache/lens/cli/TestLensConnectionCliCommands.java -- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensConnectionCliCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensConnectionCliCommands.java index d1ec94e..76d387d 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensConnectionCliCommands.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensConnectionCliCommands.java @@ -63,19 +63,19 @@ public class TestLensConnectionCliCommands extends LensCliApplicationTest { */ @Test public void testConnectionCommand() { -LensClient client = new LensClient(); -LensConnectionCommands commands = new LensConnectionCommands(); -commands.setClient(client); -String key = "connectiontest1"; -String value = "connectiontest1val"; -String keyvalList = commands.showParameters(); - -Assert.assertFalse(keyvalList.contains("connectiontest1")); - -commands.setParam(key + "=" + value); -String val = commands.getParam(key); -Assert.assertEquals(val,
[2/2] lens git commit: LENS-1386 : Add support for separate tables for update periods in one storage
LENS-1386 : Add support for separate tables for update periods in one storage Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/f0dadd79 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/f0dadd79 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/f0dadd79 Branch: refs/heads/master Commit: f0dadd79bb626fe6f8bbf21569e3062aeb9be070 Parents: 0cd22b1 Author: Lavkesh Lahngir <lavk...@linux.com> Authored: Mon Feb 20 15:08:40 2017 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Feb 20 15:08:40 2017 +0530 -- lens-api/src/main/resources/cube-0.1.xsd| 28 +- .../lens/cube/metadata/CubeFactTable.java | 68 +++- .../lens/cube/metadata/CubeMetastoreClient.java | 339 +++ .../lens/cube/metadata/MetastoreUtil.java | 6 + .../org/apache/lens/cube/metadata/Storage.java | 30 +- .../cube/metadata/TestCubeMetastoreClient.java | 151 - .../metastore/CubeMetastoreServiceImpl.java | 182 ++ .../apache/lens/server/metastore/JAXBUtils.java | 66 +++- .../server/metastore/TestMetastoreService.java | 186 +- 9 files changed, 811 insertions(+), 245 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/f0dadd79/lens-api/src/main/resources/cube-0.1.xsd -- diff --git a/lens-api/src/main/resources/cube-0.1.xsd b/lens-api/src/main/resources/cube-0.1.xsd index f438f48..431d68b 100644 --- a/lens-api/src/main/resources/cube-0.1.xsd +++ b/lens-api/src/main/resources/cube-0.1.xsd @@ -681,8 +681,27 @@ - + + +A list of update_period which contains either update period table descriptor or list of update_peroid enum. + + + + + + + + + + +An update period descriptor keeps an enum of update period and a storage table descriptor. + + + + + @@ -1001,13 +1020,14 @@ -Storage and storage table description and update periods +Storage and storage table description and update periods. table_desc is invalid when update_periods has a list +of update_period_table_descriptor instead of a list of enums. - + - + http://git-wip-us.apache.org/repos/asf/lens/blob/f0dadd79/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeFactTable.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeFactTable.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeFactTable.java index adb6c92..896a7a1 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeFactTable.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeFactTable.java @@ -29,10 +29,14 @@ import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.ql.metadata.Table; import com.google.common.collect.Lists; +import lombok.Getter; import lombok.extern.slf4j.Slf4j; @Slf4j public class CubeFactTable extends AbstractCubeTable { + @Getter + // Map<StorageName, Map<update_period, storage_table_prefix>> + private final Map<String, Map<UpdatePeriod, String>> storagePrefixUpdatePeriodMap; private String cubeName; private final Map<String, Set> storageUpdatePeriods; @@ -40,8 +44,10 @@ public class CubeFactTable extends AbstractCubeTable { super(hiveTable); this.storageUpdatePeriods = getUpdatePeriods(getName(), getProperties()); this.cubeName = getCubeName(getName(), getProperties()); +this.storagePrefixUpdatePeriodMap = getUpdatePeriodMap(getName(), getProperties()); } + public CubeFactTable(String cubeName, String factName, List columns, Map<String, Set> storageUpdatePeriods) { this(cubeName, factName, columns, storageUpdatePeriods, 0L, new HashMap<String, String>()); @@ -54,9 +60,18 @@ public class CubeFactTable extends AbstractCubeTable { public CubeFactTable(String cubeName, String factName, List columns, Map<String, Set> storageUpdatePeriods, double weight, Map<String, String> properties) { +this(cubeName, factName, columns, storageUpdatePeriods, weight, properties, + new HashMap<String, Map<UpdatePeriod, String>>()); + + } + + public CubeFactTable(String cubeName, String factName, List columns, +Map<String, Set> storageUpdatePeriods, double weight, Map<String, String> properties, +Map<String, Map<UpdatePeriod, String>> storagePrefixUpdatePeriodMap) { super(factName, columns, properties, weight); this.cubeName = c
lens git commit: LENS-1278 : Fix too many instances of UDFClassLoader
Repository: lens Updated Branches: refs/heads/master 66bd58e4c -> 210e31fc0 LENS-1278 : Fix too many instances of UDFClassLoader Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/210e31fc Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/210e31fc Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/210e31fc Branch: refs/heads/master Commit: 210e31fc076a884b664dbbb87f8ab09fb481dc98 Parents: 66bd58e Author: Amareshwari Sriramadasu <amareshw...@apache.org> Authored: Fri Aug 19 12:37:02 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Fri Aug 19 12:37:02 2016 +0530 -- .../java/org/apache/lens/server/session/LensSessionImpl.java| 4 .../java/org/apache/lens/server/session/SessionClassLoader.java | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/210e31fc/lens-server/src/main/java/org/apache/lens/server/session/LensSessionImpl.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/session/LensSessionImpl.java b/lens-server/src/main/java/org/apache/lens/server/session/LensSessionImpl.java index 3003ab7..a6013e7 100644 --- a/lens-server/src/main/java/org/apache/lens/server/session/LensSessionImpl.java +++ b/lens-server/src/main/java/org/apache/lens/server/session/LensSessionImpl.java @@ -221,6 +221,8 @@ public class LensSessionImpl extends HiveSessionImpl implements AutoCloseable { } sessionDbClassLoaders.clear(); } +// reset classloader in close + Thread.currentThread().setContextClassLoader(LensSessionImpl.class.getClassLoader()); } public CubeMetastoreClient getCubeMetastoreClient() throws LensException { @@ -272,6 +274,8 @@ public class LensSessionImpl extends HiveSessionImpl implements AutoCloseable { setActive(); if (acquireCount.decrementAndGet() == 0) { super.release(userAccess); + // reset classloader in release + Thread.currentThread().setContextClassLoader(LensSessionImpl.class.getClassLoader()); } } http://git-wip-us.apache.org/repos/asf/lens/blob/210e31fc/lens-server/src/main/java/org/apache/lens/server/session/SessionClassLoader.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/session/SessionClassLoader.java b/lens-server/src/main/java/org/apache/lens/server/session/SessionClassLoader.java index f5e2068..0230db6 100644 --- a/lens-server/src/main/java/org/apache/lens/server/session/SessionClassLoader.java +++ b/lens-server/src/main/java/org/apache/lens/server/session/SessionClassLoader.java @@ -20,7 +20,8 @@ package org.apache.lens.server.session; import java.io.IOException; import java.net.URL; -import java.net.URLClassLoader; + +import org.apache.hadoop.hive.ql.exec.UDFClassLoader; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -29,7 +30,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @EqualsAndHashCode(callSuper = false) -public class SessionClassLoader extends URLClassLoader { +public class SessionClassLoader extends UDFClassLoader { @Getter @Setter private boolean closed;
lens git commit: LENS-1274 : Saved query table create failure shouldn't stop lens server from starting
Repository: lens Updated Branches: refs/heads/master 603cd0fd0 -> 66bd58e4c LENS-1274 : Saved query table create failure shouldn't stop lens server from starting Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/66bd58e4 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/66bd58e4 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/66bd58e4 Branch: refs/heads/master Commit: 66bd58e4c4354e88cb6af9dcfcb219fdaf9fdf2a Parents: 603cd0f Author: Rajat Khandelwal <pro...@apache.org> Authored: Fri Aug 19 09:52:35 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Fri Aug 19 09:52:35 2016 +0530 -- .../org/apache/lens/server/query/save/SavedQueryDao.java | 10 ++ 1 file changed, 6 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/66bd58e4/lens-server/src/main/java/org/apache/lens/server/query/save/SavedQueryDao.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/query/save/SavedQueryDao.java b/lens-server/src/main/java/org/apache/lens/server/query/save/SavedQueryDao.java index 8762aff..4f072e2 100644 --- a/lens-server/src/main/java/org/apache/lens/server/query/save/SavedQueryDao.java +++ b/lens-server/src/main/java/org/apache/lens/server/query/save/SavedQueryDao.java @@ -45,7 +45,9 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.extern.slf4j.Slf4j; +@Slf4j public class SavedQueryDao { private static final ObjectMapper MAPPER = new ObjectMapper(); @@ -65,12 +67,12 @@ public class SavedQueryDao { SavedQueryDao(String dialectClass, QueryRunner runner) throws LensException { try { - this.runner = runner; this.dialect = (Dialect) Class.forName(dialectClass).newInstance(); - createSavedQueryTableIfNotExists(); -} catch (Exception e) { +} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { throw new LensException("Error initializing saved query dao", e); } +this.runner = runner; +createSavedQueryTableIfNotExists(); } /** @@ -82,7 +84,7 @@ public class SavedQueryDao { try { runner.update(dialect.getCreateTableSyntax()); } catch (SQLException e) { - throw new LensException("Cannot create saved query table!", e); + log.warn("Unable to create saved query table."); } }
[1/2] lens git commit: LENS-1241 : Fix tests failures with setup and teardown issues
Repository: lens Updated Branches: refs/heads/current-release-line 35aba09ab -> 15cf0b577 LENS-1241 : Fix tests failures with setup and teardown issues Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/8fcc1a12 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/8fcc1a12 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/8fcc1a12 Branch: refs/heads/current-release-line Commit: 8fcc1a12b652c667fb153bb0e95e4a8de4f8638a Parents: 35aba09 Author: Sushil Mohanty <sushilmoha...@apache.org> Authored: Mon Aug 22 17:20:25 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Aug 22 17:28:57 2016 +0530 -- .../lens/server/metrics/MetricsServiceImpl.java | 6 -- .../org/apache/lens/server/TestServerMode.java | 20 +++- .../server/healthcheck/TestHealthChecks.java| 4 +--- .../server/metastore/TestMetastoreService.java | 11 +-- .../metrics/TestResourceMethodMetrics.java | 15 ++- .../lens/server/query/TestEventService.java | 4 ++-- .../server/query/TestQueryEndEmailNotifier.java | 10 +- .../server/query/TestQueryResultPurger.java | 8 +++- .../lens/server/query/TestQueryService.java | 10 +- .../lens/server/query/TestResultFormatting.java | 16 +++- .../query/save/TestSavedQueryService.java | 14 ++ .../TestUserQueryToCubeQueryRewriter.java | 4 ++-- .../lens/server/scheduler/AlarmServiceTest.java | 4 ++-- .../server/session/TestSessionResource.java | 9 +++-- .../lens/server/user/TestUserConfigLoader.java | 8 +++- 15 files changed, 93 insertions(+), 50 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/8fcc1a12/lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java b/lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java index e09180f..b88c717 100644 --- a/lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java +++ b/lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java @@ -585,12 +585,6 @@ public class MetricsServiceImpl extends AbstractService implements MetricsServic isHealthy = false; } -// Also unhealthy if 30% of queries have failed. -if (getTotalFailedQueries()/(float)getTotalAcceptedQueries() > 0.3) { - details.append("30% of queries have failed."); - isHealthy = false; -} - if (!isHealthy) { log.error(details.toString()); } http://git-wip-us.apache.org/repos/asf/lens/blob/8fcc1a12/lens-server/src/test/java/org/apache/lens/server/TestServerMode.java -- diff --git a/lens-server/src/test/java/org/apache/lens/server/TestServerMode.java b/lens-server/src/test/java/org/apache/lens/server/TestServerMode.java index caf968a..bc3955d 100644 --- a/lens-server/src/test/java/org/apache/lens/server/TestServerMode.java +++ b/lens-server/src/test/java/org/apache/lens/server/TestServerMode.java @@ -43,9 +43,7 @@ import org.glassfish.jersey.media.multipart.FormDataBodyPart; import org.glassfish.jersey.media.multipart.FormDataContentDisposition; import org.glassfish.jersey.media.multipart.FormDataMultiPart; import org.testng.Assert; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; +import org.testng.annotations.*; /** * The Class TestServerMode. @@ -61,8 +59,12 @@ public class TestServerMode extends LensAllApplicationJerseyTest { @BeforeTest public void setUp() throws Exception { super.setUp(); -LensServerTestUtil.createTable("test_table", target(), RestAPITestUtil.openFooBarSession(target(), defaultMT), - defaultMT); + } + @BeforeClass + public void create() throws Exception { +LensSessionHandle fooBarSessonHandle = RestAPITestUtil.openFooBarSession(target(), defaultMT); +LensServerTestUtil.createTable("test_table", target(), fooBarSessonHandle, defaultMT); +RestAPITestUtil.closeSession(target(), fooBarSessonHandle, defaultMT); } /* @@ -75,6 +77,14 @@ public class TestServerMode extends LensAllApplicationJerseyTest { super.tearDown(); } + @AfterClass + public void drop() throws Exception { +LensSessionHandle fooBarSessonHandle = RestAPITestUtil.openFooBarSession(target(), defaultMT); +LensServerTestUtil.dropTable("test_table", target(), fooBarSessonHandle, +defaultMT); +RestAPITestUtil.closeSession(target(), foo
lens git commit: LENS-1269 : Time range fallback in lens examples should not give empty results
Repository: lens Updated Branches: refs/heads/current-release-line 15cf0b577 -> 2748cd9c4 LENS-1269 : Time range fallback in lens examples should not give empty results Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/2748cd9c Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/2748cd9c Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/2748cd9c Branch: refs/heads/current-release-line Commit: 2748cd9c4fdf23b57c3ebd70c75d8311a6538cde Parents: 15cf0b5 Author: Rajat Khandelwal <pro...@apache.org> Authored: Mon Aug 22 17:35:10 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Aug 22 17:35:53 2016 +0530 -- lens-examples/src/main/resources/sales-aggr-fact2-local3.data | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/2748cd9c/lens-examples/src/main/resources/sales-aggr-fact2-local3.data -- diff --git a/lens-examples/src/main/resources/sales-aggr-fact2-local3.data b/lens-examples/src/main/resources/sales-aggr-fact2-local3.data index a0cb704..407b097 100644 --- a/lens-examples/src/main/resources/sales-aggr-fact2-local3.data +++ b/lens-examples/src/main/resources/sales-aggr-fact2-local3.data @@ -1,2 +1,2 @@ -2015-04-13 00:00:00,2015-04-13 04:00:00,1,1,1,1,1,1,5,0 -2015-04-13 00:00:00,2015-04-13 04:00:00,2,1,2,2,2,1,8,2 \ No newline at end of file +2015-04-13 03:00:00,2015-04-13 04:00:00,1,1,1,1,1,1,5,0 +2015-04-13 03:00:00,2015-04-13 04:00:00,2,1,2,2,2,1,8,2 \ No newline at end of file
lens git commit: LENS-1281 : Fix license issue with quartz dependency
Repository: lens Updated Branches: refs/heads/master 443ec5f5f -> c6e3abc63 LENS-1281 : Fix license issue with quartz dependency Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/c6e3abc6 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/c6e3abc6 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/c6e3abc6 Branch: refs/heads/master Commit: c6e3abc63be51ff9953b6d0b5222745264ede49e Parents: 443ec5f Author: Ajay Yadava <ajayyad...@apache.org> Authored: Mon Aug 22 17:21:50 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Aug 22 17:21:50 2016 +0530 -- pom.xml | 8 1 file changed, 8 insertions(+) -- http://git-wip-us.apache.org/repos/asf/lens/blob/c6e3abc6/pom.xml -- diff --git a/pom.xml b/pom.xml index 7c03862..871d1ab 100644 --- a/pom.xml +++ b/pom.xml @@ -815,6 +815,14 @@ org.quartz-scheduler quartz ${quartz.version} + + + +c3p0 +c3p0 + + org.projectlombok
lens git commit: LENS-1269 : Time range fallback in lens examples should not give empty results
Repository: lens Updated Branches: refs/heads/master c6e3abc63 -> 99f8e344e LENS-1269 : Time range fallback in lens examples should not give empty results Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/99f8e344 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/99f8e344 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/99f8e344 Branch: refs/heads/master Commit: 99f8e344ee35a43c302d527d6b4579d9de091f40 Parents: c6e3abc Author: Rajat Khandelwal <pro...@apache.org> Authored: Mon Aug 22 17:35:10 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Aug 22 17:35:10 2016 +0530 -- lens-examples/src/main/resources/sales-aggr-fact2-local3.data | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/99f8e344/lens-examples/src/main/resources/sales-aggr-fact2-local3.data -- diff --git a/lens-examples/src/main/resources/sales-aggr-fact2-local3.data b/lens-examples/src/main/resources/sales-aggr-fact2-local3.data index a0cb704..407b097 100644 --- a/lens-examples/src/main/resources/sales-aggr-fact2-local3.data +++ b/lens-examples/src/main/resources/sales-aggr-fact2-local3.data @@ -1,2 +1,2 @@ -2015-04-13 00:00:00,2015-04-13 04:00:00,1,1,1,1,1,1,5,0 -2015-04-13 00:00:00,2015-04-13 04:00:00,2,1,2,2,2,1,8,2 \ No newline at end of file +2015-04-13 03:00:00,2015-04-13 04:00:00,1,1,1,1,1,1,5,0 +2015-04-13 03:00:00,2015-04-13 04:00:00,2,1,2,2,2,1,8,2 \ No newline at end of file
lens git commit: LENS-1298 : Make the test event handler sync
Repository: lens Updated Branches: refs/heads/master d9911f618 -> 85cb0c59f LENS-1298 : Make the test event handler sync Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/85cb0c59 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/85cb0c59 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/85cb0c59 Branch: refs/heads/master Commit: 85cb0c59f4300d92e8512eefcea5f4cc16f6aea6 Parents: d9911f6 Author: Lavkesh Lahngir <lavk...@linux.com> Authored: Thu Sep 8 09:38:19 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Thu Sep 8 09:38:19 2016 +0530 -- .../test/java/org/apache/lens/server/query/TestEventService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/85cb0c59/lens-server/src/test/java/org/apache/lens/server/query/TestEventService.java -- diff --git a/lens-server/src/test/java/org/apache/lens/server/query/TestEventService.java b/lens-server/src/test/java/org/apache/lens/server/query/TestEventService.java index 31b6625..526accc 100644 --- a/lens-server/src/test/java/org/apache/lens/server/query/TestEventService.java +++ b/lens-server/src/test/java/org/apache/lens/server/query/TestEventService.java @@ -568,10 +568,10 @@ public class TestEventService { } } - private static class TestEventHandler extends AsyncEventListener { + private static class TestEventHandler implements LensEventListener { @Override -public void process(TestEvent event) { +public void onEvent(TestEvent event) throws LensException { event.processed = true; } }
lens git commit: LENS-1197 : Update doc for api getAllFacts of a cube
Repository: lens Updated Branches: refs/heads/current-release-line be839122d -> ca19ead47 LENS-1197 : Update doc for api getAllFacts of a cube Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/ca19ead4 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/ca19ead4 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/ca19ead4 Branch: refs/heads/current-release-line Commit: ca19ead475e4f929a7154de4ca9c92dc034b0f2c Parents: be83912 Author: Archana H <archana.h...@gmail.com> Authored: Thu Sep 8 09:43:09 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Thu Sep 8 09:43:58 2016 +0530 -- .../java/org/apache/lens/server/metastore/MetastoreResource.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/ca19ead4/lens-server/src/main/java/org/apache/lens/server/metastore/MetastoreResource.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/metastore/MetastoreResource.java b/lens-server/src/main/java/org/apache/lens/server/metastore/MetastoreResource.java index f684247..9d823da 100644 --- a/lens-server/src/main/java/org/apache/lens/server/metastore/MetastoreResource.java +++ b/lens-server/src/main/java/org/apache/lens/server/metastore/MetastoreResource.java @@ -668,7 +668,7 @@ public class MetastoreResource { * * @param sessionid The sessionid in which user is working * @param cubeName name of the base cube or derived cube - * @return List of {@link XFactTable} objects + * @return StringList consisting of all the fact names in the given cube */ @GET @Path("/cubes/{cubeName}/facts")
lens git commit: LENS-1197 : Update doc for api getAllFacts of a cube
Repository: lens Updated Branches: refs/heads/master 85cb0c59f -> 051ad2d3e LENS-1197 : Update doc for api getAllFacts of a cube Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/051ad2d3 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/051ad2d3 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/051ad2d3 Branch: refs/heads/master Commit: 051ad2d3ecd8c3364745297f3c915f1520b26b4c Parents: 85cb0c5 Author: Archana H <archana.h...@gmail.com> Authored: Thu Sep 8 09:43:09 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Thu Sep 8 09:43:09 2016 +0530 -- .../java/org/apache/lens/server/metastore/MetastoreResource.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/051ad2d3/lens-server/src/main/java/org/apache/lens/server/metastore/MetastoreResource.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/metastore/MetastoreResource.java b/lens-server/src/main/java/org/apache/lens/server/metastore/MetastoreResource.java index f684247..9d823da 100644 --- a/lens-server/src/main/java/org/apache/lens/server/metastore/MetastoreResource.java +++ b/lens-server/src/main/java/org/apache/lens/server/metastore/MetastoreResource.java @@ -668,7 +668,7 @@ public class MetastoreResource { * * @param sessionid The sessionid in which user is working * @param cubeName name of the base cube or derived cube - * @return List of {@link XFactTable} objects + * @return StringList consisting of all the fact names in the given cube */ @GET @Path("/cubes/{cubeName}/facts")
lens git commit: LENS-1344 : Make individual component headers on cube schema page on UI left aligned
Repository: lens Updated Branches: refs/heads/master 1a57cdd82 -> e6a59b739 LENS-1344 : Make individual component headers on cube schema page on UI left aligned Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/e6a59b73 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/e6a59b73 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/e6a59b73 Branch: refs/heads/master Commit: e6a59b7391364f1c7ad2b2894efcaf731dca119b Parents: 1a57cdd Author: Rajat Khandelwal <pro...@apache.org> Authored: Wed Oct 5 14:57:58 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Wed Oct 5 14:57:58 2016 +0530 -- lens-ui/app/components/CubeSchemaComponent.js | 8 1 file changed, 4 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/e6a59b73/lens-ui/app/components/CubeSchemaComponent.js -- diff --git a/lens-ui/app/components/CubeSchemaComponent.js b/lens-ui/app/components/CubeSchemaComponent.js index 27adfac..d7492eb 100644 --- a/lens-ui/app/components/CubeSchemaComponent.js +++ b/lens-ui/app/components/CubeSchemaComponent.js @@ -66,7 +66,7 @@ function constructMeasureTable(cubeName, measures) { return ( -Measures +Measures {header} {table} @@ -131,7 +131,7 @@ function constructDimensionTable(cubeName, dimensions, join_chains_by_name) { return ( -Dim-Attributes +Dim-Attributes {header} {table} @@ -165,7 +165,7 @@ function constructJoinChainTable(cubeName, join_chains) { return ( -Join Chains +Join Chains {header} {table} @@ -201,7 +201,7 @@ function constructExpressionTable(cubeName, expressions) { return ( -Expressions +Expressions {header} {table}
lens git commit: LENS-1317 : Lens Query Conf to be persisted in Finished_Queries store
Repository: lens Updated Branches: refs/heads/master fe4ea6bd6 -> 4fa61d994 LENS-1317 : Lens Query Conf to be persisted in Finished_Queries store Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/4fa61d99 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/4fa61d99 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/4fa61d99 Branch: refs/heads/master Commit: 4fa61d9940af6ede89401d5837f1f7796810f254 Parents: fe4ea6b Author: Srikanth Sundarrajan <srik...@apache.org> Authored: Tue Sep 20 10:59:28 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Tue Sep 20 10:59:28 2016 +0530 -- .../server/api/query/FinishedLensQuery.java | 9 +++-- .../apache/lens/server/query/LensServerDAO.java | 38 +--- .../apache/lens/server/query/TestLensDAO.java | 5 +++ 3 files changed, 45 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/4fa61d99/lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java -- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java b/lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java index edd4284..b58fcf9 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java @@ -46,7 +46,7 @@ import lombok.ToString; * * @see java.lang.Object#hashCode() */ -@EqualsAndHashCode(exclude = "selectedDriver") +@EqualsAndHashCode(exclude = {"selectedDriver", "conf"}) /* * (non-Javadoc) * @@ -174,6 +174,10 @@ public class FinishedLensQuery { @Setter private String priority; + @Getter + @Setter + private LensConf conf; + /** * The selected driver's query. */ @@ -217,6 +221,7 @@ public class FinishedLensQuery { if (null != ctx.getPriority()) { this.priority = ctx.getPriority().toString(); } +this.conf = ctx.getLensConf(); } public QueryContext toQueryContext(Configuration conf, Collection drivers) { @@ -226,7 +231,7 @@ public class FinishedLensQuery { } QueryContext qctx = - new QueryContext(userQuery, submitter, new LensConf(), conf, drivers, selectedDriver, submissionTime, + new QueryContext(userQuery, submitter, this.conf, conf, drivers, selectedDriver, submissionTime, false); qctx.setQueryHandle(QueryHandle.fromString(handle)); http://git-wip-us.apache.org/repos/asf/lens/blob/4fa61d99/lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java b/lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java index 2ec938e..997b5a8 100644 --- a/lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java +++ b/lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java @@ -18,6 +18,7 @@ */ package org.apache.lens.server.query; +import java.nio.charset.Charset; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; @@ -26,12 +27,16 @@ import java.util.List; import javax.sql.DataSource; +import org.apache.lens.api.LensConf; import org.apache.lens.api.query.QueryHandle; import org.apache.lens.api.query.QueryStatus; import org.apache.lens.server.api.error.LensException; import org.apache.lens.server.api.query.FinishedLensQuery; import org.apache.lens.server.util.UtilityMethods; +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.dbutils.BasicRowProcessor; +import org.apache.commons.dbutils.BeanProcessor; import org.apache.commons.dbutils.DbUtils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; @@ -87,7 +92,8 @@ public class LensServerDAO { + "starttime bigint, " + "endtime bigint," + "result varchar(255)," + "status varchar(255), " + "metadata varchar(10), " + "rows int, " + "filesize bigint, " + "errormessage varchar(1), " + "driverstarttime bigint, " + "driverendtime bigint, " + "drivername varchar(1), " - + "queryname varchar(255), " + "submissiontime bigint, " + "driverquery varchar(100)" + ")"; + + "queryname varchar(255), " + "submissiontime bigint, " + "driverquery varchar(100), " +
lens git commit: LENS-1283 : Map failure in APIResult to exception in LensClient
Repository: lens Updated Branches: refs/heads/master 4fa61d994 -> 8108ba062 LENS-1283 : Map failure in APIResult to exception in LensClient Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/8108ba06 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/8108ba06 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/8108ba06 Branch: refs/heads/master Commit: 8108ba0625a477a15a7c7cbc65d73157ad83be14 Parents: 4fa61d9 Author: Rajat Khandelwal <pro...@apache.org> Authored: Wed Sep 21 09:39:16 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Wed Sep 21 09:39:16 2016 +0530 -- .../java/org/apache/lens/api/APIResult.java | 27 ++- .../java/org/apache/lens/api/ToYAMLString.java | 5 +- .../lens/api/jaxb/YAMLToStringStrategyTest.java | 14 +- ...lens.api.query.QueryHandleWithResultSet.yaml | 2 +- .../apache/lens/cli/LensCliApplicationTest.java | 2 +- .../lens/cli/TestLensDatabaseCommands.java | 9 +- .../apache/lens/client/LensMetadataClient.java | 203 ++- .../exceptions/LensBriefErrorException.java | 5 + .../lens/client/model/IdBriefErrorTemplate.java | 22 +- .../client/model/IdBriefErrorTemplateTest.java | 4 +- .../examples/ExampleSchemaToStringTest.java | 8 +- 11 files changed, 163 insertions(+), 138 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/8108ba06/lens-api/src/main/java/org/apache/lens/api/APIResult.java -- diff --git a/lens-api/src/main/java/org/apache/lens/api/APIResult.java b/lens-api/src/main/java/org/apache/lens/api/APIResult.java index e147fec..cba564e 100644 --- a/lens-api/src/main/java/org/apache/lens/api/APIResult.java +++ b/lens-api/src/main/java/org/apache/lens/api/APIResult.java @@ -20,6 +20,8 @@ package org.apache.lens.api; import javax.xml.bind.annotation.*; +import org.apache.commons.lang.StringUtils; + import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; @@ -74,7 +76,7 @@ public class APIResult extends ToYAMLString { FAILED } - private static final APIResult SUCCESS = new APIResult(Status.SUCCEEDED, ""); + private static final APIResult SUCCESS = new APIResult(Status.SUCCEEDED, null); public static APIResult partial(int actual, int expected) { return new APIResult(Status.PARTIAL, actual + " out of " + expected); @@ -113,13 +115,22 @@ public class APIResult extends ToYAMLString { } private static String extractCause(Throwable e) { -StringBuilder cause = new StringBuilder(); -String sep = ""; -while (e != null) { - cause.append(sep).append(e.getMessage()); - e = e.getCause(); - sep = ": "; +if (e == null) { + return null; +} +if (e.getCause() != null) { + String causeMessage = extractCause(e.getCause()); + if (StringUtils.isBlank(e.getMessage())) { +return causeMessage; + } else { +if (e.getMessage().contains(causeMessage)) { + return causeMessage; +} else { + return e.getMessage() + ": " + causeMessage; +} + } +} else { + return e.getMessage(); } -return cause.toString(); } } http://git-wip-us.apache.org/repos/asf/lens/blob/8108ba06/lens-api/src/main/java/org/apache/lens/api/ToYAMLString.java -- diff --git a/lens-api/src/main/java/org/apache/lens/api/ToYAMLString.java b/lens-api/src/main/java/org/apache/lens/api/ToYAMLString.java index 65a0c44..ea8e8d1 100644 --- a/lens-api/src/main/java/org/apache/lens/api/ToYAMLString.java +++ b/lens-api/src/main/java/org/apache/lens/api/ToYAMLString.java @@ -68,7 +68,10 @@ public abstract class ToYAMLString implements ToString { for (Field field : this.getClass().getDeclaredFields()) { try { Method getter = getGetter(field); - fieldNameAndValueList.add(new FieldNameAndValue(getReadableName(getter), getter.invoke(this))); + Object value = getter.invoke(this); + if (value != null) { +fieldNameAndValueList.add(new FieldNameAndValue(getReadableName(getter), value)); + } } catch (IllegalAccessException | InvocationTargetException e) { throw new RuntimeException(e); } catch (NoSuchMethodException e) { http://git-wip-us.apache.org/repos/asf/lens/blob/8108ba06/lens-api/src/test/java/org/apache/lens/api/jaxb/YAMLToStringStrategyTest.java -- diff --git a/lens-api/src/test/java/org/apache/lens/api/jaxb/YAMLToStringStrategyTest.java b/lens-api/src/test/java/org/apache/l
lens git commit: LENS-1314 : Update 2.6 release documentation
Repository: lens Updated Branches: refs/heads/master 8108ba062 -> 0d31b74b3 LENS-1314 : Update 2.6 release documentation Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/0d31b74b Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/0d31b74b Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/0d31b74b Branch: refs/heads/master Commit: 0d31b74b39019b3f7370084e7a8e1f9b647afb5b Parents: 8108ba0 Author: Puneet Gupta <puneetgu...@apache.org> Authored: Wed Sep 21 09:57:56 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Wed Sep 21 09:57:56 2016 +0530 -- src/site/apt/releases/download.apt| 2 +- src/site/apt/releases/release-history.apt | 35 ++ 2 files changed, 36 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/0d31b74b/src/site/apt/releases/download.apt -- diff --git a/src/site/apt/releases/download.apt b/src/site/apt/releases/download.apt index d0b313f..7e6895d 100644 --- a/src/site/apt/releases/download.apt +++ b/src/site/apt/releases/download.apt @@ -20,7 +20,7 @@ Download The latest release of Apache Lens can be - {{{http://www.apache.org/dyn/closer.lua/lens/2.5-beta}downloaded from the ASF}}. + {{{http://www.apache.org/dyn/closer.lua/lens/2.6}downloaded from the ASF}}. Older releases may be found {{{http://archive.apache.org/dist/lens}in the archives}}. Releases prior to graduation may be found {{{http://archive.apache.org/dist/incubator/lens}in the incubator archives}}. http://git-wip-us.apache.org/repos/asf/lens/blob/0d31b74b/src/site/apt/releases/release-history.apt -- diff --git a/src/site/apt/releases/release-history.apt b/src/site/apt/releases/release-history.apt index 95891be..5ed0af8 100644 --- a/src/site/apt/releases/release-history.apt +++ b/src/site/apt/releases/release-history.apt @@ -23,6 +23,8 @@ All Apache Lens releases *--+--+---+--+--+--+--+ |Release version|Major features|Release documentation|Release Notes|Download|Incompatibilities|More Info | *--+--+---+--+--+--+--+ +|2.6.0| GA release, Apache Hive 2 support, Query Scheduler, Lens UI enhancements, Python client, Streaming results, New regression module, Weighted Driver selector, Limit number of open sessions, Exponential back off for hive status updates, Single execution for duplicate queries, Auto kill queries on timeout, Convert dimension filter to fact filters for performance improvement, Code cleanup and refactor, Doc/javadoc improvements, Bug fixes| {{{../versions/2.6.0/index.html} 2.6.x docs}} |{{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12333846==12315923} 2.6 release notes}} |{{{http://archive.apache.org/dist/lens/2.6/} Download}} |{{{#a2.6.x_from_2.5.x} 2.6.x-incompatibilities}} | - | +*--+--+---+--+--+--+--+ |2.5.0-beta| Support for multiple instances of a driver, REST API enhancements, Derived cube validation, Per-queue driver max launched queries constraint, New error codes for Hive and JDBC Driver, Lens CLI improvements, Query result retention policy, UI Enhancements, Code cleanup and refactor, Doc/javadoc improvements, Bug fixes| {{{../versions/2.5.0-beta/index.html} 2.5.x docs}} |{{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=1226=12315923} 2.5 release notes}} |{{{http://archive.apache.org/dist/lens/2.5-beta/} Download}} |{{{#a2.5.x_from_2.4.x} 2.5.x-incompatibilities}} | - | *--+--+---+--+--+--+--+ |2.4.0-beta| JDK8 support, new web client, Saved Query and Parameterization, Support flattening of columns selected through bridge-tables(many-to-many relationships), column name mapping for columns in underlying storage tables, Enhancements cube.xsd and jdbc driver, Improvements in Error codes, Doc improvements, bug fixes| {{{../versions/2.4.0-beta/index.html} 2.4.x docs}} |{{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315923=12333087} 2.4 release notes}} |{{{http://archive.apache.org/dist/lens/2.4-beta/} Download}} |{{{#a2.4.x_from_2.3.x} 2.4.x-incompatibilities}} | - | @@ -44,6 +46,39 @@ All Apache Lens releases * Incompatibilities +** 2.6.x from 2.5.x + + * LENS-919: For older deployments the schema for "finished_queries" table needs to be modified to include "priority" + + * LENS-1212: Saved query service is enabled by default now. "saved_query" table will be created to store information +pertaining to saved queries + + * LENS-833: Number of open sessions allowed for each user is capped at 10 by default now + + * LENS-1244: Dropping beta from lens releases. Lens 2.6 will be a GA release + +
lens git commit: LENS-1314 : Update 2.6 release documentation
Repository: lens Updated Branches: refs/heads/current-release-line ca19ead47 -> 035959184 LENS-1314 : Update 2.6 release documentation Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/03595918 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/03595918 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/03595918 Branch: refs/heads/current-release-line Commit: 03595918430cf9fd3944539a7c8f26b724a3e773 Parents: ca19ead Author: Puneet Gupta <puneetgu...@apache.org> Authored: Wed Sep 21 09:57:56 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Wed Sep 21 09:58:46 2016 +0530 -- src/site/apt/releases/download.apt| 2 +- src/site/apt/releases/release-history.apt | 35 ++ 2 files changed, 36 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/03595918/src/site/apt/releases/download.apt -- diff --git a/src/site/apt/releases/download.apt b/src/site/apt/releases/download.apt index d0b313f..7e6895d 100644 --- a/src/site/apt/releases/download.apt +++ b/src/site/apt/releases/download.apt @@ -20,7 +20,7 @@ Download The latest release of Apache Lens can be - {{{http://www.apache.org/dyn/closer.lua/lens/2.5-beta}downloaded from the ASF}}. + {{{http://www.apache.org/dyn/closer.lua/lens/2.6}downloaded from the ASF}}. Older releases may be found {{{http://archive.apache.org/dist/lens}in the archives}}. Releases prior to graduation may be found {{{http://archive.apache.org/dist/incubator/lens}in the incubator archives}}. http://git-wip-us.apache.org/repos/asf/lens/blob/03595918/src/site/apt/releases/release-history.apt -- diff --git a/src/site/apt/releases/release-history.apt b/src/site/apt/releases/release-history.apt index 95891be..5ed0af8 100644 --- a/src/site/apt/releases/release-history.apt +++ b/src/site/apt/releases/release-history.apt @@ -23,6 +23,8 @@ All Apache Lens releases *--+--+---+--+--+--+--+ |Release version|Major features|Release documentation|Release Notes|Download|Incompatibilities|More Info | *--+--+---+--+--+--+--+ +|2.6.0| GA release, Apache Hive 2 support, Query Scheduler, Lens UI enhancements, Python client, Streaming results, New regression module, Weighted Driver selector, Limit number of open sessions, Exponential back off for hive status updates, Single execution for duplicate queries, Auto kill queries on timeout, Convert dimension filter to fact filters for performance improvement, Code cleanup and refactor, Doc/javadoc improvements, Bug fixes| {{{../versions/2.6.0/index.html} 2.6.x docs}} |{{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12333846==12315923} 2.6 release notes}} |{{{http://archive.apache.org/dist/lens/2.6/} Download}} |{{{#a2.6.x_from_2.5.x} 2.6.x-incompatibilities}} | - | +*--+--+---+--+--+--+--+ |2.5.0-beta| Support for multiple instances of a driver, REST API enhancements, Derived cube validation, Per-queue driver max launched queries constraint, New error codes for Hive and JDBC Driver, Lens CLI improvements, Query result retention policy, UI Enhancements, Code cleanup and refactor, Doc/javadoc improvements, Bug fixes| {{{../versions/2.5.0-beta/index.html} 2.5.x docs}} |{{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=1226=12315923} 2.5 release notes}} |{{{http://archive.apache.org/dist/lens/2.5-beta/} Download}} |{{{#a2.5.x_from_2.4.x} 2.5.x-incompatibilities}} | - | *--+--+---+--+--+--+--+ |2.4.0-beta| JDK8 support, new web client, Saved Query and Parameterization, Support flattening of columns selected through bridge-tables(many-to-many relationships), column name mapping for columns in underlying storage tables, Enhancements cube.xsd and jdbc driver, Improvements in Error codes, Doc improvements, bug fixes| {{{../versions/2.4.0-beta/index.html} 2.4.x docs}} |{{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315923=12333087} 2.4 release notes}} |{{{http://archive.apache.org/dist/lens/2.4-beta/} Download}} |{{{#a2.4.x_from_2.3.x} 2.4.x-incompatibilities}} | - | @@ -44,6 +46,39 @@ All Apache Lens releases * Incompatibilities +** 2.6.x from 2.5.x + + * LENS-919: For older deployments the schema for "finished_queries" table needs to be modified to include "priority" + + * LENS-1212: Saved query service is enabled by default now. "saved_query" table will be created to store information +pertaining to saved queries + + * LENS-833: Number of open sessions allowed for each user is capped at 10 by default now + + * LENS-1244: Dropping beta from lens releases. Lens 2.
lens git commit: LENS-1300 : Query submission to be rejected on sessions marked for close
Repository: lens Updated Branches: refs/heads/master d1a463552 -> 4556773e3 LENS-1300 : Query submission to be rejected on sessions marked for close Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/4556773e Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/4556773e Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/4556773e Branch: refs/heads/master Commit: 4556773e3e4e2d80c1c68afd87338a4fe2de0e6d Parents: d1a4635 Author: Rajat Khandelwal <pro...@apache.org> Authored: Sat Sep 17 11:43:29 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Sat Sep 17 11:43:29 2016 +0530 -- .../java/org/apache/lens/api/APIResult.java | 3 + .../lens/server/api/session/SessionService.java | 7 ++ .../org/apache/lens/server/BaseLensService.java | 8 +- .../lens/server/session/HiveSessionService.java | 15 ++- .../lens/server/session/LensSessionImpl.java| 4 +- .../lens/server/session/SessionResource.java| 20 +++- .../TestQueryIndependenceFromSessionClose.java | 105 +-- 7 files changed, 121 insertions(+), 41 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/4556773e/lens-api/src/main/java/org/apache/lens/api/APIResult.java -- diff --git a/lens-api/src/main/java/org/apache/lens/api/APIResult.java b/lens-api/src/main/java/org/apache/lens/api/APIResult.java index 26e9926..e147fec 100644 --- a/lens-api/src/main/java/org/apache/lens/api/APIResult.java +++ b/lens-api/src/main/java/org/apache/lens/api/APIResult.java @@ -98,6 +98,9 @@ public class APIResult extends ToYAMLString { public static APIResult success() { return SUCCESS; } + public static APIResult success(String message) { +return new APIResult(Status.SUCCEEDED, message); + } public static APIResult failure(Exception e) { String cause = extractCause(e); http://git-wip-us.apache.org/repos/asf/lens/blob/4556773e/lens-server-api/src/main/java/org/apache/lens/server/api/session/SessionService.java -- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/session/SessionService.java b/lens-server-api/src/main/java/org/apache/lens/server/api/session/SessionService.java index 80ce030..20ec686 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/session/SessionService.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/session/SessionService.java @@ -67,6 +67,13 @@ public interface SessionService { void closeSession(LensSessionHandle sessionHandle) throws LensException; /** + * Close idle sessions. + * + * @throws LensException the lens exception + */ + + void cleanupIdleSessions() throws LensException; + /** * Adds the resource. * * @param sessionHandle the session handle http://git-wip-us.apache.org/repos/asf/lens/blob/4556773e/lens-server/src/main/java/org/apache/lens/server/BaseLensService.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/BaseLensService.java b/lens-server/src/main/java/org/apache/lens/server/BaseLensService.java index e0e4bf8..d7ce434 100644 --- a/lens-server/src/main/java/org/apache/lens/server/BaseLensService.java +++ b/lens-server/src/main/java/org/apache/lens/server/BaseLensService.java @@ -547,7 +547,13 @@ public abstract class BaseLensService extends CompositeService implements Extern if (handle == null) { throw new LensException(SESSION_ID_NOT_PROVIDED.getLensErrorInfo()); } -if (!getSession(handle).isActive()) { +LensSessionImpl session; +try { + session = getSession(handle); +} catch (ClientErrorException e) { + throw new LensException(SESSION_CLOSED.getLensErrorInfo(), handle, e); +} +if (!session.isActive() || session.isMarkedForClose()) { throw new LensException(SESSION_CLOSED.getLensErrorInfo(), handle); } } http://git-wip-us.apache.org/repos/asf/lens/blob/4556773e/lens-server/src/main/java/org/apache/lens/server/session/HiveSessionService.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/session/HiveSessionService.java b/lens-server/src/main/java/org/apache/lens/server/session/HiveSessionService.java index 8909098..21e2a62 100644 --- a/lens-server/src/main/java/org/apache/lens/server/session/HiveSessionService.java +++ b/lens-server/src/main/java/org/apache/lens/server/session/HiveSessionService.java @@ -22,9 +22,7 @@ import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import java.
lens git commit: LENS-1323 : Fix TestRemoteHiveDriver#testMultiThreadClient test failure
Repository: lens Updated Branches: refs/heads/master 4556773e3 -> fe4ea6bd6 LENS-1323 : Fix TestRemoteHiveDriver#testMultiThreadClient test failure Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/fe4ea6bd Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/fe4ea6bd Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/fe4ea6bd Branch: refs/heads/master Commit: fe4ea6bd60596f7fb62239d9011050b338acced0 Parents: 4556773 Author: Rajat Khandelwal <pro...@apache.org> Authored: Sat Sep 17 11:57:39 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Sat Sep 17 11:57:39 2016 +0530 -- .../org/apache/lens/driver/hive/HiveDriver.java | 87 +--- .../lens/driver/hive/TestRemoteHiveDriver.java | 6 +- 2 files changed, 44 insertions(+), 49 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/fe4ea6bd/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java -- diff --git a/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java b/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java index 0218be3..84d9933 100644 --- a/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java +++ b/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java @@ -583,7 +583,7 @@ public class HiveDriver extends AbstractLensDriver { } private DriverQueryStatus updateDriverStateFromOperationStatus(OperationHandle handle, DriverQueryStatus status) -throws LensException, HiveSQLException { +throws LensException, HiveSQLException, IOException { if (status == null) { status = new DriverQueryStatus(); } @@ -626,34 +626,13 @@ public class HiveDriver extends AbstractLensDriver { default: throw new LensException("Query is in unknown state at HiveServer"); } -return status; - } - /* - * (non-Javadoc) - * - * @see org.apache.lens.server.api.driver.LensDriver#updateStatus(org.apache.lens.server.api.query.QueryContext) - */ - @Override - public void updateStatus(QueryContext context) throws LensException { -log.debug("GetStatus: {}", context.getQueryHandle()); -if (context.getDriverStatus().isFinished()) { - return; -} -OperationHandle hiveHandle = getHiveHandle(context.getQueryHandle()); -ByteArrayInputStream in = null; -try { - // Get operation status from hive server - log.debug("GetStatus hiveHandle: {}", hiveHandle); - fetchLogs(hiveHandle); - OperationStatus opStatus = getClient().getOperationStatus(hiveHandle); - updateDriverStateFromOperationStatus(hiveHandle, context.getDriverStatus()); - float progress = 0f; - String jsonTaskStatus = opStatus.getTaskStatus(); - String errorMsg = null; - if (StringUtils.isNotBlank(jsonTaskStatus)) { +float progress = 0f; +String jsonTaskStatus = opStatus.getTaskStatus(); +String errorMsg = null; +if (StringUtils.isNotBlank(jsonTaskStatus)) { + try (ByteArrayInputStream in = new ByteArrayInputStream(jsonTaskStatus.getBytes("UTF-8"))) { ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); -in = new ByteArrayInputStream(jsonTaskStatus.getBytes("UTF-8")); List taskStatuses = mapper.readValue(in, new TypeReference<List>() { }); int completedTasks = 0; @@ -670,32 +649,44 @@ public class HiveDriver extends AbstractLensDriver { } progress = taskStatuses.size() == 0 ? 0 : (float) completedTasks / taskStatuses.size(); errorMsg = errorMessage.toString(); - } else { -log.warn("Empty task statuses"); - } - String error = null; - if (StringUtils.isNotBlank(errorMsg)) { -error = errorMsg; - } else if (opStatus.getState().equals(OperationState.ERROR)) { -error = context.getDriverStatus().getErrorMessage(); } - context.getDriverStatus().setErrorMessage(error); - context.getDriverStatus().setProgressMessage(jsonTaskStatus); - context.getDriverStatus().setProgress(progress); - context.getDriverStatus().setDriverStartTime(opStatus.getOperationStarted()); - context.getDriverStatus().setDriverFinishTime(opStatus.getOperationCompleted()); +} else { + log.warn("Empty task statuses"); +} +String error = null; +if (StringUtils.isNotBlank(errorMsg)) { + error = errorMsg; +} else if (status.getState().equals(DriverQueryState.FAILED)) { + error = status.getErrorMessage(); +} +status.setE
lens git commit: LENS-1322 : Display join chain details as a tooltip on dim attributes using that join chain
Repository: lens Updated Branches: refs/heads/master b438aa2f2 -> d1a463552 LENS-1322 : Display join chain details as a tooltip on dim attributes using that join chain Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/d1a46355 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/d1a46355 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/d1a46355 Branch: refs/heads/master Commit: d1a4635526f770287099c60ddc1e9665644b9cc9 Parents: b438aa2 Author: Rajat Khandelwal <pro...@apache.org> Authored: Sat Sep 17 11:21:34 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Sat Sep 17 11:21:34 2016 +0530 -- lens-ui/app/components/CubeSchemaComponent.js | 44 -- lens-ui/app/stores/CubeStore.js | 5 +++ lens-ui/app/styles/css/global.css | 4 ++ lens-ui/app/styles/css/query-component.css| 2 +- lens-ui/package.json | 2 +- 5 files changed, 43 insertions(+), 14 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/d1a46355/lens-ui/app/components/CubeSchemaComponent.js -- diff --git a/lens-ui/app/components/CubeSchemaComponent.js b/lens-ui/app/components/CubeSchemaComponent.js index 6a2b7af..27adfac 100644 --- a/lens-ui/app/components/CubeSchemaComponent.js +++ b/lens-ui/app/components/CubeSchemaComponent.js @@ -23,6 +23,7 @@ import CubeStore from '../stores/CubeStore'; import UserStore from '../stores/UserStore'; import AdhocQueryActions from '../actions/AdhocQueryActions'; import Loader from '../components/LoaderComponent'; +import {Tooltip, OverlayTrigger} from 'react-bootstrap' function getCubes(database) { return CubeStore.getCubes(database); @@ -73,23 +74,41 @@ function constructMeasureTable(cubeName, measures) { ); } -function constructDimensionTable(cubeName, dimensions) { +function constructDimensionTable(cubeName, dimensions, join_chains_by_name) { let table = dimensions.map((dimension) => { if (typeof(dimension) == "string") { return ( - { dimension} ); } else { + let join_chain_column; + if (dimension.chain_ref_column) { +let inner = dimension.chain_ref_column.map((ref) => { + let join_chain = join_chains_by_name[ref.chain_name]; + let tooltip = { +join_chain.paths.path.map((path) => { + let paths = path.edges.edge.map((edge) => { +return edge.from.table + "." + edge.from.column + "=" + edge.to.table + "." + edge.to.column + }).join("->") + return ({paths}) +}) + } + ; + return ( + + {ref.chain_name} +{"."+ref.ref_col} + ); +}); +join_chain_column = ({inner}); + } return ( { dimension.name } { dimension.display_string } { dimension.description } - { dimension.chain_ref_column ? dimension.chain_ref_column.map((ref) => { -return ref.chain_name + "." + ref.ref_col - }).join(" ") : ""} + {join_chain_column} ); } @@ -194,11 +213,11 @@ function constructExpressionTable(cubeName, expressions) { class CubeSchema extends React.Component { constructor(props) { super(props); -this.state = {cube: {}, database: props.params.databaseName}; +this.state = {cube: {}, database: UserStore.currentDatabase()}; this._onChange = this._onChange.bind(this); AdhocQueryActions - .getCubeDetails(UserStore.getUserDetails().secretToken, props.params.databaseName, props.params.cubeName); + .getCubeDetails(UserStore.getUserDetails().secretToken, UserStore.currentDatabase(), props.params.cubeName); } componentDidMount() { @@ -212,7 +231,7 @@ class CubeSchema extends React.Component { componentWillReceiveProps(props) { // TODO are props updated automatically, unlike state? let cubeName = props.params.cubeName; -let cube = getCubes(props.params.databaseName)[cubeName]; +let cube = getCubes(UserStore.currentDatabase())[cubeName]; if (cube.isLoaded) { this.setState({cube: cube, database: props.params.database}); @@ -220,10 +239,10 @@ class CubeSchema extends React.Component { } AdhocQueryActions - .getCubeDetails(UserStore.getUserDetails().secretToken, props.params.databaseName, cubeName); + .getCubeDetails(UserStore.getUserDetails().secretToken, UserStore.currentDatabase(), cubeName); // empty the
lens git commit: LENS-1334 : Fix full outer join condition for multi fact queries with more than two tables
Repository: lens Updated Branches: refs/heads/master fa865bfb6 -> f1a959bdd LENS-1334 : Fix full outer join condition for multi fact queries with more than two tables Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/f1a959bd Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/f1a959bd Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/f1a959bd Branch: refs/heads/master Commit: f1a959bdd78e4161b7883734776e4dc4c464bb49 Parents: fa865bf Author: Sushil Mohanty <sushilmoha...@apache.org> Authored: Tue Sep 27 16:38:28 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Tue Sep 27 16:38:28 2016 +0530 -- .../lens/cube/parse/MultiFactHQLContext.java| 36 --- .../lens/cube/parse/TestBaseCubeQueries.java| 46 +++- 2 files changed, 45 insertions(+), 37 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/f1a959bd/lens-cube/src/main/java/org/apache/lens/cube/parse/MultiFactHQLContext.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/MultiFactHQLContext.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/MultiFactHQLContext.java index 7fbcd7e..b3547db 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/MultiFactHQLContext.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/MultiFactHQLContext.java @@ -129,6 +129,17 @@ class MultiFactHQLContext extends SimpleHQLContext { return select.toString(); } + private String getMultiFactJoinCondition(int i, String dim) { +StringBuilder joinCondition = new StringBuilder(); +if (i <= 1) { + return "".toString(); +} else { + joinCondition.append("mq").append(i - 2).append(".").append(dim).append(" <=> "). + append("mq").append(i - 1).append(".").append(dim); +} +return joinCondition.toString(); + } + private String getFromString() throws LensException { StringBuilder fromBuilder = new StringBuilder(); int aliasCount = 1; @@ -137,24 +148,17 @@ class MultiFactHQLContext extends SimpleHQLContext { SimpleHQLContext facthql = factHQLContextMap.get(fact); fromBuilder.append(sep).append("(").append(facthql.toHQL()).append(")").append(" mq").append(aliasCount++); sep = " full outer join "; -} -CandidateFact firstFact = facts.iterator().next(); -if (!firstFact.getDimFieldIndices().isEmpty()) { - fromBuilder.append(" on "); -} -for (int i = 2; i <= facts.size(); i++) { - Iterator dimIter = firstFact.getDimFieldIndices().iterator(); - while (dimIter.hasNext()) { -String dim = query.getSelectAlias(dimIter.next()); -fromBuilder.append("mq1").append(".").append(dim).append(" <=> ").append("mq").append(i).append(".") - .append(dim); -if (dimIter.hasNext()) { - fromBuilder.append(" AND "); + if (!fact.getDimFieldIndices().isEmpty() && aliasCount > 2) { +fromBuilder.append(" on "); +Iterator dimIter = fact.getDimFieldIndices().iterator(); +while (dimIter.hasNext()) { + String dim = query.getSelectAlias(dimIter.next()); + fromBuilder.append(getMultiFactJoinCondition(aliasCount, dim)); + if (dimIter.hasNext()) { +fromBuilder.append(" AND "); + } } } - if (i != facts.size() && firstFact.getDimFieldIndices().size() > 0) { -fromBuilder.append(" AND "); - } } return fromBuilder.toString(); } http://git-wip-us.apache.org/repos/asf/lens/blob/f1a959bd/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java -- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java index 6fb027a..053cad3 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java @@ -331,42 +331,46 @@ public class TestBaseCubeQueries extends TestQueryRewrite { @Test public void testMultiFactQueryInvolvingThreeFactTables() throws Exception { // query with 3 fact tables -String hqlQuery = rewrite("select dim1, msr12, roundedmsr2, msr13, msr3 from basecube where " + TWO_DAYS_RANGE, - conf); +String hqlQuery = rewrite("select dim
lens git commit: LENS-1326 : Disable hive session and operation timeouts
Repository: lens Updated Branches: refs/heads/master 47a3012ed -> bf25ac578 LENS-1326 : Disable hive session and operation timeouts Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/bf25ac57 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/bf25ac57 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/bf25ac57 Branch: refs/heads/master Commit: bf25ac578d0643e664daafb2d19f95dda158ea18 Parents: 47a3012 Author: Lavkesh Lahngir <lavk...@linux.com> Authored: Tue Oct 4 12:49:35 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Tue Oct 4 12:49:35 2016 +0530 -- .../src/main/resources/lensserver-default.xml | 12 + src/site/apt/admin/config.apt | 240 ++- 2 files changed, 134 insertions(+), 118 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/bf25ac57/lens-server/src/main/resources/lensserver-default.xml -- diff --git a/lens-server/src/main/resources/lensserver-default.xml b/lens-server/src/main/resources/lensserver-default.xml index d88ab3c..8e5fe8a 100644 --- a/lens-server/src/main/resources/lensserver-default.xml +++ b/lens-server/src/main/resources/lensserver-default.xml @@ -491,6 +491,18 @@ +hive.server2.idle.session.timeout +0 +Session should be closed by lens. There would be a mismatch when hive has closed session due to timeout +and lens is not aware of that. + + +hive.server2.idle.operation.timeout +0 +Closing of operations should be handled by lens. Hive should not invalidate operations upon timeout + + + hive.server2.async.exec.threads 5 Number of threads required in async thread pool for query execution in the lens directly. Lens uses http://git-wip-us.apache.org/repos/asf/lens/blob/bf25ac57/src/site/apt/admin/config.apt -- diff --git a/src/site/apt/admin/config.apt b/src/site/apt/admin/config.apt index a1d4d1a..f22fc0c 100644 --- a/src/site/apt/admin/config.apt +++ b/src/site/apt/admin/config.apt @@ -36,245 +36,249 @@ Lens server configuration *--+--+---+--+ |6|hive.server2.authentication.ldap.url| |LDAP connection URL| *--+--+---+--+ -|7|hive.server2.log.redirection.enabled|false|Disable the log direction on the lens server sessions. There are no logs required for each session in lens sessions. This will decrease number of file handles associated to lens server.| +|7|hive.server2.idle.operation.timeout|0|Closing of operations should be handled by lens. Hive should not invalidate operations upon timeout| *--+--+---+--+ -|8|hive.server2.logging.operation.enabled|false|Disable the operation logging, since there are no execution operation happening in lens session. Keeping it true might conflict with Hive Server if both are running on the same machine causing disappearance of the operation log directory.| +|8|hive.server2.idle.session.timeout|0|Session should be closed by lens. There would be a mismatch when hive has closed session due to timeout and lens is not aware of that.| *--+--+---+--+ -|9|lens.query.current.time.millis|0|Query current time in millis. This is used to resolve 'now'. If value is set to zero, 'now' is resolved to current value| +|9|hive.server2.log.redirection.enabled|false|Disable the log direction on the lens server sessions. There are no logs required for each session in lens sessions. This will decrease number of file handles associated to lens server.| *--+--+---+--+ -|10|lens.server.alarm.service.impl|org.apache.lens.server.scheduler.AlarmService|Implementation class for alarm service| +|10|hive.server2.logging.operation.enabled|false|Disable the operation logging, since there are no execution operation happening in lens session. Keeping it true might conflict with Hive Server if both are running on the same machine causing disappearance of the operation log directory.| *--+--+---+--+ -|11|lens.server.appevent.ws.listener.impl|org.apache.lens.server.LensApplicationListener|Implementation class for Lens Application Listener| +|11|lens.query.current.time.millis|0|Query current time in millis. This is used to resolve 'now'. If value is set to zero, 'now' is resolved to current value| *--+--+---+--+ -|12|lens.server.base.url|http://0.0.0.0:/lensapi/|The base url for the lens server| +|12|lens.server.alarm.service.impl|org.apache.lens.server.scheduler.AlarmService|Implementation class for alarm service| *--+--+---+--+ -|13|lens.server.consistentState.ws.filter.impl|org.apache.lens.server.ConsistentStateFilter|Implementation class for ConsistentState Filter| +|13|lens.server.appevent.ws.listener.impl|org.apache.lens.server.LensAppl
lens git commit: LENS-1340 : Add DataCompletenessChecker
Repository: lens Updated Branches: refs/heads/master 08ce29785 -> 47a3012ed LENS-1340 : Add DataCompletenessChecker Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/47a3012e Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/47a3012e Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/47a3012e Branch: refs/heads/master Commit: 47a3012edc9604e94795d1453a77ac4ee2b1b936 Parents: 08ce297 Author: Narayan Periwal <narayan.peri...@inmobi.com> Authored: Tue Oct 4 12:44:15 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Tue Oct 4 12:44:15 2016 +0530 -- .../cube/parse/DataCompletenessChecker.java | 55 1 file changed, 55 insertions(+) -- http://git-wip-us.apache.org/repos/asf/lens/blob/47a3012e/lens-cube/src/main/java/org/apache/lens/cube/parse/DataCompletenessChecker.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/DataCompletenessChecker.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/DataCompletenessChecker.java new file mode 100644 index 000..026c9a9 --- /dev/null +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/DataCompletenessChecker.java @@ -0,0 +1,55 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.lens.cube.parse; + +import org.apache.lens.server.api.error.LensException; + +import java.util.Date; +import java.util.Map; +import java.util.Set; + +/** + * DataCompletenessChecker is for identifying the completeness of data in a fact for the given set of measures, start + * and end date. A fact will have a dataCompletenessTag, multiple facts can have the same dataCompletenessTag. + * Similarly, measures will have a dataCompletenessTag, multiple measures can have the same dataCompletenessTag. + * The api will take the dataCompletenessTag for the facts and measures and compute the completeness based on these + * tags. The utility of having tags is that the similar kind of measures or facts which will have the same level of + * completeness can use the same tag, thus we avoid the redundant completeness computation for similar measures + * and facts. + * The implementations of the interface can truncate the start and end date. + */ +public interface DataCompletenessChecker { + +/** + * Get completeness of the set of measures in a fact based on the dataCompletenessTag for the given starttime and + * endtime. + * + * @param factTag This is the dataCompletenessTag for a fact. The tag can be specified by setting the property + *named dataCompletenessTag for the fact. Mutltiple facts can have the same dataCompletenessTag. + * @param start Start time of the query (Inclusive). + * @param end End time of the query (Exclusive). + * @param measureTag List of distinct tag of the measures in the query. Multiple measures can have the same + * dataCompletenessTag. + * @return map; key is the name of the dataCompletenessTag which refers to one or more measures. Value is the map + * of date and %completeness. + */ +Map<String, Map<Date, Float>> getCompleteness(String factTag, Date start, Date end, Set measureTag) +throws LensException; + +}
lens git commit: LENS-1374 : Add more logs in FieldValidator
Repository: lens Updated Branches: refs/heads/master 08d79631b -> 666fc776a LENS-1374 : Add more logs in FieldValidator Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/666fc776 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/666fc776 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/666fc776 Branch: refs/heads/master Commit: 666fc776a1f22c5b308b6eb1ea054a52d6ec141d Parents: 08d7963 Author: Rajat Khandelwal <pro...@apache.org> Authored: Thu Nov 10 11:11:51 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Thu Nov 10 11:11:51 2016 +0530 -- .../main/java/org/apache/lens/cube/parse/FieldValidator.java | 8 ++-- 1 file changed, 6 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/666fc776/lens-cube/src/main/java/org/apache/lens/cube/parse/FieldValidator.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/FieldValidator.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/FieldValidator.java index 7f4aa93..48af0c9 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/FieldValidator.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/FieldValidator.java @@ -33,10 +33,12 @@ import org.apache.hadoop.hive.ql.parse.ASTNode; import org.apache.hadoop.hive.ql.parse.HiveParser; import com.google.common.collect.ImmutableSet; +import lombok.extern.slf4j.Slf4j; /** * Validate fields based on cube queryability */ +@Slf4j public class FieldValidator implements ContextRewriter { @Override @@ -73,12 +75,13 @@ public class FieldValidator implements ContextRewriter { // do validation // Find atleast one derived cube which contains all the dimensions // queried. - + log.info("Chained columns: {}, Queried dim attributes: {}", chainedSrcColumns, queriedDimAttrs); boolean derivedCubeFound = false; for (DerivedCube dcube : dcubes) { if (dcube.getDimAttributeNames().containsAll(chainedSrcColumns) && dcube.getDimAttributeNames().containsAll(queriedDimAttrs)) { + log.info("Derived cube found: {}", dcube.getName()); // remove all the measures that are covered queriedMsrs.removeAll(dcube.getMeasureNames()); derivedCubeFound = true; @@ -93,9 +96,10 @@ public class FieldValidator implements ContextRewriter { } if (!queriedMsrs.isEmpty()) { +log.info("Uncovered queried Measures: {}", queriedMsrs); // Add appropriate message to know which fields are not queryable together if (!nonQueryableFields.isEmpty()) { - + log.info("Non queryable fields: {}", nonQueryableFields); conflictingFields.addAll(nonQueryableFields); conflictingFields.addAll(queriedMsrs); throw new FieldsCannotBeQueriedTogetherException(new ConflictingFields(conflictingFields));
[1/2] lens git commit: LENS-1333: Add data completeness checks on query writing path
Repository: lens Updated Branches: refs/heads/master 0cce226f7 -> 078555c1a http://git-wip-us.apache.org/repos/asf/lens/blob/078555c1/src/site/apt/admin/config.apt -- diff --git a/src/site/apt/admin/config.apt b/src/site/apt/admin/config.apt index 21b23f9..f89caab 100644 --- a/src/site/apt/admin/config.apt +++ b/src/site/apt/admin/config.apt @@ -44,245 +44,249 @@ Lens server configuration *--+--+---+--+ |10|hive.server2.logging.operation.enabled|false|Disable the operation logging, since there are no execution operation happening in lens session. Keeping it true might conflict with Hive Server if both are running on the same machine causing disappearance of the operation log directory.| *--+--+---+--+ -|11|lens.query.current.time.millis|0|Query current time in millis. This is used to resolve 'now'. If value is set to zero, 'now' is resolved to current value| +|11|lens.cube.metastore.completeness.checker.class|org.apache.lens.server.api.metastore.DefaultChecker|The class that implements the DataCompletenessChecker Interface. This will take effect if the flag "lens.cube.metastore.enable.datacompleteness.check" is set.| *--+--+---+--+ -|12|lens.server.alarm.service.impl|org.apache.lens.server.scheduler.AlarmService|Implementation class for alarm service| +|12|lens.cube.metastore.enable.datacompleteness.check|false|This property is to enable Data Completeness Checks while resolving partitions.| *--+--+---+--+ -|13|lens.server.appevent.ws.listener.impl|org.apache.lens.server.LensApplicationListener|Implementation class for Lens Application Listener| +|13|lens.query.current.time.millis|0|Query current time in millis. This is used to resolve 'now'. If value is set to zero, 'now' is resolved to current value| *--+--+---+--+ -|14|lens.server.base.url|http://0.0.0.0:/lensapi/|The base url for the lens server| +|14|lens.server.alarm.service.impl|org.apache.lens.server.scheduler.AlarmService|Implementation class for alarm service| *--+--+---+--+ -|15|lens.server.consistentState.ws.filter.impl|org.apache.lens.server.ConsistentStateFilter|Implementation class for ConsistentState Filter| +|15|lens.server.appevent.ws.listener.impl|org.apache.lens.server.LensApplicationListener|Implementation class for Lens Application Listener| *--+--+---+--+ -|16|lens.server.database.resource.dir|/tmp/lens/resources|Top level directory to store database specific static resources which are added to each database. To add a static resource for a DB, create a directory with the same name as that of the DB under this directory, and place the resources inside the DB directory. Any subdirectories under the DB directory and the resources under them will be ignored| +|16|lens.server.base.url|http://0.0.0.0:/lensapi/|The base url for the lens server| *--+--+---+--+ -|17|lens.server.db.driver.name|org.hsqldb.jdbcDriver|Database driver for database where Finished queries have to be stored. Also used for database based user config loaders| +|17|lens.server.consistentState.ws.filter.impl|org.apache.lens.server.ConsistentStateFilter|Implementation class for ConsistentState Filter| *--+--+---+--+ -|18|lens.server.db.jdbc.pass| |JDBC Password for Finished queries table. Also used for database based user config loaders| +|18|lens.server.database.resource.dir|/tmp/lens/resources|Top level directory to store database specific static resources which are added to each database. To add a static resource for a DB, create a directory with the same name as that of the DB under this directory, and place the resources inside the DB directory. Any subdirectories under the DB directory and the resources under them will be ignored| *--+--+---+--+ -|19|lens.server.db.jdbc.url|jdbc:hsqldb:/tmp/lensserver/queries.db|JDBC URL where the database for storing finished queries is located. Also used for database based user config loaders| +|19|lens.server.db.driver.name|org.hsqldb.jdbcDriver|Database driver for database where Finished queries have to be stored. Also used for database based user config loaders| *--+--+---+--+ -|20|lens.server.db.jdbc.user|SA|JDBC User for Finished queries table. Also used for database based user config loaders| +|20|lens.server.db.jdbc.pass| |JDBC Password for Finished queries table. Also used for database based user config loaders| *--+--+---+--+ -|21|lens.server.db.validation.query|select 1 from INFORMATION_SCHEMA.SYSTEM_USERS|BasicDatasource has a config parameter called validationQuery. This query is run before passing the Datasource to the application to verify if connection is valid.\ | +|21|lens.server.db.jdbc.url|jdbc:hsqldb:/tmp/lensserver/queries.db|JDBC URL where the database for storing finished queries is located. Also used for database based user config loaders| +*--+--+---+--+ +|22|lens.server.db.jdbc.user|SA|JDBC User for Finished queries table. Also used for database based user config loaders|
lens git commit: LENS-1325 : Add tests and document passing encoded urls for query http notifications
Repository: lens Updated Branches: refs/heads/master 70855ea8c -> 54961853f LENS-1325 : Add tests and document passing encoded urls for query http notifications Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/54961853 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/54961853 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/54961853 Branch: refs/heads/master Commit: 54961853fb6762431f5e20d0af95be3bb00d2afa Parents: 70855ea Author: Puneet Gupta <puneetgu...@apache.org> Authored: Thu Oct 20 09:53:24 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Thu Oct 20 09:53:24 2016 +0530 -- .../server/query/QueryEventHttpNotifier.java| 6 ++--- .../src/main/resources/lenssession-default.xml | 3 ++- .../query/TestQueryNotifictaionResource.java| 23 ++-- .../lens/server/query/TestQueryService.java | 15 ++--- src/site/apt/admin/session-config.apt | 2 +- 5 files changed, 39 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/54961853/lens-server/src/main/java/org/apache/lens/server/query/QueryEventHttpNotifier.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/query/QueryEventHttpNotifier.java b/lens-server/src/main/java/org/apache/lens/server/query/QueryEventHttpNotifier.java index 1760bec..6e7bd3b 100644 --- a/lens-server/src/main/java/org/apache/lens/server/query/QueryEventHttpNotifier.java +++ b/lens-server/src/main/java/org/apache/lens/server/query/QueryEventHttpNotifier.java @@ -146,7 +146,7 @@ public abstract class QueryEventHttpNotifier extends Async queryContext.getQueryHandleString(), httpEndPoint, responseCode); } catch (LensException e) { log.error("Error while sending {} HTTP Notification for Query {} to {}", getNotificationType(), - queryContext.getQueryHandleString(), httpEndPoint, e); + queryContext.getQueryHandleString(), httpEndPoint, e); // continue to try other httpEndPoints.. } } } @@ -187,7 +187,6 @@ public abstract class QueryEventHttpNotifier extends Async */ private int notifyEvent(String httpEndPoint, Map<String, Object> eventDetails, MediaType mediaType) throws LensException { - final WebTarget target = buildClient().target(httpEndPoint); FormDataMultiPart mp = new FormDataMultiPart(); for (Map.Entry<String, Object> eventDetail : eventDetails.entrySet()) { @@ -203,8 +202,9 @@ public abstract class QueryEventHttpNotifier extends Async } catch (Exception e) { throw new LensException("Error while publishing Http notification", e); } + //2XX = SUCCESS -if (!(response.getStatus() >= 200 && response.getStatus() < 300)) { +if (!response.getStatusInfo().getFamily().equals(Response.Status.Family.SUCCESSFUL)) { throw new LensException("Error while publishing Http notification. Response code " + response.getStatus()); } return response.getStatus(); http://git-wip-us.apache.org/repos/asf/lens/blob/54961853/lens-server/src/main/resources/lenssession-default.xml -- diff --git a/lens-server/src/main/resources/lenssession-default.xml b/lens-server/src/main/resources/lenssession-default.xml index b6bfa2e..9a8f9da 100644 --- a/lens-server/src/main/resources/lenssession-default.xml +++ b/lens-server/src/main/resources/lenssession-default.xml @@ -263,7 +263,8 @@ lens.query.http.notification.urls These are the http end points for Query http notifications. Users can specify more than one comma - separated end points for a query. If this property is not set, no http notification will be sent out by lens + separated end points for a query. Url parameter values that include special characters should be + encoded. Please note that if this property is not set, no http notification will be sent out by lens server for the query. http://git-wip-us.apache.org/repos/asf/lens/blob/54961853/lens-server/src/test/java/org/apache/lens/server/query/TestQueryNotifictaionResource.java -- diff --git a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryNotifictaionResource.java b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryNotifictaionResource.java index 6a57b20..da1a1c6 100644 --- a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryNotifictaionResource.java +++ b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryNotifictaionResource.java @@ -45,6 +
lens git commit: LENS-1361 : Ignore DB failure while scheduler startup
Repository: lens Updated Branches: refs/heads/master 54961853f -> f274e29d5 LENS-1361 : Ignore DB failure while scheduler startup Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/f274e29d Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/f274e29d Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/f274e29d Branch: refs/heads/master Commit: f274e29d53998f482697bfd8c57a3841b1779abc Parents: 5496185 Author: Lavkesh Lahngir <lavk...@linux.com> Authored: Fri Oct 21 10:33:22 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Fri Oct 21 10:33:22 2016 +0530 -- .../org/apache/lens/server/scheduler/SchedulerDAO.java | 11 ++- .../lens/server/scheduler/SchedulerServiceImpl.java | 6 +- 2 files changed, 11 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/f274e29d/lens-server/src/main/java/org/apache/lens/server/scheduler/SchedulerDAO.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/scheduler/SchedulerDAO.java b/lens-server/src/main/java/org/apache/lens/server/scheduler/SchedulerDAO.java index 69e81c1..5f472fc 100644 --- a/lens-server/src/main/java/org/apache/lens/server/scheduler/SchedulerDAO.java +++ b/lens-server/src/main/java/org/apache/lens/server/scheduler/SchedulerDAO.java @@ -60,8 +60,9 @@ public class SchedulerDAO { this.store.createJobInstanceTable(); this.store.createJobInstanceRunTable(); } catch (SQLException e) { + // If tables are not created, the DAO operations will fail at runtime. + // The APIs will fail with Internal Server Error. log.error("Error creating job tables", e); - throw new LensException("Error creating job tables ", e); } catch (ClassNotFoundException e) { log.error("No class found ", e); throw new LensException("No class found ", e); @@ -239,7 +240,7 @@ public class SchedulerDAO { return store.getAllJobInstances(id.getHandleIdString()); } catch (SQLException e) { log.error("Error while getting instances of a job with id {}", id.getHandleIdString(), e); - return null; + return new ArrayList<>(); } } @@ -258,7 +259,7 @@ public class SchedulerDAO { return store.getJobs(username, jobStates == null ? new SchedulerJobState[] {} : jobStates, startTime, endTime); } catch (SQLException e) { log.error("Error while getting jobs ", e); - return null; + return new ArrayList<>(); } } @@ -273,7 +274,7 @@ public class SchedulerDAO { return store.getJobsByName(jobName); } catch (SQLException e) { log.error("Error while getting jobs ", e); - return null; + return new ArrayList<>(); } } @@ -288,7 +289,7 @@ public class SchedulerDAO { return store.getInstanceRuns(states); } catch (SQLException e) { log.error("Error while getting jobs ", e); - return null; + return new ArrayList<>(); } } http://git-wip-us.apache.org/repos/asf/lens/blob/f274e29d/lens-server/src/main/java/org/apache/lens/server/scheduler/SchedulerServiceImpl.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/scheduler/SchedulerServiceImpl.java b/lens-server/src/main/java/org/apache/lens/server/scheduler/SchedulerServiceImpl.java index 00130d0..73277de 100644 --- a/lens-server/src/main/java/org/apache/lens/server/scheduler/SchedulerServiceImpl.java +++ b/lens-server/src/main/java/org/apache/lens/server/scheduler/SchedulerServiceImpl.java @@ -81,6 +81,7 @@ public class SchedulerServiceImpl extends BaseLensService implements SchedulerSe private AlarmService alarmService; private int maxJobsPerUser = LensConfConstants.DEFAULT_MAX_SCHEDULED_JOB_PER_USER; + private boolean healthy = true; /** * Instantiates a new scheduler service. @@ -105,6 +106,7 @@ public class SchedulerServiceImpl extends BaseLensService implements SchedulerSe getEventService().addListenerForType(schedulerQueryEventListener, QueryEnded.class); } catch (LensException e) { log.error("Error Initialising Scheduler-service", e); + healthy = false; } } @@ -126,7 +128,6 @@ public class SchedulerServiceImpl extends BaseLensService implements SchedulerSe */ @Override public synchronized void start() { -super.start(); List instanceRuns = schedulerDAO .getInstanceRuns(SchedulerJobInstanceState.WAITING, SchedulerJobInstanceState.LAUNCHED, Schedule
lens git commit: LENS-1342 : Close InputStreamReader in PropertyBasedUserConfigLoader
Repository: lens Updated Branches: refs/heads/master 95a4f596c -> d1a0e0e26 LENS-1342 : Close InputStreamReader in PropertyBasedUserConfigLoader Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/d1a0e0e2 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/d1a0e0e2 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/d1a0e0e2 Branch: refs/heads/master Commit: d1a0e0e266b5f7ffd0ad1d5b742fb92e4a91eeb3 Parents: 95a4f59 Author: Ted Yu <yuzhih...@gmail.com> Authored: Thu Nov 3 10:40:13 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Thu Nov 3 10:40:13 2016 +0530 -- .../apache/lens/server/user/PropertyBasedUserConfigLoader.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/d1a0e0e2/lens-server/src/main/java/org/apache/lens/server/user/PropertyBasedUserConfigLoader.java -- diff --git a/lens-server/src/main/java/org/apache/lens/server/user/PropertyBasedUserConfigLoader.java b/lens-server/src/main/java/org/apache/lens/server/user/PropertyBasedUserConfigLoader.java index 1c025dd..632f71c 100644 --- a/lens-server/src/main/java/org/apache/lens/server/user/PropertyBasedUserConfigLoader.java +++ b/lens-server/src/main/java/org/apache/lens/server/user/PropertyBasedUserConfigLoader.java @@ -52,8 +52,8 @@ public class PropertyBasedUserConfigLoader implements UserConfigLoader { throw new UserConfigLoaderException("property file path not provided for property based resolver." + "Please set property " + LensConfConstants.USER_RESOLVER_PROPERTYBASED_FILENAME); } -try { - properties.load(new InputStreamReader(new FileInputStream(new File(filename)), "UTF-8")); +try (InputStreamReader reader = new InputStreamReader(new FileInputStream(new File(filename)), "UTF-8")) { + properties.load(reader); } catch (IOException e) { throw new UserConfigLoaderException("property file not found. Provided path was: " + filename); }
lens git commit: LENS-1410 : Make the filter while getting a list of partitions mandatory
Repository: lens Updated Branches: refs/heads/master cf944c10c -> de8f2ec6f LENS-1410 : Make the filter while getting a list of partitions mandatory Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/de8f2ec6 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/de8f2ec6 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/de8f2ec6 Branch: refs/heads/master Commit: de8f2ec6fa812d7d34e8d882c621f0215abe777d Parents: cf944c1 Author: Lavkesh Lahngir <lavk...@linux.com> Authored: Thu Apr 20 16:06:13 2017 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Thu Apr 20 16:06:13 2017 +0530 -- lens-api/src/main/resources/lens-errors.conf| 7 .../lens/cli/commands/LensFactCommands.java | 2 +- .../apache/lens/cli/TestLensFactCommands.java | 14 ++-- .../lens/cube/error/LensCubeErrorCode.java | 3 +- .../server/metastore/MetastoreResource.java | 4 +++ .../server/metastore/TestMetastoreService.java | 35 6 files changed, 53 insertions(+), 12 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/de8f2ec6/lens-api/src/main/resources/lens-errors.conf -- diff --git a/lens-api/src/main/resources/lens-errors.conf b/lens-api/src/main/resources/lens-errors.conf index 94505ef..236d678 100644 --- a/lens-api/src/main/resources/lens-errors.conf +++ b/lens-api/src/main/resources/lens-errors.conf @@ -365,6 +365,13 @@ lensCubeErrorsForMetastore = [ httpStatusCode = ${NOT_FOUND} errorMsg = "%s %s Not found." } + + { +errorCode = 3105 +httpStatusCode = ${BAD_REQUEST} +errorMsg = "Partition filter can not be null or empty" + } + ] lensDriverErrors = [ http://git-wip-us.apache.org/repos/asf/lens/blob/de8f2ec6/lens-cli/src/main/java/org/apache/lens/cli/commands/LensFactCommands.java -- diff --git a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensFactCommands.java b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensFactCommands.java index 9ea887a..a01d6c0 100644 --- a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensFactCommands.java +++ b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensFactCommands.java @@ -191,7 +191,7 @@ public class LensFactCommands extends LogicalTableCrudCommand { public String getAllPartitionsOfFact( @CliOption(key = {"", "fact_name"}, mandatory = true, help = "") String tableName, @CliOption(key = {"", "storage_name"}, mandatory = true, help = "") String storageName, -@CliOption(key = {"", "filter"}, mandatory = false, help = "") String filter) { +@CliOption(key = {"", "filter"}, mandatory = true, help = "") String filter) { return getAllPartitions(tableName, storageName, filter); } http://git-wip-us.apache.org/repos/asf/lens/blob/de8f2ec6/lens-cli/src/test/java/org/apache/lens/cli/TestLensFactCommands.java -- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensFactCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensFactCommands.java index f176078..d31e25c 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensFactCommands.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensFactCommands.java @@ -23,6 +23,7 @@ import static org.testng.Assert.*; import java.io.*; import java.net.URISyntaxException; import java.net.URL; +import java.util.Calendar; import java.util.List; import javax.ws.rs.NotFoundException; @@ -30,6 +31,7 @@ import javax.ws.rs.NotFoundException; import org.apache.lens.cli.commands.LensCubeCommands; import org.apache.lens.cli.commands.LensFactCommands; import org.apache.lens.client.LensClient; +import org.apache.lens.cube.metadata.UpdatePeriod; import org.testng.annotations.AfterTest; import org.testng.annotations.Test; @@ -241,7 +243,10 @@ public class TestLensFactCommands extends LensCliApplicationTest { private void testFactPartitionActions() throws URISyntaxException { LensFactCommands command = getCommand(); verifyEmptyTimelines(); -assertTrue(command.getAllPartitionsOfFact("fact1", FACT_LOCAL, null).trim().isEmpty()); +Calendar cal = Calendar.getInstance(); +cal.set(2000, 01, 01); +String filter = "dt>'" + UpdatePeriod.HOURLY.format(cal.getTime()) + "'"; +assertTrue(command.getAllPartitionsOfFact("fact1", FACT_LOCAL, filter).trim().isEmpty()); String singlePartPath = new File( TestLensFactCo
lens git commit: LENS-1393 : Upgrade javax mail version
Repository: lens Updated Branches: refs/heads/master ae83caae5 -> b94fc5be3 LENS-1393 : Upgrade javax mail version Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/b94fc5be Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/b94fc5be Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/b94fc5be Branch: refs/heads/master Commit: b94fc5be3f3338db2200b068a2d92e02b2dfddf5 Parents: ae83caa Author: Lavkesh Lahngir <lavk...@linux.com> Authored: Tue Apr 18 11:47:08 2017 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Tue Apr 18 11:47:08 2017 +0530 -- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/b94fc5be/pom.xml -- diff --git a/pom.xml b/pom.xml index f1b72a0..4b1974b 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ 2.5 2.0.1 2.2.12 -1.4 +1.4.7 2.6.0
lens git commit: LENS-1409 : Remove Unknown.log file before lens startup
Repository: lens Updated Branches: refs/heads/master b94fc5be3 -> f8a387917 LENS-1409 : Remove Unknown.log file before lens startup Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/f8a38791 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/f8a38791 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/f8a38791 Branch: refs/heads/master Commit: f8a3879172c923d5ceac76c3d853b77eea002ca9 Parents: b94fc5b Author: Lavkesh Lahngir <lavk...@linux.com> Authored: Tue Apr 18 11:54:31 2017 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Tue Apr 18 11:54:31 2017 +0530 -- tools/conf/server/logback.xml | 2 +- tools/scripts/lens-ctl| 6 +- 2 files changed, 6 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/f8a38791/tools/conf/server/logback.xml -- diff --git a/tools/conf/server/logback.xml b/tools/conf/server/logback.xml index 5173321..4f98529 100644 --- a/tools/conf/server/logback.xml +++ b/tools/conf/server/logback.xml @@ -100,7 +100,7 @@ queryLogId - unknown + ${query.log.default.id} http://git-wip-us.apache.org/repos/asf/lens/blob/f8a38791/tools/scripts/lens-ctl -- diff --git a/tools/scripts/lens-ctl b/tools/scripts/lens-ctl index 6e1d363..304b4f5 100755 --- a/tools/scripts/lens-ctl +++ b/tools/scripts/lens-ctl @@ -136,7 +136,7 @@ start() { mkdir -p $LENS_LOG_DIR - JAVA_PROPERTIES="${JAVA_PROPERTIES} $LENS_OPTS $LENS_PROPERTIES -Dlens.log.dir=$LENS_LOG_DIR -Dlens.home=${LENS_HOME_DIR} -Dconfig.location=$LENS_CONF" + JAVA_PROPERTIES="${JAVA_PROPERTIES} $LENS_OPTS $LENS_PROPERTIES -Dlens.log.dir=$LENS_LOG_DIR -Dlens.home=${LENS_HOME_DIR} -Dconfig.location=$LENS_CONF -Dquery.log.default.id=unknown" shift while [[ ${1} =~ ^\-D ]]; do @@ -144,6 +144,10 @@ start() { shift done + queryLogIDFile="${LENS_LOG_DIR}/unknown.log" + if [ -f "$queryLogIDFile" ] ; then + rm "$queryLogIDFile" + fi if [ -n "$opt_verbose" ] ; then JAVA_PROPERTIES="-Dlensserver.root.logger=INFO,CONSOLE -Dlensserver.request.logger=INFO,CONSOLE ${JAVA_PROPERTIES}" ${JAVA_BIN} ${JAVA_PROPERTIES} -cp ${LENSCPPATH} org.apache.lens.server.LensServer $*
lens git commit: LENS-1391 : Fix pending review comments on MaxCoveringFactResolver and LeastPartitionResolver
Repository: lens Updated Branches: refs/heads/master f8a387917 -> c4cd6d84e LENS-1391 : Fix pending review comments on MaxCoveringFactResolver and LeastPartitionResolver Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/c4cd6d84 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/c4cd6d84 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/c4cd6d84 Branch: refs/heads/master Commit: c4cd6d84ec533d84c24717591c890972f5d858cb Parents: f8a3879 Author: Lavkesh Lahngir <lavk...@linux.com> Authored: Wed Apr 19 11:05:57 2017 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Wed Apr 19 11:05:57 2017 +0530 -- .../lens/cli/commands/LensSchemaCommands.java | 12 +- .../cube/parse/CandidateTablePruneCause.java| 7 ++ .../lens/cube/parse/LeastPartitionResolver.java | 15 +++-- .../cube/parse/MaxCoveringFactResolver.java | 23 ++-- .../lens/cube/parse/StorageCandidate.java | 5 +++-- .../server/query/QueryAPIErrorResponseTest.java | 2 +- 6 files changed, 22 insertions(+), 42 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/c4cd6d84/lens-cli/src/main/java/org/apache/lens/cli/commands/LensSchemaCommands.java -- diff --git a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensSchemaCommands.java b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensSchemaCommands.java index befe4e6..d3f9142 100644 --- a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensSchemaCommands.java +++ b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensSchemaCommands.java @@ -20,19 +20,11 @@ package org.apache.lens.cli.commands; import java.io.File; import java.io.FilenameFilter; -import java.util.List; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; -import org.apache.lens.api.metastore.SchemaTraverser; -import org.apache.lens.api.metastore.XBaseCube; -import org.apache.lens.api.metastore.XDerivedCube; -import org.apache.lens.api.metastore.XDimension; -import org.apache.lens.api.metastore.XDimensionTable; -import org.apache.lens.api.metastore.XFactTable; -import org.apache.lens.api.metastore.XSegmentation; -import org.apache.lens.api.metastore.XStorage; +import org.apache.lens.api.metastore.*; import org.apache.lens.cli.commands.annotations.UserDocumentation; import org.springframework.beans.factory.annotation.Autowired; @@ -42,9 +34,7 @@ import org.springframework.shell.core.annotation.CliCommand; import org.springframework.shell.core.annotation.CliOption; import org.springframework.shell.support.logging.HandlerUtils; import org.springframework.stereotype.Component; -import org.springframework.util.Assert; -import com.google.common.collect.Lists; import com.google.common.collect.Maps; @Component http://git-wip-us.apache.org/repos/asf/lens/blob/c4cd6d84/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java index 1c0d356..29af419 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java @@ -235,6 +235,7 @@ public class CandidateTablePruneCause { // if a time dim is not supported by the fact. Would be set if and only if // the fact is not partitioned by part col of the time dim and time dim is not a dim attribute private Set unsupportedTimeDims; + private MaxCoveringFactResolver.TimeCovered maxTimeCovered; // time covered // ranges in which fact is invalid private List invalidRanges; @@ -295,6 +296,12 @@ public class CandidateTablePruneCause { return cause; } + public static CandidateTablePruneCause lessData(MaxCoveringFactResolver.TimeCovered timeCovered) { +CandidateTablePruneCause cause = new CandidateTablePruneCause(LESS_DATA); +cause.setMaxTimeCovered(timeCovered); +return cause; + } + public static CandidateTablePruneCause noColumnPartOfAJoinPath(final Collection colSet) { CandidateTablePruneCause cause = new CandidateTablePruneCause(NO_COLUMN_PART_OF_A_JOIN_PATH); http://git-wip-us.apache.org/repos/asf/lens/blob/c4cd6d84/lens-cube/src/main/java/org/apache/lens/cube/parse/LeastPartitionResolver.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/LeastPartitionResolver.java b/lens-cube/src/main/java/org/apache/
lens git commit: LENS-1405 : Add xsd for virtual fact
Repository: lens Updated Branches: refs/heads/master c4cd6d84e -> cf944c10c LENS-1405 : Add xsd for virtual fact Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/cf944c10 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/cf944c10 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/cf944c10 Branch: refs/heads/master Commit: cf944c10c7fe68c151e2967612864251a72814ef Parents: c4cd6d8 Author: Rajitha R <rajitha@gmail.com> Authored: Wed Apr 19 12:11:22 2017 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Wed Apr 19 12:11:22 2017 +0530 -- lens-api/src/main/resources/cube-0.1.xsd| 70 .../src/main/resources/virtualfact1.xml | 27 2 files changed, 97 insertions(+) -- http://git-wip-us.apache.org/repos/asf/lens/blob/cf944c10/lens-api/src/main/resources/cube-0.1.xsd -- diff --git a/lens-api/src/main/resources/cube-0.1.xsd b/lens-api/src/main/resources/cube-0.1.xsd index 1d8a624..68ccc13 100644 --- a/lens-api/src/main/resources/cube-0.1.xsd +++ b/lens-api/src/main/resources/cube-0.1.xsd @@ -168,6 +168,76 @@ + + + + +Virtual fact extends fact. It can override the cube of its source fact. It can have different +properties associated with it than its source. +Properties that can be set for a virtual fact are : +- Filters which would be added in query rewriting + + + + + + + Properties that can be set for a virtual fact are + 1. cube.fact.query.where.filter : filter string that needs to be added in WHERE clause. This string would be added as an additional + filter when the query is being constructed in the cube query writing phase. + 2. cube.fact.absolute.start.time: start time of the fact. For queries that ask for time before this, + this fact is not a candidate. Time format can be as you would specify in the time_range_in clause. + i.e. [-mm[-dd[-hh[:MM[:ss[,SSS]] + 3. cube.fact.relative.start.time: Here you can specify fact's relative validity relative to current time. + Useful if you want to specify e.g. this fact is valid for today - 90 days. Can be specified as just + a time difference e.g. "-90 days". Or can be specified in relative syntax. + e.g. now.year or now.day - 6 hour etc. + 4. cube.fact.absolute.end.time: If you're deprecating this fact, put the final date till which the data of + the fact will be valid here. Format same as absolute start time. + 5. cube.fact.relative.end.time: You can specify the end date for fact table + relative to current date e.g. fact table is valid for next 90days starting from today. + This can be specified as just a time difference e.g. "+90 days" + + + + + + + + + The Source fact name over which the Virtual fact is defined. + + + + + + + The base cube's name to which the Virtual fact is associated. + + + + + + + The virtual fact table name. + + + + + + + The weight of the fact table. LENS will use this attribute to decide the lightest table to query when there + are more than one eligible tables. If not defined, the source fact weight would be picked up. + + + + + + + + + + http://git-wip-us.apache.org/repos/asf/lens/blob/cf944c10/lens-examples/src/main/resources/virtualfact1.xml -- diff --git a/lens-examples/src/main/resources/virtualfact1.xml b/lens-examples/src/main/resources/virtualfact1.xml new file mode 100644 index 000..c89a9c5 --- /dev/null +++ b/lens-examples/src/main/resources/virtualfact1.xml @@ -0,0 +1,27 @@ + + +http://www.w3.org/2001/XMLSchema-instance; xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> + + + +
lens git commit: LENS-1450 : Fix duplicate filters in query writing
Repository: lens Updated Branches: refs/heads/master 3da3bce4b -> 6c40b24ff LENS-1450 : Fix duplicate filters in query writing Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/6c40b24f Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/6c40b24f Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/6c40b24f Branch: refs/heads/master Commit: 6c40b24ffa8ff66b448a4f61054fb3897cffdd6a Parents: 3da3bce Author: Rajitha R <rajitha@gmail.com> Authored: Mon Aug 7 17:29:26 2017 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Aug 7 17:29:26 2017 +0530 -- .../java/org/apache/lens/cube/parse/CubeQueryContext.java | 3 ++- .../java/org/apache/lens/cube/parse/TestCubeRewriter.java | 10 +- 2 files changed, 11 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/6c40b24f/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 b5330a7..8b9583a 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 @@ -1169,7 +1169,8 @@ public class CubeQueryContext extends TracksQueriedColumns implements QueryAST, } } } else if (node.getParent() == null -&& node.getToken().getType() != HiveParser.KW_AND) { +&& 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)); } http://git-wip-us.apache.org/repos/asf/lens/blob/6c40b24f/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java -- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java index 1c75e6c..bc0fa2e 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java @@ -509,8 +509,16 @@ public class TestCubeRewriter extends TestQueryRewrite { conf.setBoolean(DISABLE_AUTO_JOINS, false); conf.setBoolean(REWRITE_DIM_FILTER_TO_FACT_FILTER, true); +// No filter +String hql = rewrite("select cityid , msr2 from testCube where " + TWO_DAYS_RANGE, conf); + +String expectedQuery = getExpectedQuery(TEST_CUBE_NAME, "select (testcube.cityid) as `cityid`, " ++ "sum((testcube.msr2)) as `msr2` from ", null, "group by testcube.cityid", + getWhereForHourly2days(TEST_CUBE_NAME, "c3_testfact2_raw")); +compareQueries(expectedQuery, hql); + // filter with = -String hql = rewrite( +hql = rewrite( "select cubecountry.name, msr2 from" + " testCube" + " where cubecountry.region = 'asia' and " + TWO_DAYS_RANGE, conf); String filterSubquery = "testcube.countryid in ( select id from TestQueryRewrite.c3_countrytable_partitioned "
[3/3] lens git commit: LENS-1412 : Add capability to define virtual facts in a cube
LENS-1412 : Add capability to define virtual facts in a cube Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/5de45e0f Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/5de45e0f Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/5de45e0f Branch: refs/heads/master Commit: 5de45e0f8212c2e03eaf9886b720e13868a1c42a Parents: 34500f1 Author: Rajitha R <rajitha@gmail.com> Authored: Tue Jun 6 13:59:58 2017 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Tue Jun 6 13:59:58 2017 +0530 -- .../lens/api/metastore/SchemaTraverser.java | 1 + lens-api/src/main/resources/cube-0.1.xsd| 176 +++ lens-api/src/main/resources/lens-errors.conf| 6 + .../lens/cli/commands/LensFactCommands.java | 6 +- .../lens/cli/commands/LensSchemaCommands.java | 18 +- .../apache/lens/cli/TestLensFactCommands.java | 132 +- .../apache/lens/cli/TestLensSchemaCommands.java | 2 +- .../schema/cubes/base/virtual-cube.xml | 30 ++ .../resources/schema/facts/virtual_fact.xml | 28 ++ .../java/org/apache/lens/client/LensClient.java | 2 +- .../apache/lens/client/LensMetadataClient.java | 18 +- .../lens/cube/error/LensCubeErrorCode.java | 3 +- .../lens/cube/metadata/AbstractCubeTable.java | 22 +- .../lens/cube/metadata/CubeFactTable.java | 52 ++- .../lens/cube/metadata/CubeMetastoreClient.java | 463 ++- .../cube/metadata/CubeVirtualFactTable.java | 186 .../apache/lens/cube/metadata/FactTable.java| 166 +++ .../apache/lens/cube/metadata/JAXBUtils.java| 24 +- .../lens/cube/metadata/MetastoreConstants.java | 2 + .../lens/cube/metadata/MetastoreUtil.java | 26 +- .../apache/lens/cube/metadata/Segmentation.java | 13 +- .../org/apache/lens/cube/parse/Candidate.java | 8 +- .../lens/cube/parse/CandidateTableResolver.java | 11 +- .../lens/cube/parse/StorageCandidate.java | 55 +-- .../cube/parse/StorageCandidateHQLContext.java | 12 +- .../lens/cube/parse/StorageTableResolver.java | 5 +- .../lens/cube/metadata/CubeFactTableTest.java | 12 +- .../cube/metadata/TestCubeMetastoreClient.java | 123 - .../apache/lens/cube/parse/CubeTestSetup.java | 40 +- .../lens/cube/parse/TestCubeRewriter.java | 16 + .../parse/TestCubeSegmentationRewriter.java | 15 +- .../lens/cube/parse/TestUnionQueries.java | 2 +- .../resources/schema/cubes/base/virtualcube.xml | 36 ++ .../test/resources/schema/facts/virtualfact.xml | 27 ++ lens-driver-es/pom.xml | 3 +- lens-examples/pom.xml | 3 +- .../src/test/resources/yaml/fact1.yaml | 4 +- .../src/test/resources/yaml/fact2.yaml | 4 +- .../src/test/resources/yaml/rawfact.yaml| 4 +- .../yaml/sales-aggr-continuous-fact.yaml| 4 +- .../test/resources/yaml/sales-aggr-fact1.yaml | 4 +- .../test/resources/yaml/sales-aggr-fact2.yaml | 4 +- .../src/test/resources/yaml/sales-raw-fact.yaml | 4 +- .../api/metastore/CubeMetastoreService.java | 8 +- lens-server/pom.xml | 2 +- .../metastore/CubeMetastoreServiceImpl.java | 24 +- .../server/metastore/MetastoreResource.java | 17 +- .../lens/server/common/RestAPITestUtil.java | 7 +- .../server/metastore/TestMetastoreService.java | 274 ++- src/site/apt/user/cli.apt | 3 +- tools/scripts/generate-site-public.sh | 2 +- 51 files changed, 1646 insertions(+), 463 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/5de45e0f/lens-api/src/main/java/org/apache/lens/api/metastore/SchemaTraverser.java -- diff --git a/lens-api/src/main/java/org/apache/lens/api/metastore/SchemaTraverser.java b/lens-api/src/main/java/org/apache/lens/api/metastore/SchemaTraverser.java index 9564443..09c848a 100644 --- a/lens-api/src/main/java/org/apache/lens/api/metastore/SchemaTraverser.java +++ b/lens-api/src/main/java/org/apache/lens/api/metastore/SchemaTraverser.java @@ -42,6 +42,7 @@ public class SchemaTraverser implements Runnable { types.put("cubes/derived", XDerivedCube.class); types.put("dimensions", XDimension.class); types.put("facts", XFactTable.class); +types.put("facts/virtual", XVirtualFactTable.class); types.put("dimtables", XDimensionTable.class); types.put("dimensiontables", XDimensionTable.class); types.put("dimensiontables", XDimensionTable.class); http://git-wip-us.apache.org/repos/asf/lens/blob/5de45e0f/lens-api/src/main/resources/cube-0.1.xsd ---
[2/3] lens git commit: LENS-1412 : Add capability to define virtual facts in a cube
http://git-wip-us.apache.org/repos/asf/lens/blob/5de45e0f/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactTable.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactTable.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactTable.java new file mode 100644 index 000..f87cf44 --- /dev/null +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactTable.java @@ -0,0 +1,166 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.lens.cube.metadata; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.hadoop.hive.metastore.api.FieldSchema; + +/** + * The Fact table interface + */ +public interface FactTable extends Named { + + /** + * Get map of storage to update period mapping + * + * @return Map of storage to set of update periods + */ + public MapgetUpdatePeriods(); + + /** + * Cube to which this fact belongs to + * + * @return the cube string + */ + public String getCubeName(); + + /** + * The set of Storage names + * + * @return set of strings + */ + public Set getStorages(); + + /** + *The type of the fact + * + * @return table type {@link CubeTableType} + */ + public CubeTableType getTableType(); + + /** + * Config properties + * + * @return map of string, string + */ + public Map getProperties(); + + /** + * Valid columns of the fact + * + * @return list of column names + */ + public Set getValidColumns(); + + /** + * Weight of the fact + * + * @return weight of the fact in double + */ + public double weight(); + + /** + * Set of all the columns names of the fact + * + * @return set of column names + */ + public Set getAllFieldNames(); + + /** + *tag for checking data completeness + * + * @return Tag String + */ + public String getDataCompletenessTag(); + + /** + * List of columns of the fact + * + * @return set of {@link FieldSchema} + */ + public List getColumns(); + + /** + * Is Aggregated Fact + * + * @return true if fact is Aggregated , false otherwise + */ + public boolean isAggregated(); + + /** + * Absolute start time of the fact + * + * @return Absolute Start time of the fact {@link Date} + */ + public Date getAbsoluteStartTime(); + + /** + * Relative start time of the fact + * + * @return Relative Start time of the fact {@link Date} + */ + public Date getRelativeStartTime(); + + /** + * Start time of the fact + * + * @return Start time of the fact {@link Date} + */ + public Date getStartTime(); + + /** + * Absolute end time of the fact + * + * @return Absolute End time of the fact {@link Date} + */ + public Date getAbsoluteEndTime(); + + /** + * Relative End time of the Fact + * + * @return Relative end time of the fact {@link Date} + */ + public Date getRelativeEndTime(); + + /** + * End time of the fact + * + * @return End time of the fact {@link Date} + */ + public Date getEndTime(); + + /** + * Is Virtual Fact + * + * @return true if fact is a virtual fact, false otherwise + */ + public boolean isVirtualFact(); + + /** + * Storage name of the fact + * + * @return Storage name of the fact + */ + public String getSourceFactName(); + +} http://git-wip-us.apache.org/repos/asf/lens/blob/5de45e0f/lens-cube/src/main/java/org/apache/lens/cube/metadata/JAXBUtils.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/JAXBUtils.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/JAXBUtils.java index e1e3d16..7dfb166 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/JAXBUtils.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/JAXBUtils.java @@ -718,6 +718,15 @@ public final class JAXBUtils { mapFromXProperties(fact.getProperties()), storageTablePrefixMap); } + public static CubeVirtualFactTable cubeVirtualFactFromFactTable(XVirtualFactTable fact, FactTable sourceFactTable) +
[2/3] lens git commit: LENS-1412 : Add capability to define virtual facts in a cube
http://git-wip-us.apache.org/repos/asf/lens/blob/27ad9aa8/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactTable.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactTable.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactTable.java new file mode 100644 index 000..f87cf44 --- /dev/null +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/FactTable.java @@ -0,0 +1,166 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.lens.cube.metadata; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.hadoop.hive.metastore.api.FieldSchema; + +/** + * The Fact table interface + */ +public interface FactTable extends Named { + + /** + * Get map of storage to update period mapping + * + * @return Map of storage to set of update periods + */ + public MapgetUpdatePeriods(); + + /** + * Cube to which this fact belongs to + * + * @return the cube string + */ + public String getCubeName(); + + /** + * The set of Storage names + * + * @return set of strings + */ + public Set getStorages(); + + /** + *The type of the fact + * + * @return table type {@link CubeTableType} + */ + public CubeTableType getTableType(); + + /** + * Config properties + * + * @return map of string, string + */ + public Map getProperties(); + + /** + * Valid columns of the fact + * + * @return list of column names + */ + public Set getValidColumns(); + + /** + * Weight of the fact + * + * @return weight of the fact in double + */ + public double weight(); + + /** + * Set of all the columns names of the fact + * + * @return set of column names + */ + public Set getAllFieldNames(); + + /** + *tag for checking data completeness + * + * @return Tag String + */ + public String getDataCompletenessTag(); + + /** + * List of columns of the fact + * + * @return set of {@link FieldSchema} + */ + public List getColumns(); + + /** + * Is Aggregated Fact + * + * @return true if fact is Aggregated , false otherwise + */ + public boolean isAggregated(); + + /** + * Absolute start time of the fact + * + * @return Absolute Start time of the fact {@link Date} + */ + public Date getAbsoluteStartTime(); + + /** + * Relative start time of the fact + * + * @return Relative Start time of the fact {@link Date} + */ + public Date getRelativeStartTime(); + + /** + * Start time of the fact + * + * @return Start time of the fact {@link Date} + */ + public Date getStartTime(); + + /** + * Absolute end time of the fact + * + * @return Absolute End time of the fact {@link Date} + */ + public Date getAbsoluteEndTime(); + + /** + * Relative End time of the Fact + * + * @return Relative end time of the fact {@link Date} + */ + public Date getRelativeEndTime(); + + /** + * End time of the fact + * + * @return End time of the fact {@link Date} + */ + public Date getEndTime(); + + /** + * Is Virtual Fact + * + * @return true if fact is a virtual fact, false otherwise + */ + public boolean isVirtualFact(); + + /** + * Storage name of the fact + * + * @return Storage name of the fact + */ + public String getSourceFactName(); + +} http://git-wip-us.apache.org/repos/asf/lens/blob/27ad9aa8/lens-cube/src/main/java/org/apache/lens/cube/metadata/JAXBUtils.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/JAXBUtils.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/JAXBUtils.java index e1e3d16..7dfb166 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/JAXBUtils.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/JAXBUtils.java @@ -718,6 +718,15 @@ public final class JAXBUtils { mapFromXProperties(fact.getProperties()), storageTablePrefixMap); } + public static CubeVirtualFactTable cubeVirtualFactFromFactTable(XVirtualFactTable fact, FactTable sourceFactTable) +
[1/3] lens git commit: LENS-1412 : Add capability to define virtual facts in a cube
Repository: lens Updated Branches: refs/heads/master 34500f1b3 -> 5de45e0f8 http://git-wip-us.apache.org/repos/asf/lens/blob/5de45e0f/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java -- diff --git a/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java b/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java index 6d32d23..ab24033 100644 --- a/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java +++ b/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java @@ -1856,6 +1856,24 @@ public class TestMetastoreService extends LensJerseyTest { return f; } + + private XVirtualFactTable createVirtualFactTable(String factName, String sourceFactName) { +return createVirtualFactTable(factName, "testCube", sourceFactName); + } + + private XVirtualFactTable createVirtualFactTable(String factName, final String cubeName, String sourceFactName) { +XVirtualFactTable f = cubeObjectFactory.createXVirtualFactTable(); +f.setProperties(new XProperties()); +f.setName(factName); +f.setWeight(10.0); +f.setCubeName(cubeName); +f.setSourceFactName(sourceFactName); + +Mapproperties = LensUtil.getHashMap("foo1", "bar1"); + f.getProperties().getProperty().addAll(JAXBUtils.xPropertiesFromMap(properties)); +return f; + } + @Test(dataProvider = "mediaTypeData") public void testCreateFactTableWithMultipleUpdatePeriods(MediaType mediaType) throws Exception { @@ -1877,7 +1895,7 @@ public class TestMetastoreService extends LensJerseyTest { .add(createStorageTblWithMultipleTableDescriptors("S1", tables, updatePeriods)); APIResult result = target().path("metastore").path("facts").queryParam("sessionid", lensSessionId) .request(mediaType) -.post(Entity.entity(new GenericEntity (cubeObjectFactory.createXFactTable(f)) { +.post(Entity.entity(new GenericEntity (cubeObjectFactory.createXFact(f)) { }, mediaType), APIResult.class); assertSuccess(result); @@ -1886,10 +1904,10 @@ public class TestMetastoreService extends LensJerseyTest { assertTrue(factNames.getElements().contains(table.toLowerCase())); // Get the created tables - JAXBElement gotFactElement = target().path("metastore/facts").path(table) -.queryParam("sessionid", lensSessionId).request(mediaType).get(new GenericType () { + JAXBElement gotFactElement = target().path("metastore/facts").path(table) +.queryParam("sessionid", lensSessionId).request(mediaType).get(new GenericType () { }); - XFactTable gotFact = gotFactElement.getValue(); + XFactTable gotFact = (XFactTable) gotFactElement.getValue(); assertTrue(gotFact.getName().equalsIgnoreCase(table)); assertEquals(gotFact.getWeight(), 10.0); @@ -1915,15 +1933,15 @@ public class TestMetastoreService extends LensJerseyTest { // Update result = target().path("metastore").path("facts").path(table).queryParam("sessionid", lensSessionId) .request(mediaType) -.put(Entity.entity(new GenericEntity (cubeObjectFactory.createXFactTable(update)) { +.put(Entity.entity(new GenericEntity (cubeObjectFactory.createXFact(update)) { }, mediaType), APIResult.class); assertSuccess(result); // Get the updated table gotFactElement = target().path("metastore/facts").path(table).queryParam("sessionid", lensSessionId) -.request(mediaType).get(new GenericType () { +.request(mediaType).get(new GenericType () { }); - gotFact = gotFactElement.getValue(); + gotFact = (XFactTable) gotFactElement.getValue(); CubeFactTable ucf = JAXBUtils.cubeFactFromFactTable(gotFact); assertEquals(ucf.weight(), 20.0); assertTrue(ucf.getUpdatePeriods().get("S1").contains(HOURLY)); @@ -2032,6 +2050,7 @@ public class TestMetastoreService extends LensJerseyTest { @Test(dataProvider = "mediaTypeData") public void testCreateFactTable(MediaType mediaType) throws Exception { + final String table = "testCreateFactTable"; final String DB = dbPFX + "testCreateFactTable_DB" + mediaType.getSubtype(); String prevDb = getCurrentDatabase(mediaType); @@ -2049,7 +2068,7 @@ public class TestMetastoreService extends LensJerseyTest { .path("facts").queryParam("sessionid", lensSessionId) .request(mediaType) .post(Entity.entity( - new GenericEntity (cubeObjectFactory.createXFactTable(f)){}, mediaType), + new GenericEntity (cubeObjectFactory.createXFact(f)){}, mediaType), APIResult.class); assertSuccess(result); @@
[3/3] lens git commit: LENS-1412 : Add capability to define virtual facts in a cube
LENS-1412 : Add capability to define virtual facts in a cube Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/27ad9aa8 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/27ad9aa8 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/27ad9aa8 Branch: refs/heads/current-release-line Commit: 27ad9aa8f27082a8ac6d82cbf91fff80b43ab689 Parents: 7c1171c Author: Rajitha R <rajitha@gmail.com> Authored: Tue Jun 6 13:59:58 2017 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Tue Jun 6 14:01:49 2017 +0530 -- .../lens/api/metastore/SchemaTraverser.java | 1 + lens-api/src/main/resources/cube-0.1.xsd| 176 +++ lens-api/src/main/resources/lens-errors.conf| 6 + .../lens/cli/commands/LensFactCommands.java | 6 +- .../lens/cli/commands/LensSchemaCommands.java | 18 +- .../apache/lens/cli/TestLensFactCommands.java | 132 +- .../apache/lens/cli/TestLensSchemaCommands.java | 2 +- .../schema/cubes/base/virtual-cube.xml | 30 ++ .../resources/schema/facts/virtual_fact.xml | 28 ++ .../java/org/apache/lens/client/LensClient.java | 2 +- .../apache/lens/client/LensMetadataClient.java | 18 +- .../lens/cube/error/LensCubeErrorCode.java | 3 +- .../lens/cube/metadata/AbstractCubeTable.java | 22 +- .../lens/cube/metadata/CubeFactTable.java | 52 ++- .../lens/cube/metadata/CubeMetastoreClient.java | 463 ++- .../cube/metadata/CubeVirtualFactTable.java | 186 .../apache/lens/cube/metadata/FactTable.java| 166 +++ .../apache/lens/cube/metadata/JAXBUtils.java| 24 +- .../lens/cube/metadata/MetastoreConstants.java | 2 + .../lens/cube/metadata/MetastoreUtil.java | 26 +- .../apache/lens/cube/metadata/Segmentation.java | 13 +- .../org/apache/lens/cube/parse/Candidate.java | 8 +- .../lens/cube/parse/CandidateTableResolver.java | 11 +- .../lens/cube/parse/StorageCandidate.java | 55 +-- .../cube/parse/StorageCandidateHQLContext.java | 12 +- .../lens/cube/parse/StorageTableResolver.java | 5 +- .../lens/cube/metadata/CubeFactTableTest.java | 12 +- .../cube/metadata/TestCubeMetastoreClient.java | 123 - .../apache/lens/cube/parse/CubeTestSetup.java | 40 +- .../lens/cube/parse/TestCubeRewriter.java | 16 + .../parse/TestCubeSegmentationRewriter.java | 15 +- .../lens/cube/parse/TestUnionQueries.java | 2 +- .../resources/schema/cubes/base/virtualcube.xml | 36 ++ .../test/resources/schema/facts/virtualfact.xml | 27 ++ lens-driver-es/pom.xml | 3 +- lens-examples/pom.xml | 3 +- .../src/test/resources/yaml/fact1.yaml | 4 +- .../src/test/resources/yaml/fact2.yaml | 4 +- .../src/test/resources/yaml/rawfact.yaml| 4 +- .../yaml/sales-aggr-continuous-fact.yaml| 4 +- .../test/resources/yaml/sales-aggr-fact1.yaml | 4 +- .../test/resources/yaml/sales-aggr-fact2.yaml | 4 +- .../src/test/resources/yaml/sales-raw-fact.yaml | 4 +- .../api/metastore/CubeMetastoreService.java | 8 +- lens-server/pom.xml | 2 +- .../metastore/CubeMetastoreServiceImpl.java | 24 +- .../server/metastore/MetastoreResource.java | 17 +- .../lens/server/common/RestAPITestUtil.java | 7 +- .../server/metastore/TestMetastoreService.java | 274 ++- src/site/apt/user/cli.apt | 3 +- tools/scripts/generate-site-public.sh | 2 +- 51 files changed, 1646 insertions(+), 463 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/27ad9aa8/lens-api/src/main/java/org/apache/lens/api/metastore/SchemaTraverser.java -- diff --git a/lens-api/src/main/java/org/apache/lens/api/metastore/SchemaTraverser.java b/lens-api/src/main/java/org/apache/lens/api/metastore/SchemaTraverser.java index 9564443..09c848a 100644 --- a/lens-api/src/main/java/org/apache/lens/api/metastore/SchemaTraverser.java +++ b/lens-api/src/main/java/org/apache/lens/api/metastore/SchemaTraverser.java @@ -42,6 +42,7 @@ public class SchemaTraverser implements Runnable { types.put("cubes/derived", XDerivedCube.class); types.put("dimensions", XDimension.class); types.put("facts", XFactTable.class); +types.put("facts/virtual", XVirtualFactTable.class); types.put("dimtables", XDimensionTable.class); types.put("dimensiontables", XDimensionTable.class); types.put("dimensiontables", XDimensionTable.class); http://git-wip-us.apache.org/repos/asf/lens/blob/27ad9aa8/lens-api/src/main/resources/cube-0.1.xsd --
[1/3] lens git commit: LENS-1412 : Add capability to define virtual facts in a cube
Repository: lens Updated Branches: refs/heads/current-release-line 7c1171c8d -> 27ad9aa8f http://git-wip-us.apache.org/repos/asf/lens/blob/27ad9aa8/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java -- diff --git a/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java b/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java index 6d32d23..ab24033 100644 --- a/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java +++ b/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java @@ -1856,6 +1856,24 @@ public class TestMetastoreService extends LensJerseyTest { return f; } + + private XVirtualFactTable createVirtualFactTable(String factName, String sourceFactName) { +return createVirtualFactTable(factName, "testCube", sourceFactName); + } + + private XVirtualFactTable createVirtualFactTable(String factName, final String cubeName, String sourceFactName) { +XVirtualFactTable f = cubeObjectFactory.createXVirtualFactTable(); +f.setProperties(new XProperties()); +f.setName(factName); +f.setWeight(10.0); +f.setCubeName(cubeName); +f.setSourceFactName(sourceFactName); + +Mapproperties = LensUtil.getHashMap("foo1", "bar1"); + f.getProperties().getProperty().addAll(JAXBUtils.xPropertiesFromMap(properties)); +return f; + } + @Test(dataProvider = "mediaTypeData") public void testCreateFactTableWithMultipleUpdatePeriods(MediaType mediaType) throws Exception { @@ -1877,7 +1895,7 @@ public class TestMetastoreService extends LensJerseyTest { .add(createStorageTblWithMultipleTableDescriptors("S1", tables, updatePeriods)); APIResult result = target().path("metastore").path("facts").queryParam("sessionid", lensSessionId) .request(mediaType) -.post(Entity.entity(new GenericEntity (cubeObjectFactory.createXFactTable(f)) { +.post(Entity.entity(new GenericEntity (cubeObjectFactory.createXFact(f)) { }, mediaType), APIResult.class); assertSuccess(result); @@ -1886,10 +1904,10 @@ public class TestMetastoreService extends LensJerseyTest { assertTrue(factNames.getElements().contains(table.toLowerCase())); // Get the created tables - JAXBElement gotFactElement = target().path("metastore/facts").path(table) -.queryParam("sessionid", lensSessionId).request(mediaType).get(new GenericType () { + JAXBElement gotFactElement = target().path("metastore/facts").path(table) +.queryParam("sessionid", lensSessionId).request(mediaType).get(new GenericType () { }); - XFactTable gotFact = gotFactElement.getValue(); + XFactTable gotFact = (XFactTable) gotFactElement.getValue(); assertTrue(gotFact.getName().equalsIgnoreCase(table)); assertEquals(gotFact.getWeight(), 10.0); @@ -1915,15 +1933,15 @@ public class TestMetastoreService extends LensJerseyTest { // Update result = target().path("metastore").path("facts").path(table).queryParam("sessionid", lensSessionId) .request(mediaType) -.put(Entity.entity(new GenericEntity (cubeObjectFactory.createXFactTable(update)) { +.put(Entity.entity(new GenericEntity (cubeObjectFactory.createXFact(update)) { }, mediaType), APIResult.class); assertSuccess(result); // Get the updated table gotFactElement = target().path("metastore/facts").path(table).queryParam("sessionid", lensSessionId) -.request(mediaType).get(new GenericType () { +.request(mediaType).get(new GenericType () { }); - gotFact = gotFactElement.getValue(); + gotFact = (XFactTable) gotFactElement.getValue(); CubeFactTable ucf = JAXBUtils.cubeFactFromFactTable(gotFact); assertEquals(ucf.weight(), 20.0); assertTrue(ucf.getUpdatePeriods().get("S1").contains(HOURLY)); @@ -2032,6 +2050,7 @@ public class TestMetastoreService extends LensJerseyTest { @Test(dataProvider = "mediaTypeData") public void testCreateFactTable(MediaType mediaType) throws Exception { + final String table = "testCreateFactTable"; final String DB = dbPFX + "testCreateFactTable_DB" + mediaType.getSubtype(); String prevDb = getCurrentDatabase(mediaType); @@ -2049,7 +2068,7 @@ public class TestMetastoreService extends LensJerseyTest { .path("facts").queryParam("sessionid", lensSessionId) .request(mediaType) .post(Entity.entity( - new GenericEntity (cubeObjectFactory.createXFactTable(f)){}, mediaType), + new GenericEntity (cubeObjectFactory.createXFact(f)){}, mediaType), APIResult.class);
lens git commit: LENS-1474 : Fix NPE in ExpressionResolver for SegmentationCandidate
Repository: lens Updated Branches: refs/heads/master 7c9707148 -> 24d4f1531 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/24d4f153 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/24d4f153 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/24d4f153 Branch: refs/heads/master Commit: 24d4f1531497e8b877fe185a0ef742b18acf125c Parents: 7c97071 Author: Rajitha R <rajitha@gmail.com> Authored: Mon Sep 11 09:53:21 2017 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Sep 11 09:53:21 2017 +0530 -- .../apache/lens/cube/parse/ExpressionResolver.java | 17 +++-- 1 file changed, 11 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/24d4f153/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 1268ef7..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 @@ -317,12 +317,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) { @@ -540,8 +542,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()) {
lens git commit: LENS-1463 : Valid Columns addition in Virtual Fact
Repository: lens Updated Branches: refs/heads/master e6f1ce0e2 -> b3352997c 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/b3352997 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/b3352997 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/b3352997 Branch: refs/heads/master Commit: b3352997ca851b6a68e7e0d57caeb514d7e134d3 Parents: e6f1ce0 Author: Rajitha R <rajitha@gmail.com> Authored: Mon Aug 28 16:31:33 2017 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Aug 28 16:31:33 2017 +0530 -- .../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/b3352997/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/b3352997/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/b3352997/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/b3352997/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/resou
lens git commit: LENS-1466 : Fix for 'Rewritten queries not resolving time_range_in clause'
Repository: lens Updated Branches: refs/heads/master ef6e59c61 -> 8baae4133 LENS-1466 : Fix for 'Rewritten queries not resolving time_range_in clause' Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/8baae413 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/8baae413 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/8baae413 Branch: refs/heads/master Commit: 8baae4133d8f8306d9a49ff4512c091a997b1234 Parents: ef6e59c Author: Rajitha R <rajitha@gmail.com> Authored: Fri Sep 1 13:02:32 2017 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Fri Sep 1 13:02:32 2017 +0530 -- .../lens/cube/parse/StorageCandidate.java | 2 +- .../apache/lens/cube/metadata/DateFactory.java | 6 ++ .../apache/lens/cube/parse/CubeTestSetup.java | 47 +++-- .../lens/cube/parse/TestCubeRewriter.java | 15 - .../resources/schema/cubes/base/testcube.xml| 2 + .../test/resources/schema/facts/summary5.xml| 70 .../src/test/resources/schema/storages/c98.xml | 26 7 files changed, 159 insertions(+), 9 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/8baae413/lens-cube/src/main/java/org/apache/lens/cube/parse/StorageCandidate.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/StorageCandidate.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/StorageCandidate.java index 2b1add3..27835b3 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/StorageCandidate.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/StorageCandidate.java @@ -533,9 +533,9 @@ public class StorageCandidate implements Candidate, CandidateTable { log.debug("Adding non existing partition {}", part); if (addNonExistingParts) { // Add non existing partitions for all cases of whether we populate all non existing or not. -this.participatingUpdatePeriods.add(maxInterval); missingPartitions.add(part); if (!failOnPartialData) { + this.participatingUpdatePeriods.add(maxInterval); partitions.add(part); part.getStorageTables().add(storageTable); } http://git-wip-us.apache.org/repos/asf/lens/blob/8baae413/lens-cube/src/test/java/org/apache/lens/cube/metadata/DateFactory.java -- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/metadata/DateFactory.java b/lens-cube/src/test/java/org/apache/lens/cube/metadata/DateFactory.java index 855f54a..75f2abd 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/metadata/DateFactory.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/metadata/DateFactory.java @@ -150,6 +150,7 @@ public class DateFactory { // Time Instances as Date Type public static final Date NOW; + public static final Date ONEDAY_BACK; public static final Date TWODAYS_BACK; public static final Date TWO_MONTHS_BACK; public static final Date THIS_MONTH_TRUNCATED; @@ -168,6 +169,7 @@ public class DateFactory { public static final String TWO_DAYS_RANGE_TTD2; public static final String TWO_DAYS_RANGE_TTD2_BEFORE_4_DAYS; public static final String TWO_DAYS_RANGE_IT; + public static final String ONE_DAY_RANGE_IT; public static final String THIS_YEAR_RANGE; public static final String LAST_YEAR_RANGE; public static final String TWO_MONTHS_RANGE_UPTO_MONTH; @@ -189,6 +191,9 @@ public class DateFactory { // Figure out if current hour is 0th hour zerothHour = getDateStringWithOffset(HOURLY, 0).endsWith("-00"); +ONEDAY_BACK = getDateWithOffset(DAILY, -1); +System.out.println("Test ONEDAY_BACK:" + ONEDAY_BACK); + TWODAYS_BACK = getDateWithOffset(DAILY, -2); System.out.println("Test TWODAYS_BACK:" + TWODAYS_BACK); @@ -214,6 +219,7 @@ public class DateFactory { TWO_DAYS_RANGE_TTD2 = getTimeRangeString("test_time_dim2", DAILY, -2, 0, HOURLY); TWO_DAYS_RANGE_TTD2_BEFORE_4_DAYS = getTimeRangeString("test_time_dim2", DAILY, -6, -4, HOURLY); TWO_DAYS_RANGE_IT = getTimeRangeString("it", DAILY, -2, 0, HOURLY); +ONE_DAY_RANGE_IT = getTimeRangeString("it", DAILY, -1, 0, DAILY); THIS_YEAR_RANGE = getTimeRangeString(YEARLY, 0, 1); LAST_YEAR_RANGE = getTimeRangeString(YEARLY, -1, 0); TWO_MONTHS_RANGE_UPTO_MONTH = getTimeRangeString(MONTHLY, -2, 0); http://git-wip-us.apache.org/repos/asf/lens/blob/8baae413/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java -- d
lens git commit: LENS-1466 : Fix for 'Rewritten queries not resolving time_range_in clause'
Repository: lens Updated Branches: refs/heads/current-release-line 10eef27a0 -> ff4f3726a LENS-1466 : Fix for 'Rewritten queries not resolving time_range_in clause' Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/ff4f3726 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/ff4f3726 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/ff4f3726 Branch: refs/heads/current-release-line Commit: ff4f3726a25db684ff7623fea68e954712dd925f Parents: 10eef27 Author: Rajitha R <rajitha@gmail.com> Authored: Fri Sep 1 13:02:32 2017 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Fri Sep 1 15:23:45 2017 +0530 -- .../lens/cube/parse/StorageCandidate.java | 2 +- .../apache/lens/cube/metadata/DateFactory.java | 6 ++ .../apache/lens/cube/parse/CubeTestSetup.java | 47 +++-- .../lens/cube/parse/TestCubeRewriter.java | 15 - .../resources/schema/cubes/base/testcube.xml| 2 + .../test/resources/schema/facts/summary5.xml| 70 .../src/test/resources/schema/storages/c98.xml | 26 7 files changed, 159 insertions(+), 9 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/ff4f3726/lens-cube/src/main/java/org/apache/lens/cube/parse/StorageCandidate.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/StorageCandidate.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/StorageCandidate.java index 2b1add3..27835b3 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/StorageCandidate.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/StorageCandidate.java @@ -533,9 +533,9 @@ public class StorageCandidate implements Candidate, CandidateTable { log.debug("Adding non existing partition {}", part); if (addNonExistingParts) { // Add non existing partitions for all cases of whether we populate all non existing or not. -this.participatingUpdatePeriods.add(maxInterval); missingPartitions.add(part); if (!failOnPartialData) { + this.participatingUpdatePeriods.add(maxInterval); partitions.add(part); part.getStorageTables().add(storageTable); } http://git-wip-us.apache.org/repos/asf/lens/blob/ff4f3726/lens-cube/src/test/java/org/apache/lens/cube/metadata/DateFactory.java -- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/metadata/DateFactory.java b/lens-cube/src/test/java/org/apache/lens/cube/metadata/DateFactory.java index 855f54a..75f2abd 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/metadata/DateFactory.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/metadata/DateFactory.java @@ -150,6 +150,7 @@ public class DateFactory { // Time Instances as Date Type public static final Date NOW; + public static final Date ONEDAY_BACK; public static final Date TWODAYS_BACK; public static final Date TWO_MONTHS_BACK; public static final Date THIS_MONTH_TRUNCATED; @@ -168,6 +169,7 @@ public class DateFactory { public static final String TWO_DAYS_RANGE_TTD2; public static final String TWO_DAYS_RANGE_TTD2_BEFORE_4_DAYS; public static final String TWO_DAYS_RANGE_IT; + public static final String ONE_DAY_RANGE_IT; public static final String THIS_YEAR_RANGE; public static final String LAST_YEAR_RANGE; public static final String TWO_MONTHS_RANGE_UPTO_MONTH; @@ -189,6 +191,9 @@ public class DateFactory { // Figure out if current hour is 0th hour zerothHour = getDateStringWithOffset(HOURLY, 0).endsWith("-00"); +ONEDAY_BACK = getDateWithOffset(DAILY, -1); +System.out.println("Test ONEDAY_BACK:" + ONEDAY_BACK); + TWODAYS_BACK = getDateWithOffset(DAILY, -2); System.out.println("Test TWODAYS_BACK:" + TWODAYS_BACK); @@ -214,6 +219,7 @@ public class DateFactory { TWO_DAYS_RANGE_TTD2 = getTimeRangeString("test_time_dim2", DAILY, -2, 0, HOURLY); TWO_DAYS_RANGE_TTD2_BEFORE_4_DAYS = getTimeRangeString("test_time_dim2", DAILY, -6, -4, HOURLY); TWO_DAYS_RANGE_IT = getTimeRangeString("it", DAILY, -2, 0, HOURLY); +ONE_DAY_RANGE_IT = getTimeRangeString("it", DAILY, -1, 0, DAILY); THIS_YEAR_RANGE = getTimeRangeString(YEARLY, 0, 1); LAST_YEAR_RANGE = getTimeRangeString(YEARLY, -1, 0); TWO_MONTHS_RANGE_UPTO_MONTH = getTimeRangeString(MONTHLY, -2, 0); http://git-wip-us.apache.org/repos/asf/lens/blob/ff4f3726/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java
[lens] branch master updated (fb1a171 -> 4907964)
This is an automated email from the ASF dual-hosted git repository. amareshwari pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/lens.git. from fb1a171 Merge pull request #27 from jimmycasey/master new 98ab7a5 exposing jmx port for monitoring the threads, cpu and memory new d3b41b3 Fix for RNA-10440: Lens driver not picking hadoop conf new 69e9e64 added the files new 616aeec Merge remote-tracking branch 'upstream/master' new 3db Adding support for Partition Columns to queried without giving additional xml tag valid.columns new 7783450 reverting old change new 149a192 resolved imports new c7aa785 added Example for supporting the non-timed partition as filter while querying new 787c7e2 Merge remote-tracking branch 'upstream/master' new 1dc444c Merge remote-tracking branch 'upstream/master' new c0cb51a fixed the yaml new 65174d2 licence new dbbf4f5 Merge remote-tracking branch 'upstream/master' new 8e921d5 Merge remote-tracking branch 'upstream/master' new 0519d9d made few changes to the code for azure deployment new bc6f628 Fixed the test case, removed instances where Prepare was hitting the underlying JDBC Driver new 2d6fb3d reversed few changes new 0caecd7 removing not needed commits new 2ce78dc undid the unit test cases new 2400d8e made one more change new 926b604 fixed code review comments new 353dd56 fixed code review comments new fc4358e made some changes new 5fa2800 fixed code review comments new b183d21 Merge branch 'master' of https://github.com/RajashekharInmobi/lens new 75c440d Merge branch 'master' of https://github.com/RajashekharInmobi/lens new fe57a2e added the files new 0cdd720 added the code review fix new dc67c27 added a unit test case new 8d3e015 added the test case new af1f5d4 fixed unit test case new 24783d6 fixed unit test case new 4907964 Merge pull request #34 from RajashekharInmobi/master The 2447 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: .../lens/cube/metadata/CubeMetastoreClient.java| 33 -- .../cube/metadata/TestCubeMetastoreClient.java | 50 .../org/apache/lens/driver/jdbc/JDBCDriver.java| 32 ++ .../lens/driver/jdbc/JDBCDriverConfConstants.java | 7 ++- .../server/api/query/PreparedQueryContext.java | 19 -- .../apache/lens/server/query/LensServerDAO.java| 47 +++ .../server/query/QueryExecutionServiceImpl.java| 15 +++-- .../org/apache/lens/server/query/TestLensDAO.java | 70 ++ pom.xml| 2 +- 9 files changed, 225 insertions(+), 50 deletions(-)