From 007a347ade29e6f59a55d1f7c4e593b6869e3fb8 Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Fri, 12 Jul 2024 17:35:21 +0100 Subject: [PATCH] Refine executor description in WebSocketMessageBrokerStats Closes gh-33104 --- .../config/WebSocketMessageBrokerStats.java | 19 +++++++++++++++---- .../WebSocketMessageBrokerStatsTests.java | 6 +++--- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/config/WebSocketMessageBrokerStats.java b/spring-websocket/src/main/java/org/springframework/web/socket/config/WebSocketMessageBrokerStats.java index 5cc7c3911ab..4795d4f2aa3 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/config/WebSocketMessageBrokerStats.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/config/WebSocketMessageBrokerStats.java @@ -30,6 +30,7 @@ import org.springframework.beans.factory.SmartInitializingSingleton; import org.springframework.core.task.TaskExecutor; import org.springframework.lang.Nullable; import org.springframework.messaging.simp.stomp.StompBrokerRelayMessageHandler; +import org.springframework.scheduling.SchedulingTaskExecutor; import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; @@ -239,9 +240,15 @@ public class WebSocketMessageBrokerStats implements SmartInitializingSingleton { if (this.sockJsTaskScheduler == null) { return "null"; } - if (this.sockJsTaskScheduler instanceof ThreadPoolTaskScheduler threadPoolTaskScheduler) { - return getExecutorStatsInfo(threadPoolTaskScheduler.getScheduledThreadPoolExecutor()); + + if (!(this.sockJsTaskScheduler instanceof SchedulingTaskExecutor)) { + return "thread-per-task"; + } + + if (this.sockJsTaskScheduler instanceof ThreadPoolTaskScheduler tpts) { + return getExecutorStatsInfo(tpts.getScheduledThreadPoolExecutor()); } + return "unknown"; } @@ -250,8 +257,12 @@ public class WebSocketMessageBrokerStats implements SmartInitializingSingleton { return "null"; } - if (executor instanceof ThreadPoolTaskExecutor threadPoolTaskScheduler) { - executor = threadPoolTaskScheduler.getThreadPoolExecutor(); + if (!(executor instanceof SchedulingTaskExecutor) && (executor instanceof TaskExecutor)) { + return "thread-per-task"; + } + + if (executor instanceof ThreadPoolTaskExecutor tpte) { + executor = tpte.getThreadPoolExecutor(); } if (executor instanceof ThreadPoolExecutor) { diff --git a/spring-websocket/src/test/java/org/springframework/web/socket/config/WebSocketMessageBrokerStatsTests.java b/spring-websocket/src/test/java/org/springframework/web/socket/config/WebSocketMessageBrokerStatsTests.java index 318dbfc97e2..67381e52eb6 100644 --- a/spring-websocket/src/test/java/org/springframework/web/socket/config/WebSocketMessageBrokerStatsTests.java +++ b/spring-websocket/src/test/java/org/springframework/web/socket/config/WebSocketMessageBrokerStatsTests.java @@ -65,8 +65,8 @@ class WebSocketMessageBrokerStatsTests { stats.setInboundChannelExecutor(executor); stats.setOutboundChannelExecutor(executor); - assertThat(stats.getClientInboundExecutorStatsInfo()).as("inbound channel stats").isEqualTo("unknown"); - assertThat(stats.getClientOutboundExecutorStatsInfo()).as("outbound channel stats").isEqualTo("unknown"); + assertThat(stats.getClientInboundExecutorStatsInfo()).as("inbound channel stats").isEqualTo("thread-per-task"); + assertThat(stats.getClientOutboundExecutorStatsInfo()).as("outbound channel stats").isEqualTo("thread-per-task"); } @Test @@ -86,7 +86,7 @@ class WebSocketMessageBrokerStatsTests { stats.setSockJsTaskScheduler(scheduler); - assertThat(stats.getSockJsTaskSchedulerStatsInfo()).isEqualTo("unknown"); + assertThat(stats.getSockJsTaskSchedulerStatsInfo()).isEqualTo("thread-per-task"); } }