[NO ISSUE][OTH] Do not send cancellation on null clientContextId
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- Currently when a query is cancelled or times out, a cancellation
request is sent even if the clientContextId is null, which results
in NPE when trying to get the job. This change skips sending the
cancellation when the clientContextId is null.
Change-Id: I4ec6d2596cc345aa0f6b9910248807d6a95a3aee
Reviewed-on: https://asterix-gerrit.ics.uci.edu/3200
Reviewed-by: Michael Blow <mblow@apache.org>
Integration-Tests: Murtadha Hubail <mhubail@apache.org>
Tested-by: Ian Maxon <imaxon@uci.edu>
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
index 55f3369..d9b69cb 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
@@ -136,6 +136,9 @@
private void cancelQuery(INCMessageBroker messageBroker, String nodeId, String clientContextID, Exception exception,
boolean wait) {
+ if (clientContextID == null) {
+ return;
+ }
MessageFuture cancelQueryFuture = messageBroker.registerMessageFuture();
try {
CancelQueryRequest cancelQueryMessage =
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RequestTracker.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RequestTracker.java
index f651eb36..a0ab559 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RequestTracker.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RequestTracker.java
@@ -21,6 +21,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
+import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.asterix.common.api.IClientRequest;
@@ -45,6 +46,7 @@
@Override
public IClientRequest getByClientContextId(String clientContextId) {
+ Objects.requireNonNull(clientContextId, "clientContextId must not be null");
return clientIdRequests.get(clientContextId);
}