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;
         }
