You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by jh...@apache.org on 2015/01/22 08:23:13 UTC

tajo git commit: TAJO-1308: QueryInprogress can not release when query is QUERY_ERROR. (jinho)

Repository: tajo
Updated Branches:
  refs/heads/master e22c1c57b -> f80ec425d


TAJO-1308: QueryInprogress can not release when query is QUERY_ERROR. (jinho)

Closes #354


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

Branch: refs/heads/master
Commit: f80ec425dcdd8917d1408bd20f837de39e9f0c4b
Parents: e22c1c5
Author: jhkim <jh...@apache.org>
Authored: Thu Jan 22 16:20:32 2015 +0900
Committer: jhkim <jh...@apache.org>
Committed: Thu Jan 22 16:20:32 2015 +0900

----------------------------------------------------------------------
 CHANGES                                                     | 3 +++
 .../main/java/org/apache/tajo/client/QueryClientImpl.java   | 9 ++++++---
 .../main/java/org/apache/tajo/master/QueryInProgress.java   | 1 +
 .../src/main/java/org/apache/tajo/master/QueryManager.java  | 3 ++-
 .../org/apache/tajo/master/TajoMasterClientService.java     | 4 +++-
 5 files changed, 15 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/f80ec425/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 0849e53..0df8983 100644
--- a/CHANGES
+++ b/CHANGES
@@ -169,6 +169,9 @@ Release 0.10.0 - unreleased
 
   BUG FIXES
 
+    TAJO-1308: QueryInprogress can not release when query is QUERY_ERROR.
+    (jinho)
+
     TAJO-1305: With metadata storage of MySQL, columns with the same 
     character but difference case are not allowed. (jihun)
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/f80ec425/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java
----------------------------------------------------------------------
diff --git a/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java b/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java
index bab3518..813d5d8 100644
--- a/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java
+++ b/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java
@@ -376,7 +376,7 @@ public class QueryClientImpl implements QueryClient {
       throws ServiceException {
 
     try {
-      ServerCallable<ClientProtos.SerializedResultSet> callable =
+      final ServerCallable<ClientProtos.SerializedResultSet> callable =
           new ServerCallable<ClientProtos.SerializedResultSet>(connection.connPool, connection.getTajoMasterAddr(),
               TajoMasterClientProtocol.class, false, true) {
 
@@ -392,7 +392,8 @@ public class QueryClientImpl implements QueryClient {
               try {
                 GetQueryResultDataResponse response = tajoMasterService.getQueryResultData(null, builder.build());
                 if (response.getResultCode() == ClientProtos.ResultCode.ERROR) {
-                  throw new ServiceException(response.getErrorTrace());
+                  abort();
+                  throw new ServiceException(response.getErrorMessage());
                 }
 
                 return response.getResultSet();
@@ -412,7 +413,9 @@ public class QueryClientImpl implements QueryClient {
           serializedResultSet.getSerializedTuplesList(),
           serializedResultSet.getSerializedTuplesCount(),
           getClientSideSessionVars());
-    } catch (Exception e) {
+    } catch (ServiceException e) {
+      throw e;
+    } catch (Throwable e) {
       throw new ServiceException(e.getMessage(), e);
     }
   }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f80ec425/tajo-core/src/main/java/org/apache/tajo/master/QueryInProgress.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/master/QueryInProgress.java b/tajo-core/src/main/java/org/apache/tajo/master/QueryInProgress.java
index 7587543..352ec46 100644
--- a/tajo-core/src/main/java/org/apache/tajo/master/QueryInProgress.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/QueryInProgress.java
@@ -222,6 +222,7 @@ public class QueryInProgress {
 
   private boolean isFinishState(TajoProtos.QueryState state) {
     return state == TajoProtos.QueryState.QUERY_FAILED ||
+        state == TajoProtos.QueryState.QUERY_ERROR ||
         state == TajoProtos.QueryState.QUERY_KILLED ||
         state == TajoProtos.QueryState.QUERY_SUCCEEDED;
   }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f80ec425/tajo-core/src/main/java/org/apache/tajo/master/QueryManager.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/master/QueryManager.java b/tajo-core/src/main/java/org/apache/tajo/master/QueryManager.java
index 296be04..eebefa7 100644
--- a/tajo-core/src/main/java/org/apache/tajo/master/QueryManager.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/QueryManager.java
@@ -170,7 +170,8 @@ public class QueryManager extends CompositeService {
       dispatcher.getEventHandler().handle(new QueryJobEvent(QueryJobEvent.Type.QUERY_MASTER_START,
           queryInProgress.getQueryInfo()));
     } else {
-      stopQuery(queryId);
+      dispatcher.getEventHandler().handle(new QueryJobEvent(QueryJobEvent.Type.QUERY_JOB_STOP,
+          queryInProgress.getQueryInfo()));
     }
 
     return queryInProgress.getQueryInfo();

http://git-wip-us.apache.org/repos/asf/tajo/blob/f80ec425/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java b/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
index fcc016a..16e4fea 100644
--- a/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
@@ -512,6 +512,7 @@ public class TajoMasterClientService extends AbstractService {
     public GetQueryResultDataResponse getQueryResultData(RpcController controller, GetQueryResultDataRequest request)
         throws ServiceException {
       GetQueryResultDataResponse.Builder builder = GetQueryResultDataResponse.newBuilder();
+      SerializedResultSet.Builder resultSetBuilder = SerializedResultSet.newBuilder();
 
       try {
         context.getSessionManager().touch(request.getSessionId().getId());
@@ -524,7 +525,7 @@ public class TajoMasterClientService extends AbstractService {
         }
 
         List<ByteString> rows = queryResultScanner.getNextRows(request.getFetchRowNum());
-        SerializedResultSet.Builder resultSetBuilder = SerializedResultSet.newBuilder();
+
         resultSetBuilder.setSchema(queryResultScanner.getLogicalSchema().getProto());
         resultSetBuilder.addAllSerializedTuples(rows);
 
@@ -536,6 +537,7 @@ public class TajoMasterClientService extends AbstractService {
 
       } catch (Throwable t) {
         LOG.error(t.getMessage(), t);
+        builder.setResultSet(resultSetBuilder.build()); // required field
         builder.setResultCode(ResultCode.ERROR);
         String errorMessage = t.getMessage() == null ? t.getClass().getName() : t.getMessage();
         builder.setErrorMessage(errorMessage);