You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by iv...@apache.org on 2015/07/20 19:26:03 UTC
[2/5] incubator-ignite git commit: #ignite-961: fix comments after
review.
#ignite-961: fix comments after review.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/f93ec699
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/f93ec699
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/f93ec699
Branch: refs/heads/ignite-961-master
Commit: f93ec6994b62ade48687cb9d4784588d366f8861
Parents: c99433b
Author: ivasilinets <iv...@gridgain.com>
Authored: Mon Jul 20 14:31:13 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Mon Jul 20 14:31:13 2015 +0300
----------------------------------------------------------------------
.../JettyRestProcessorAbstractSelfTest.java | 82 +++++++++++++++-----
.../handlers/query/QueryCommandHandler.java | 21 ++---
2 files changed, 75 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f93ec699/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
index c6c8195..c6bf945 100644
--- a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
@@ -328,7 +328,7 @@ abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestProcessorS
jsonEquals(ret,
// getKey[12] is used since the order is not determined.
cacheBulkPattern("\\{\\\"getKey[12]\\\":\\\"getVal[12]\\\"\\,\\\"getKey[12]\\\":\\\"getVal[12]\\\"\\}",
- true));
+ true));
}
/**
@@ -1024,6 +1024,56 @@ abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestProcessorS
/**
* @throws Exception If failed.
*/
+ public void testQuery() throws Exception {
+ grid(0).cache(null).put("1", "1");
+ grid(0).cache(null).put("2", "2");
+ grid(0).cache(null).put("3", "3");
+
+ Map<String, String> params = new HashMap<>();
+ params.put("cmd", "qryexecute");
+ params.put("type", "String");
+ params.put("psz", "1");
+ params.put("qry", URLEncoder.encode("select * from String"));
+
+ String ret = content(params);
+
+ assertNotNull(ret);
+ assertTrue(!ret.isEmpty());
+
+ JSONObject json = JSONObject.fromObject(ret);
+
+ Integer qryId = (Integer)((Map)json.get("response")).get("queryId");
+
+ assertNotNull(qryId);
+
+ ret = content(F.asMap("cmd", "qryfetch", "psz", "1", "qryId", String.valueOf(qryId)));
+
+ json = JSONObject.fromObject(ret);
+
+ Integer qryId0 = (Integer)((Map)json.get("response")).get("queryId");
+
+ Boolean last = (Boolean)((Map)json.get("response")).get("last");
+
+ assertEquals(qryId0, qryId);
+ assertFalse(last);
+
+ ret = content(F.asMap("cmd", "qryfetch", "psz", "1", "qryId", String.valueOf(qryId)));
+
+ json = JSONObject.fromObject(ret);
+
+ qryId0 = (Integer)((Map)json.get("response")).get("queryId");
+
+ last = (Boolean)((Map)json.get("response")).get("last");
+
+ assertEquals(qryId0, qryId);
+ assertTrue(last);
+
+ assertFalse(queryCursorFound());
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
public void testQueryClose() throws Exception {
String qry = "salary > ? and salary <= ?";
@@ -1047,20 +1097,7 @@ abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestProcessorS
assertEquals(1, items.size());
- boolean found = false;
-
- for (int i = 0; i < GRID_CNT; ++i) {
- Map<GridRestCommand, GridRestCommandHandler> handlers =
- GridTestUtils.getFieldValue(grid(i).context().rest(), "handlers");
-
- GridRestCommandHandler qryHnd = handlers.get(GridRestCommand.CLOSE_SQL_QUERY);
-
- ConcurrentHashMap<Long, Iterator> its = GridTestUtils.getFieldValue(qryHnd, "curs");
-
- found |= its.size() != 0;
- }
-
- assertTrue(found);
+ assertTrue(queryCursorFound());
Integer qryId = (Integer)((Map)json.get("response")).get("queryId");
@@ -1071,7 +1108,16 @@ abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestProcessorS
assertNotNull(ret);
assertTrue(!ret.isEmpty());
- found = false;
+ assertFalse(queryCursorFound());
+ }
+
+ protected abstract String signature() throws Exception;
+
+ /**
+ * @return True if any query cursor is available.
+ */
+ private boolean queryCursorFound() {
+ boolean found = false;
for (int i = 0; i < GRID_CNT; ++i) {
Map<GridRestCommand, GridRestCommandHandler> handlers =
@@ -1084,11 +1130,9 @@ abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestProcessorS
found |= its.size() != 0;
}
- assertFalse(found);
+ return found;
}
- protected abstract String signature() throws Exception;
-
/**
* Init cache.
*/
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f93ec699/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/query/QueryCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/query/QueryCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/query/QueryCommandHandler.java
index 097c7aa..1a97995 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/query/QueryCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/query/QueryCommandHandler.java
@@ -113,7 +113,7 @@ public class QueryCommandHandler extends GridRestCommandHandlerAdapter {
* @param curs Queries cursors.
*/
public ExecuteQueryCallable(GridKernalContext ctx, RestSqlQueryRequest req,
- ConcurrentHashMap<Long, Iterator> curs, ConcurrentHashMap<Long, QueryCursor> qryCurs) {
+ ConcurrentHashMap<Long, Iterator> curs, ConcurrentHashMap<Long, QueryCursor> qryCurs) {
this.ctx = ctx;
this.req = req;
this.curs = curs;
@@ -122,6 +122,8 @@ public class QueryCommandHandler extends GridRestCommandHandlerAdapter {
/** {@inheritDoc} */
@Override public GridRestResponse call() throws Exception {
+ long qryId = qryIdGen.getAndIncrement();
+
try {
Query qry;
@@ -140,14 +142,12 @@ public class QueryCommandHandler extends GridRestCommandHandlerAdapter {
if (cache == null)
return new GridRestResponse(GridRestResponse.STATUS_FAILED,
- "No cache with name. [cacheName=" + req.cacheName() + "]");
+ "No cache with name [cacheName=" + req.cacheName() + "]");
QueryCursor qryCur = cache.query(qry);
Iterator cur = qryCur.iterator();
- long qryId = qryIdGen.getAndIncrement();
-
qryCurs.put(qryId, qryCur);
curs.put(qryId, cur);
@@ -156,6 +156,9 @@ public class QueryCommandHandler extends GridRestCommandHandlerAdapter {
return new GridRestResponse(res);
}
catch (Exception e) {
+ qryCurs.remove(qryId);
+ curs.remove(qryId);
+
return new GridRestResponse(GridRestResponse.STATUS_FAILED, e.getMessage());
}
}
@@ -179,8 +182,8 @@ public class QueryCommandHandler extends GridRestCommandHandlerAdapter {
* @param curs Queries cursors.
*/
public CloseQueryCallable(RestSqlQueryRequest req,
- ConcurrentHashMap<Long, Iterator> curs,
- ConcurrentHashMap<Long, QueryCursor> qryCurs) {
+ ConcurrentHashMap<Long, Iterator> curs,
+ ConcurrentHashMap<Long, QueryCursor> qryCurs) {
this.req = req;
this.curs = curs;
this.qryCurs = qryCurs;
@@ -229,7 +232,7 @@ public class QueryCommandHandler extends GridRestCommandHandlerAdapter {
* @param curs Queries cursors.
*/
public FetchQueryCallable(RestSqlQueryRequest req, ConcurrentHashMap<Long, Iterator> curs,
- ConcurrentHashMap<Long, QueryCursor> qryCurs) {
+ ConcurrentHashMap<Long, QueryCursor> qryCurs) {
this.req = req;
this.curs = curs;
this.qryCurs = qryCurs;
@@ -266,8 +269,8 @@ public class QueryCommandHandler extends GridRestCommandHandlerAdapter {
* @return Query result with items.
*/
private static CacheQueryResult createQueryResult(ConcurrentHashMap<Long, QueryCursor> qryCurs,
- ConcurrentHashMap<Long, Iterator> curs, Iterator cur,
- RestSqlQueryRequest req, Long qryId) {
+ ConcurrentHashMap<Long, Iterator> curs, Iterator cur,
+ RestSqlQueryRequest req, Long qryId) {
CacheQueryResult res = new CacheQueryResult();
List<Object> items = new ArrayList<>();