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 <[email protected]> Authored: Thu Jan 22 16:20:32 2015 +0900 Committer: jhkim <[email protected]> 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);
