From e126efbc6366aeca909a2c2fb471e726624a0d33 Mon Sep 17 00:00:00 2001 From: Steven Schlansker Date: Mon, 20 Mar 2023 12:14:15 -0700 Subject: [PATCH] FailsafeFuture: clear execution after completion (#362) This should fix result futures strongly retaining their computing functions --- core/src/main/java/dev/failsafe/spi/FailsafeFuture.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/src/main/java/dev/failsafe/spi/FailsafeFuture.java b/core/src/main/java/dev/failsafe/spi/FailsafeFuture.java index 700c8e6b..067a54f8 100644 --- a/core/src/main/java/dev/failsafe/spi/FailsafeFuture.java +++ b/core/src/main/java/dev/failsafe/spi/FailsafeFuture.java @@ -81,6 +81,8 @@ public synchronized boolean cancel(boolean mayInterruptIfRunning) { ExecutionResult result = ExecutionResult.exception(new CancellationException()); super.completeExceptionally(result.getException()); completionHandler.accept(result, newestExecution); + newestExecution = null; + cancelFunctions = null; return cancelResult; } @@ -99,6 +101,8 @@ public synchronized boolean completeResult(ExecutionResult result) { completed = super.completeExceptionally(exception); if (completed) completionHandler.accept(result, newestExecution); + newestExecution = null; + cancelFunctions = null; return completed; }