LENS-928 : DELETE request on /resultset API gives 500 in case of InMemory Result
Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/a5091fe0 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/a5091fe0 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/a5091fe0 Branch: refs/heads/current-release-line Commit: a5091fe0c2b351bd5d8643de9edaac23f2bd3793 Parents: 2f0e5fd Author: Deepak Barr <[email protected]> Authored: Tue Feb 2 16:36:07 2016 +0530 Committer: Deepak Kumar Barr <[email protected]> Committed: Tue Feb 2 16:36:07 2016 +0530 ---------------------------------------------------------------------- .../src/main/java/org/apache/lens/driver/es/ESDriver.java | 4 +--- .../main/java/org/apache/lens/server/api/driver/LensDriver.java | 2 +- .../org/apache/lens/server/query/QueryExecutionServiceImpl.java | 5 ++++- .../java/org/apache/lens/server/query/TestQueryService.java | 4 ++++ 4 files changed, 10 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/a5091fe0/lens-driver-es/src/main/java/org/apache/lens/driver/es/ESDriver.java ---------------------------------------------------------------------- diff --git a/lens-driver-es/src/main/java/org/apache/lens/driver/es/ESDriver.java b/lens-driver-es/src/main/java/org/apache/lens/driver/es/ESDriver.java index d166e43..8a4f410 100644 --- a/lens-driver-es/src/main/java/org/apache/lens/driver/es/ESDriver.java +++ b/lens-driver-es/src/main/java/org/apache/lens/driver/es/ESDriver.java @@ -195,10 +195,8 @@ public class ESDriver extends AbstractLensDriver { @Override public void closeResultSet(QueryHandle handle) throws LensException { - try { + if (resultSetMap.containsKey(handle)) { resultSetMap.remove(handle); - } catch (NullPointerException e) { - throw new LensException("The query does not exist or was already purged", e); } } http://git-wip-us.apache.org/repos/asf/lens/blob/a5091fe0/lens-server-api/src/main/java/org/apache/lens/server/api/driver/LensDriver.java ---------------------------------------------------------------------- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/driver/LensDriver.java b/lens-server-api/src/main/java/org/apache/lens/server/api/driver/LensDriver.java index 3d38ddd..ed97673 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/driver/LensDriver.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/driver/LensDriver.java @@ -151,7 +151,7 @@ public interface LensDriver extends Externalizable { LensResultSet fetchResultSet(QueryContext context) throws LensException; /** - * Close the resultset for the query. + * Close the resultset for the query. Closing an already closed resultset should not result in failures. * * @param handle The query handle * @throws LensException the lens exception http://git-wip-us.apache.org/repos/asf/lens/blob/a5091fe0/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 19077d2..e61398b 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 @@ -2100,7 +2100,10 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE acquire(sessionHandle); resultSets.remove(queryHandle); // Ask driver to close result set - getQueryContext(queryHandle).getSelectedDriver().closeResultSet(queryHandle); + QueryContext ctx=getQueryContext(queryHandle); + if (null != ctx) { + ctx.getSelectedDriver().closeResultSet(queryHandle); + } } finally { release(sessionHandle); } http://git-wip-us.apache.org/repos/asf/lens/blob/a5091fe0/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 5d949d2..ef8c1aa 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 @@ -984,6 +984,10 @@ public class TestQueryService extends LensJerseyTest { validateInmemoryResult(resultset); validNotFoundForHttpResult(target(), lensSessionId, handle); + waitForPurge(0, queryService.finishedQueries); + APIResult result=target.path(handle.toString()).path("resultset") + .queryParam("sessionid", lensSessionId).request().delete(APIResult.class); + assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); } @Test
