diff --git a/service/src/java/org/apache/hive/service/cli/operation/OperationManager.java b/service/src/java/org/apache/hive/service/cli/operation/OperationManager.java index 8db6a297df..f20b7eca0f 100644 --- a/service/src/java/org/apache/hive/service/cli/operation/OperationManager.java +++ b/service/src/java/org/apache/hive/service/cli/operation/OperationManager.java @@ -62,6 +62,8 @@ new ConcurrentHashMap(); private final ConcurrentHashMap queryIdOperation = new ConcurrentHashMap(); + private final ConcurrentHashMap operationQueryId = + new ConcurrentHashMap(); private final ConcurrentHashMap queryTagToIdMap = new ConcurrentHashMap<>(); //Following fields for displaying queries on WebUI @@ -194,6 +196,7 @@ private void addOperation(Operation operation) { LOG.info("Adding operation: " + operation.getHandle()); queryIdOperation.put(getQueryId(operation), operation); handleToOperation.put(operation.getHandle(), operation); + operationQueryId.put(operation.toString(), getQueryId(operation)); if (operation instanceof SQLOperation) { synchronized (webuiLock) { liveQueryInfos.put(operation.getHandle().getHandleIdentifier().toString(), @@ -223,6 +226,11 @@ private Operation removeOperation(OperationHandle opHandle) { } String queryId = getQueryId(operation); queryIdOperation.remove(queryId); + String optionID = operationQueryId.get(operation.toString()); + if (optionID != null){ + queryIdOperation.remove(optionID); + } + LOG.info("QueryIdOperation size is: {}, HandleToOperation Size is: {} ", queryIdOperation.size(), handleToOperation.size()); String queryTag = operation.getQueryTag(); if (queryTag != null) { queryTagToIdMap.remove(queryTag);