This is an automated email from the ASF dual-hosted git repository. mhubail pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit c9a82db30c8e4a9255e378b420c24c0090681df4 Author: Michael Blow <[email protected]> AuthorDate: Mon Mar 3 15:59:27 2025 -0500 [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 <[email protected]> Reviewed-by: Hussain Towaileb <[email protected]> Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> --- .../org/apache/asterix/app/active/ActiveEntityEventsListener.java | 4 +++- .../api/rewriter/runtime/SuperActivityOperatorNodePushable.java | 2 +- .../src/main/java/org/apache/hyracks/http/server/WebManager.java | 8 +++----- 3 files changed, 7 insertions(+), 7 deletions(-) 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 ac636b7b52..6df2e3cf3b 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.client.IHyracksClientConnection; 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 @@ public abstract class ActiveEntityEventsListener implements IActiveEntityControl 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 856979c371..9f4ad5dfa2 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 @@ public class SuperActivityOperatorNodePushable implements IOperatorNodePushable } 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 b8347ae23f..3b17c06ad0 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.ArrayList; 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 @@ public class WebManager { 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; }
