LENS-1228 : Fix TestQueryConstraints test failure
Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/c5dd7de4 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/c5dd7de4 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/c5dd7de4 Branch: refs/heads/current-release-line Commit: c5dd7de4b69f7454539cb7147d9d1bfade7e34d5 Parents: 1a96948 Author: Amareshwari Sriramadasu <[email protected]> Authored: Tue Jul 26 09:43:32 2016 +0530 Committer: Amareshwari Sriramadasu <[email protected]> Committed: Tue Jul 26 09:43:32 2016 +0530 ---------------------------------------------------------------------- .../lens/server/api/query/QueryContext.java | 3 +++ .../server/query/QueryExecutionServiceImpl.java | 22 ++++++++--------- .../DefaultEstimatedQueryCollection.java | 5 ++++ .../apache/lens/server/TestLensApplication.java | 5 ++++ .../lens/server/query/TestQueryConstraints.java | 26 +++++++++----------- .../TestQueryIndependenceFromSessionClose.java | 20 ++++++++++++--- 6 files changed, 50 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/c5dd7de4/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 7f323dc..2641b60 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 @@ -529,4 +529,7 @@ public class QueryContext extends AbstractQueryContext { this.driverResult = result; } + public String toString() { + return queryHandle + ":" + this.status; + } } http://git-wip-us.apache.org/repos/asf/lens/blob/c5dd7de4/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 cf0c168..a582994 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 @@ -902,18 +902,16 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE private void updateFinishedQuery(QueryContext ctx, QueryStatus before) { // before would be null in case of server restart if (before != null) { - if (before.queued()) { - /* Seems like query is cancelled, remove it from both queuedQueries and waitingQueries because we don't know - * where it is right now. It might happen that when we remove it from queued, it was in waiting OR - * when we removed it from waiting, it was in queued. We might just miss removing it from everywhere due to this - * hide and seek. Then QuerySubmitter thread will come to rescue, as it always checks that a query should be in - * queued state before processing it after deque. If it is in cancelled state, then it will skip it. */ - queuedQueries.remove(ctx); - waitingQueries.remove(ctx); - } else { - if (removeFromLaunchedQueries(ctx)) { - processWaitingQueriesAsync(ctx); - } + /* Seems like query is cancelled, remove it from both queuedQueries and waitingQueries because we don't know + * where it is right now. It might happen that when we remove it from queued, it was in waiting OR + * when we removed it from waiting, it was in queued. We might just miss removing it from everywhere due to this + * hide and seek. Then QuerySubmitter thread will come to rescue, as it always checks that a query should be in + * queued state before processing it after deque. If it is in cancelled state, then it will skip it. */ + queuedQueries.remove(ctx); + waitingQueries.remove(ctx); + // Remove it from launched queries as well - the query got cancelled or failed to launch or failed to execute + if (removeFromLaunchedQueries(ctx)) { + processWaitingQueriesAsync(ctx); } } // Remove from active queries http://git-wip-us.apache.org/repos/asf/lens/blob/c5dd7de4/lens-server/src/main/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollection.java ---------------------------------------------------------------------- diff --git a/lens-server/src/main/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollection.java b/lens-server/src/main/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollection.java index 4e5aa68..9a37afd 100644 --- a/lens-server/src/main/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollection.java +++ b/lens-server/src/main/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollection.java @@ -173,4 +173,9 @@ public class DefaultEstimatedQueryCollection implements EstimatedQueryCollection log.debug("Total Query Cost:{}", totalQueryCost); return totalQueryCost; } + + @Override + public synchronized String toString() { + return getClass().getSimpleName() + "(Queries=" + this.queries + ")"; + } } http://git-wip-us.apache.org/repos/asf/lens/blob/c5dd7de4/lens-server/src/test/java/org/apache/lens/server/TestLensApplication.java ---------------------------------------------------------------------- diff --git a/lens-server/src/test/java/org/apache/lens/server/TestLensApplication.java b/lens-server/src/test/java/org/apache/lens/server/TestLensApplication.java index 6636346..840e358 100644 --- a/lens-server/src/test/java/org/apache/lens/server/TestLensApplication.java +++ b/lens-server/src/test/java/org/apache/lens/server/TestLensApplication.java @@ -29,6 +29,7 @@ import org.apache.lens.server.api.metrics.MetricsService; import org.apache.lens.server.metrics.MetricsServiceImpl; import org.testng.Assert; +import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; @@ -50,6 +51,10 @@ public class TestLensApplication extends LensAllApplicationJerseyTest { super.setUp(); } + @AfterTest + public void tearDown() throws Exception { + super.tearDown(); + } /** * Test ws resources loaded. * http://git-wip-us.apache.org/repos/asf/lens/blob/c5dd7de4/lens-server/src/test/java/org/apache/lens/server/query/TestQueryConstraints.java ---------------------------------------------------------------------- diff --git a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryConstraints.java b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryConstraints.java index 8276ace..8be1f89 100644 --- a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryConstraints.java +++ b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryConstraints.java @@ -94,6 +94,12 @@ public class TestQueryConstraints extends LensJerseyTest { @BeforeTest public void setUp() throws Exception { super.setUp(); + + } + + @BeforeClass + public void setupTest() throws Exception { + restartLensServer(); queryService = LensServices.get().getService(QueryExecutionService.NAME); metricsSvc = LensServices.get().getService(MetricsService.NAME); Map<String, String> sessionConf = new HashMap<>(); @@ -104,13 +110,10 @@ public class TestQueryConstraints extends LensJerseyTest { loadData(TEST_TABLE, TestResourceFile.TEST_DATA2_FILE.getValue()); } - @BeforeClass - public void setupTest() { - restartLensServer(); - } - @AfterClass - public void afterTest() { + public void afterTest() throws Exception { + dropTable(TEST_TABLE); + queryService.closeSession(lensSessionId); restartLensServer(); } @@ -127,13 +130,6 @@ public class TestQueryConstraints extends LensJerseyTest { */ @AfterTest public void tearDown() throws Exception { - dropTable(TEST_TABLE); - queryService.closeSession(lensSessionId); - for (LensDriver driver : queryService.getDrivers()) { - if (driver instanceof HiveDriver) { - assertFalse(((HiveDriver) driver).hasLensSession(lensSessionId)); - } - } super.tearDown(); } @@ -215,7 +211,7 @@ public class TestQueryConstraints extends LensJerseyTest { } for (QueryHandle handle : handles) { RestAPITestUtil.waitForQueryToFinish(target(), lensSessionId, handle, mt); - queryService.closeResultSet(lensSessionId, handle); + queryService.fetchResultSet(lensSessionId, handle, 0, 100); assertValidity(); } } @@ -242,7 +238,7 @@ public class TestQueryConstraints extends LensJerseyTest { Optional.of(conf), mt); } - @AfterClass + @AfterMethod private void waitForPurge() throws InterruptedException { waitForPurge(0, queryService.finishedQueries); } http://git-wip-us.apache.org/repos/asf/lens/blob/c5dd7de4/lens-server/src/test/java/org/apache/lens/server/query/TestQueryIndependenceFromSessionClose.java ---------------------------------------------------------------------- diff --git a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryIndependenceFromSessionClose.java b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryIndependenceFromSessionClose.java index 24cbcaa..d723596 100644 --- a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryIndependenceFromSessionClose.java +++ b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryIndependenceFromSessionClose.java @@ -63,14 +63,27 @@ public class TestQueryIndependenceFromSessionClose extends LensJerseyTest { LensSessionHandle lensSessionId; private LensConf conf; + @BeforeTest + public void setUp() throws Exception { + super.setUp(); + } + + /* + * (non-Javadoc) + * + * @see org.glassfish.jersey.test.JerseyTest#tearDown() + */ + @AfterTest + public void tearDown() throws Exception { + super.tearDown(); + } /* * (non-Javadoc) * * @see org.glassfish.jersey.test.JerseyTest#setUp() */ @BeforeClass - public void setUp() throws Exception { - super.setUp(); + public void setUpClass() throws Exception { queryService = LensServices.get().getService(QueryExecutionService.NAME); lensSessionId = getSession(); createTable(TEST_TABLE); @@ -104,7 +117,7 @@ public class TestQueryIndependenceFromSessionClose extends LensJerseyTest { * @see org.glassfish.jersey.test.JerseyTest#tearDown() */ @AfterClass - public void tearDown() throws Exception { + public void tearDownClass() throws Exception { dropTable(TEST_TABLE); queryService.closeSession(lensSessionId); for (LensDriver driver : queryService.getDrivers()) { @@ -112,7 +125,6 @@ public class TestQueryIndependenceFromSessionClose extends LensJerseyTest { assertFalse(((HiveDriver) driver).hasLensSession(lensSessionId)); } } - super.tearDown(); } @Override
