diff --git a/server/src/main/java/org/elasticsearch/threadpool/ThreadPool.java b/server/src/main/java/org/elasticsearch/threadpool/ThreadPool.java index 9eb994896cbff..8c7137c47051a 100644 --- a/server/src/main/java/org/elasticsearch/threadpool/ThreadPool.java +++ b/server/src/main/java/org/elasticsearch/threadpool/ThreadPool.java @@ -941,7 +941,12 @@ public Info(String name, ThreadPoolType type, int min, int max, @Nullable TimeVa public Info(StreamInput in) throws IOException { name = in.readString(); - type = ThreadPoolType.fromType(in.readString()); + ThreadPoolType receivedType = ThreadPoolType.fromType(in.readString()); + type = switch (receivedType) { + case DIRECT, FIXED_AUTO_QUEUE_SIZE -> ThreadPoolType.FIXED; + default -> receivedType; + }; + min = in.readInt(); max = in.readInt(); keepAlive = in.readOptionalTimeValue(); diff --git a/server/src/test/java/org/elasticsearch/nodesinfo/NodeInfoStreamingTests.java b/server/src/test/java/org/elasticsearch/nodesinfo/NodeInfoStreamingTests.java index 33801dfb98417..4cfe26f03a3fb 100644 --- a/server/src/test/java/org/elasticsearch/nodesinfo/NodeInfoStreamingTests.java +++ b/server/src/test/java/org/elasticsearch/nodesinfo/NodeInfoStreamingTests.java @@ -138,7 +138,11 @@ private static NodeInfo createNodeInfo() { List threadPoolInfos = new ArrayList<>(numThreadPools); for (int i = 0; i < numThreadPools; i++) { threadPoolInfos.add( - new ThreadPool.Info(randomAlphaOfLengthBetween(3, 10), randomFrom(ThreadPool.ThreadPoolType.values()), randomInt()) + new ThreadPool.Info( + randomAlphaOfLengthBetween(3, 10), + randomFrom(ThreadPool.ThreadPoolType.FIXED, ThreadPool.ThreadPoolType.SCALING), + randomInt() + ) ); } threadPoolInfo = new ThreadPoolInfo(threadPoolInfos); diff --git a/server/src/test/java/org/elasticsearch/threadpool/ThreadPoolSerializationTests.java b/server/src/test/java/org/elasticsearch/threadpool/ThreadPoolSerializationTests.java index 29af090245c9e..4b9af2fb9d2cc 100644 --- a/server/src/test/java/org/elasticsearch/threadpool/ThreadPoolSerializationTests.java +++ b/server/src/test/java/org/elasticsearch/threadpool/ThreadPoolSerializationTests.java @@ -37,7 +37,7 @@ public class ThreadPoolSerializationTests extends ESTestCase { @Before public void setUp() throws Exception { super.setUp(); - threadPoolType = randomFrom(ThreadPool.ThreadPoolType.values()); + threadPoolType = randomFrom(ThreadPool.ThreadPoolType.FIXED, ThreadPool.ThreadPoolType.SCALING); } public void testThatQueueSizeSerializationWorks() throws Exception { @@ -123,4 +123,15 @@ public void testThatThreadPoolTypeIsSerializedCorrectly() throws IOException { assertThat(newInfo.getThreadPoolType(), is(threadPoolType)); } + + public void testThatDeprecatedTypesDeserializedAsFixed() throws IOException { + ThreadPool.Info info = new ThreadPool.Info("foo", ThreadPool.ThreadPoolType.DIRECT); + output.setTransportVersion(TransportVersion.current()); + info.writeTo(output); + + StreamInput input = output.bytes().streamInput(); + ThreadPool.Info newInfo = new ThreadPool.Info(input); + + assertThat(newInfo.getThreadPoolType(), is(ThreadPool.ThreadPoolType.FIXED)); + } }