[NO ISSUE][RT] Preserve interrupts, fix log typo

Ext-ref: MB-65548
Change-Id: Idcf26ce492f2b9a868a5f77f62a0f24ac2b9b70d
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19486
Reviewed-by: Michael Blow <mblow@apache.org>
Reviewed-by: Hussain Towaileb <hussainht@gmail.com>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
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 ac636b7..6df2e3c 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
@@ -65,6 +65,7 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.job.JobId;
 import org.apache.hyracks.api.job.JobStatus;
+import org.apache.hyracks.api.util.ExceptionUtils;
 import org.apache.hyracks.api.util.InvokeUtil;
 import org.apache.hyracks.util.ExitUtil;
 import org.apache.hyracks.util.Span;
@@ -454,7 +455,8 @@
             metadataProvider.getApplicationContext().getHcc().cancelJob(jobId);
         } catch (Throwable th) {
             LOGGER.warn("Failed to cancel active job {}", jobId, th);
-            e.addSuppressed(th);
+            // use ExceptionUtils.suppress() here to ensure we don't lose an interrupt
+            ExceptionUtils.suppress(e, th);
         }
     }
 
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivityOperatorNodePushable.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivityOperatorNodePushable.java
index 856979c..9f4ad5d 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivityOperatorNodePushable.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivityOperatorNodePushable.java
@@ -305,7 +305,7 @@
             }
             preCancelStackTraces.keySet().removeIf(Predicate.not(runningThreads::contains));
             preCancelStackTraces.forEach((thread, stack) -> {
-                Throwable t = new Throwable(thread.getName() + "pre-interrupt stack");
+                Throwable t = new Throwable(thread.getName() + " pre-interrupt stack");
                 t.setStackTrace(stack);
                 LOGGER.warn("Task of job {} did not complete within {}: ", ctx.getJobletContext().getJobId(),
                         completionPoll, t);
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/WebManager.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/WebManager.java
index b8347ae..3b17c06 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/WebManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/WebManager.java
@@ -22,6 +22,8 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.hyracks.api.util.ExceptionUtils;
+
 import io.netty.channel.EventLoopGroup;
 import io.netty.channel.nio.NioEventLoopGroup;
 import io.netty.util.internal.logging.Log4J2LoggerFactory;
@@ -102,11 +104,7 @@
         if (!stopExceptions.isEmpty()) {
             Exception ex = null;
             for (Exception stopException : stopExceptions) {
-                if (ex == null) {
-                    ex = stopException;
-                } else {
-                    ex.addSuppressed(stopException);
-                }
+                ex = ExceptionUtils.suppress(ex, stopException);
             }
             throw ex;
         }