Expose shutdown state in TaskRejectedException message
See gh-27090
This commit is contained in:
parent
ac11b03cd3
commit
464b676ec5
|
|
@ -206,7 +206,7 @@ public class ConcurrentTaskScheduler extends ConcurrentTaskExecutor implements T
|
|||
}
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + this.scheduledExecutor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(this.scheduledExecutor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -217,7 +217,7 @@ public class ConcurrentTaskScheduler extends ConcurrentTaskExecutor implements T
|
|||
return this.scheduledExecutor.schedule(decorateTask(task, false), NANO.convert(delay), NANO);
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + this.scheduledExecutor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(this.scheduledExecutor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -229,7 +229,7 @@ public class ConcurrentTaskScheduler extends ConcurrentTaskExecutor implements T
|
|||
NANO.convert(initialDelay), NANO.convert(period), NANO);
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + this.scheduledExecutor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(this.scheduledExecutor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -240,7 +240,7 @@ public class ConcurrentTaskScheduler extends ConcurrentTaskExecutor implements T
|
|||
0, NANO.convert(period), NANO);
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + this.scheduledExecutor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(this.scheduledExecutor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -252,7 +252,7 @@ public class ConcurrentTaskScheduler extends ConcurrentTaskExecutor implements T
|
|||
NANO.convert(initialDelay), NANO.convert(delay), NANO);
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + this.scheduledExecutor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(this.scheduledExecutor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -263,7 +263,7 @@ public class ConcurrentTaskScheduler extends ConcurrentTaskExecutor implements T
|
|||
0, NANO.convert(delay), NANO);
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + this.scheduledExecutor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(this.scheduledExecutor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -362,7 +362,7 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
|
|||
executor.execute(task);
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -373,7 +373,7 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
|
|||
return executor.submit(task);
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -384,7 +384,7 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
|
|||
return executor.submit(task);
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -397,7 +397,7 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
|
|||
return future;
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -410,7 +410,7 @@ public class ThreadPoolTaskExecutor extends ExecutorConfigurationSupport
|
|||
return future;
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -290,7 +290,7 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport
|
|||
executor.execute(errorHandlingTask(task, false));
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -301,7 +301,7 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport
|
|||
return executor.submit(errorHandlingTask(task, false));
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -317,7 +317,7 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport
|
|||
return executor.submit(taskToUse);
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -330,7 +330,7 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport
|
|||
return listenableFuture;
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -343,7 +343,7 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport
|
|||
return listenableFuture;
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -379,7 +379,7 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport
|
|||
return new ReschedulingRunnable(task, trigger, this.clock, executor, errorHandler).schedule();
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -391,7 +391,7 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport
|
|||
return executor.schedule(errorHandlingTask(task, false), NANO.convert(delay), NANO);
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -404,7 +404,7 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport
|
|||
NANO.convert(initialDelay), NANO.convert(period), NANO);
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -416,7 +416,7 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport
|
|||
0, NANO.convert(period), NANO);
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -429,7 +429,7 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport
|
|||
NANO.convert(initialDelay), NANO.convert(delay), NANO);
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -441,7 +441,7 @@ public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport
|
|||
0, NANO.convert(delay), NANO);
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(executor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
* Copyright 2002-2023 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -16,6 +16,8 @@
|
|||
|
||||
package org.springframework.core.task;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.RejectedExecutionException;
|
||||
|
||||
/**
|
||||
|
|
@ -50,4 +52,26 @@ public class TaskRejectedException extends RejectedExecutionException {
|
|||
super(msg, cause);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new {@code TaskRejectedException}
|
||||
* with a default message for the given executor and task.
|
||||
* @param executor the {@code Executor} that rejected the task
|
||||
* @param task the task object that got rejected
|
||||
* @param cause the original {@link RejectedExecutionException}
|
||||
* @since 6.1
|
||||
* @see ExecutorService#isShutdown()
|
||||
* @see java.util.concurrent.RejectedExecutionException
|
||||
*/
|
||||
public TaskRejectedException(Executor executor, Object task, RejectedExecutionException cause) {
|
||||
super(executorDescription(executor) + " did not accept task: " + task, cause);
|
||||
}
|
||||
|
||||
|
||||
private static String executorDescription(Executor executor) {
|
||||
if (executor instanceof ExecutorService executorService) {
|
||||
return "ExecutorService in " + (executorService.isShutdown() ? "shutdown" : "active") + " state";
|
||||
}
|
||||
return executor.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -93,8 +93,7 @@ public class TaskExecutorAdapter implements AsyncListenableTaskExecutor {
|
|||
doExecute(this.concurrentExecutor, this.taskDecorator, task);
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException(
|
||||
"Executor [" + this.concurrentExecutor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(this.concurrentExecutor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -112,8 +111,7 @@ public class TaskExecutorAdapter implements AsyncListenableTaskExecutor {
|
|||
}
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException(
|
||||
"Executor [" + this.concurrentExecutor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(this.concurrentExecutor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -131,8 +129,7 @@ public class TaskExecutorAdapter implements AsyncListenableTaskExecutor {
|
|||
}
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException(
|
||||
"Executor [" + this.concurrentExecutor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(this.concurrentExecutor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -144,8 +141,7 @@ public class TaskExecutorAdapter implements AsyncListenableTaskExecutor {
|
|||
return future;
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException(
|
||||
"Executor [" + this.concurrentExecutor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(this.concurrentExecutor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -157,8 +153,7 @@ public class TaskExecutorAdapter implements AsyncListenableTaskExecutor {
|
|||
return future;
|
||||
}
|
||||
catch (RejectedExecutionException ex) {
|
||||
throw new TaskRejectedException(
|
||||
"Executor [" + this.concurrentExecutor + "] did not accept task: " + task, ex);
|
||||
throw new TaskRejectedException(this.concurrentExecutor, task, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue