Invert order of suppressed exceptions (for common exception rendering)
See gh-35057
This commit is contained in:
parent
90c875144a
commit
e828bbbb0a
|
@ -19,7 +19,6 @@ package org.springframework.core.retry;
|
|||
import java.time.Duration;
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.Deque;
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.jspecify.annotations.Nullable;
|
||||
|
||||
|
@ -203,9 +202,7 @@ public class RetryTemplate implements RetryOperations {
|
|||
RetryException finalException = new RetryException(
|
||||
"Retry policy for operation '%s' exhausted; aborting execution".formatted(retryableName),
|
||||
exceptions.removeLast());
|
||||
for (Iterator<Throwable> it = exceptions.descendingIterator(); it.hasNext();) {
|
||||
finalException.addSuppressed(it.next());
|
||||
}
|
||||
exceptions.forEach(finalException::addSuppressed);
|
||||
this.retryListener.onRetryPolicyExhaustion(retryExecution, finalException);
|
||||
throw finalException;
|
||||
}
|
||||
|
|
|
@ -178,8 +178,8 @@ class RetryTemplateTests {
|
|||
.withMessage("Retry policy for operation 'test' exhausted; aborting execution")
|
||||
.withCauseExactlyInstanceOf(IllegalStateException.class)
|
||||
.satisfies(hasSuppressedExceptionsSatisfyingExactly(
|
||||
suppressed1 -> assertThat(suppressed1).isExactlyInstanceOf(IOException.class),
|
||||
suppressed2 -> assertThat(suppressed2).isExactlyInstanceOf(FileNotFoundException.class)
|
||||
suppressed1 -> assertThat(suppressed1).isExactlyInstanceOf(FileNotFoundException.class),
|
||||
suppressed2 -> assertThat(suppressed2).isExactlyInstanceOf(IOException.class)
|
||||
));
|
||||
// 3 = 1 initial invocation + 2 retry attempts
|
||||
assertThat(invocationCount).hasValue(3);
|
||||
|
|
Loading…
Reference in New Issue