[NO ISSUE][ING] Set JobId in thread waiting for job to complete
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- When stopping an active job, set the job Id in the thread to enable
debugging if the job gets stuck.
Change-Id: Ic19d11f150aa404522133d4d7227c758dbf0de6a
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2850
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <mhubail@apache.org>
diff --git a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveManager.java b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveManager.java
index 6373d6c..4adffda 100644
--- a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveManager.java
+++ b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveManager.java
@@ -172,8 +172,6 @@
executor.execute(() -> {
try {
stopIfRunning(runtime, content.getTimeout(), content.getUnit());
- } catch (Exception e) {
- LOGGER.warn("Failed to stop runtime: {}", runtimeId, e);
} catch (Throwable th) {
LOGGER.warn("Failed to stop runtime: {}", runtimeId, th);
ExitUtil.halt(ExitUtil.EC_UNCAUGHT_THROWABLE);
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 77b8647..362f924 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
@@ -45,8 +45,8 @@
import org.apache.asterix.translator.SessionOutput;
import org.apache.commons.lang3.tuple.Triple;
import org.apache.hyracks.api.application.INCServiceContext;
-import org.apache.hyracks.api.result.ResultSetId;
import org.apache.hyracks.api.job.JobId;
+import org.apache.hyracks.api.result.ResultSetId;
import org.apache.hyracks.http.api.IChannelClosedHandler;
import org.apache.hyracks.http.api.IServletRequest;
import org.apache.hyracks.http.server.HttpServer;
@@ -144,6 +144,7 @@
CancelQueryRequest cancelQueryMessage =
new CancelQueryRequest(nodeId, cancelQueryFuture.getFutureId(), clientContextID);
// TODO(mblow): multicc -- need to send cancellation to the correct cc
+ LOGGER.info("Cancelling query due to {}", exception.getClass().getSimpleName());
messageBroker.sendMessageToPrimaryCC(cancelQueryMessage);
if (wait) {
cancelQueryFuture.get(ExecuteStatementRequestMessage.DEFAULT_QUERY_CANCELLATION_WAIT_MILLIS,
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveEntityEventsListener.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveEntityEventsListener.java
index b5432c5..22c9b5d 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveEntityEventsListener.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveEntityEventsListener.java
@@ -450,7 +450,9 @@
}
WaitForStateSubscriber subscriber = new WaitForStateSubscriber(this, waitFor);
// Note: once we start sending stop messages, we can't go back until the entity is stopped
+ final String nameBefore = Thread.currentThread().getName();
try {
+ Thread.currentThread().setName(nameBefore + " : WaitForCompletionForJobId: " + jobId);
sendStopMessages(metadataProvider, timeout, unit);
LOGGER.log(Level.DEBUG, "Waiting for its state to become " + waitFor);
subscriber.sync();
@@ -460,6 +462,8 @@
Thread.currentThread().interrupt();
} catch (Throwable e) {
forceStop(subscriber, e);
+ } finally {
+ Thread.currentThread().setName(nameBefore);
}
}