From e23b6c86a9b789cda50f37c45074f98bada6feb9 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Fri, 27 Mar 2026 13:57:13 +0800 Subject: [PATCH 1/8] Try to fix pipeline java - spring not stable in Java 21 --- eng/pipelines/templates/stages/archetype-sdk-client.yml | 6 +++++- sdk/spring/ci.yml | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/eng/pipelines/templates/stages/archetype-sdk-client.yml b/eng/pipelines/templates/stages/archetype-sdk-client.yml index 9b5ff098bd23..4795ec82e61e 100644 --- a/eng/pipelines/templates/stages/archetype-sdk-client.yml +++ b/eng/pipelines/templates/stages/archetype-sdk-client.yml @@ -34,6 +34,9 @@ parameters: - name: MatrixReplace type: object default: [] + - name: SkipAzureTestReplace + type: boolean + default: false - name: PreBuildSteps type: object default: [] @@ -121,7 +124,8 @@ extends: - ${{ each replacement in parameters.MatrixReplace }}: - ${{ replacement }} - - AZURE_TEST.*=.*/ + - ${{ if ne(parameters.SkipAzureTestReplace, true) }}: + - AZURE_TEST.*=.*/ - ${{ if eq(parameters.SDKType, 'data') }}: - JavaTestVersion=(.*1)\.\d{2}(.*)/$1.11$2 PreBuildSteps: ${{ parameters.PreBuildSteps }} diff --git a/sdk/spring/ci.yml b/sdk/spring/ci.yml index 5b6ae4151867..8dfc7c64afbe 100644 --- a/sdk/spring/ci.yml +++ b/sdk/spring/ci.yml @@ -611,5 +611,6 @@ extends: skipVerifyChangeLog: true releaseInBatch: ${{ parameters.release_springcloudazurestartermonitor }} TestParallelization: '1' + SkipAzureTestReplace: true MatrixFilters: - JavaTestVersion=^(?!1.8|1.11).* From 6149dd66c0f11512a3ed131e03bf4f8ec9e275fe Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Fri, 27 Mar 2026 14:52:47 +0800 Subject: [PATCH 2/8] Try to fix the pipeline block issue by adding 'Thread.sleep(2000)', just like this PR: https://github.com/Azure/azure-sdk-for-java/pull/47990/changes --- .../inbound/EventHubsInboundChannelAdapterTests.java | 10 ++++++++-- .../inbound/ServiceBusInboundChannelAdapterTests.java | 5 ++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java b/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java index 6f991a5d5115..ce5994d47cc0 100644 --- a/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java +++ b/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java @@ -180,6 +180,9 @@ void sendAndReceive() throws InterruptedException { MessageListener messageListener = listenerContainer.getContainerProperties().getMessageListener(); assertTrue(messageListener instanceof EventHubsRecordMessageListener); List payloads = Arrays.asList("a", "b", "c"); + + Thread.sleep(2000); + payloads.stream() .map(payload -> { EventContext mock = mock(EventContext.class); @@ -191,7 +194,7 @@ void sendAndReceive() throws InterruptedException { .forEach(eventContext -> ((EventHubsRecordMessageListener) messageListener).onMessage(eventContext)); - assertTrue(latch.await(5L, TimeUnit.SECONDS), "Failed to receive message"); + assertTrue(latch.await(100, TimeUnit.SECONDS), "Failed to receive message"); for (int i = 0; i < receivedMessages.size(); i++) { Assertions.assertEquals(receivedMessages.get(i), payloads.get(i)); @@ -230,6 +233,9 @@ void sendAndReceiveBatch() throws InterruptedException { MessageListener messageListener = listenerContainer.getContainerProperties().getMessageListener(); assertTrue(messageListener instanceof EventHubsBatchMessageListener); List payloads = Arrays.asList("a", "b", "c", "d", "e", "f"); + + Thread.sleep(2000); + IntStream.range(0, 3) .mapToObj(i -> { EventBatchContext mock = mock(EventBatchContext.class); @@ -241,7 +247,7 @@ void sendAndReceiveBatch() throws InterruptedException { .forEach(eventContext -> ((EventHubsBatchMessageListener) messageListener).onMessage(eventContext)); - assertTrue(latch.await(5L, TimeUnit.SECONDS), "Failed to receive message"); + assertTrue(latch.await(100, TimeUnit.SECONDS), "Failed to receive message"); for (int i = 0; i < receivedMessages.size(); i++) { Assertions.assertEquals(receivedMessages.get(i), Arrays.asList(payloads.get(2 * i), payloads.get(2 * i + 1))); diff --git a/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java b/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java index bb72a17d3a18..a758b404708e 100644 --- a/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java +++ b/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java @@ -158,6 +158,9 @@ void sendAndReceive() throws InterruptedException { MessageListener messageListener = listenerContainer.getContainerProperties().getMessageListener(); assertTrue(messageListener instanceof ServiceBusRecordMessageListener); List payloads = Arrays.asList("a", "b", "c"); + + Thread.sleep(2000); + payloads.stream() .map(payload -> { ServiceBusReceivedMessageContext mock = mock(ServiceBusReceivedMessageContext.class); @@ -169,7 +172,7 @@ void sendAndReceive() throws InterruptedException { .forEach(context -> ((ServiceBusRecordMessageListener) messageListener).onMessage(context)); - assertTrue(latch.await(5L, TimeUnit.SECONDS), "Failed to receive message"); + assertTrue(latch.await(100, TimeUnit.SECONDS), "Failed to receive message"); for (int i = 0; i < receivedMessages.size(); i++) { Assertions.assertEquals(receivedMessages.get(i), payloads.get(i)); From 47cadf19aaae9851a8537a4abfa5b16fb9fe153b Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Fri, 27 Mar 2026 15:20:47 +0800 Subject: [PATCH 3/8] Increase Thread.sleep to 5 seconds in unit tests for JDK 21 stability --- .../inbound/EventHubsInboundChannelAdapterTests.java | 4 ++-- .../inbound/ServiceBusInboundChannelAdapterTests.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java b/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java index ce5994d47cc0..7d4261928b4e 100644 --- a/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java +++ b/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java @@ -181,7 +181,7 @@ void sendAndReceive() throws InterruptedException { assertTrue(messageListener instanceof EventHubsRecordMessageListener); List payloads = Arrays.asList("a", "b", "c"); - Thread.sleep(2000); + Thread.sleep(5000); payloads.stream() .map(payload -> { @@ -234,7 +234,7 @@ void sendAndReceiveBatch() throws InterruptedException { assertTrue(messageListener instanceof EventHubsBatchMessageListener); List payloads = Arrays.asList("a", "b", "c", "d", "e", "f"); - Thread.sleep(2000); + Thread.sleep(5000); IntStream.range(0, 3) .mapToObj(i -> { diff --git a/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java b/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java index a758b404708e..980eb33003cd 100644 --- a/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java +++ b/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java @@ -159,7 +159,7 @@ void sendAndReceive() throws InterruptedException { assertTrue(messageListener instanceof ServiceBusRecordMessageListener); List payloads = Arrays.asList("a", "b", "c"); - Thread.sleep(2000); + Thread.sleep(5000); payloads.stream() .map(payload -> { From 7b4dff53b2b6ef4b066db2b4d475284ccfdd7488 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Fri, 27 Mar 2026 16:01:12 +0800 Subject: [PATCH 4/8] Revert "Increase Thread.sleep to 5 seconds in unit tests for JDK 21 stability" This reverts commit 47cadf19aaae9851a8537a4abfa5b16fb9fe153b. --- .../inbound/EventHubsInboundChannelAdapterTests.java | 4 ++-- .../inbound/ServiceBusInboundChannelAdapterTests.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java b/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java index 7d4261928b4e..ce5994d47cc0 100644 --- a/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java +++ b/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java @@ -181,7 +181,7 @@ void sendAndReceive() throws InterruptedException { assertTrue(messageListener instanceof EventHubsRecordMessageListener); List payloads = Arrays.asList("a", "b", "c"); - Thread.sleep(5000); + Thread.sleep(2000); payloads.stream() .map(payload -> { @@ -234,7 +234,7 @@ void sendAndReceiveBatch() throws InterruptedException { assertTrue(messageListener instanceof EventHubsBatchMessageListener); List payloads = Arrays.asList("a", "b", "c", "d", "e", "f"); - Thread.sleep(5000); + Thread.sleep(2000); IntStream.range(0, 3) .mapToObj(i -> { diff --git a/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java b/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java index 980eb33003cd..a758b404708e 100644 --- a/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java +++ b/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java @@ -159,7 +159,7 @@ void sendAndReceive() throws InterruptedException { assertTrue(messageListener instanceof ServiceBusRecordMessageListener); List payloads = Arrays.asList("a", "b", "c"); - Thread.sleep(5000); + Thread.sleep(2000); payloads.stream() .map(payload -> { From 4dd395295d32c70582af2f9593b38f584a8e4b70 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Fri, 27 Mar 2026 16:02:54 +0800 Subject: [PATCH 5/8] Revert "Try to fix the pipeline block issue by adding 'Thread.sleep(2000)', just like this PR: https://github.com/Azure/azure-sdk-for-java/pull/47990/changes" This reverts commit 6149dd66c0f11512a3ed131e03bf4f8ec9e275fe. --- .../inbound/EventHubsInboundChannelAdapterTests.java | 10 ++-------- .../inbound/ServiceBusInboundChannelAdapterTests.java | 5 +---- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java b/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java index ce5994d47cc0..6f991a5d5115 100644 --- a/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java +++ b/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java @@ -180,9 +180,6 @@ void sendAndReceive() throws InterruptedException { MessageListener messageListener = listenerContainer.getContainerProperties().getMessageListener(); assertTrue(messageListener instanceof EventHubsRecordMessageListener); List payloads = Arrays.asList("a", "b", "c"); - - Thread.sleep(2000); - payloads.stream() .map(payload -> { EventContext mock = mock(EventContext.class); @@ -194,7 +191,7 @@ void sendAndReceive() throws InterruptedException { .forEach(eventContext -> ((EventHubsRecordMessageListener) messageListener).onMessage(eventContext)); - assertTrue(latch.await(100, TimeUnit.SECONDS), "Failed to receive message"); + assertTrue(latch.await(5L, TimeUnit.SECONDS), "Failed to receive message"); for (int i = 0; i < receivedMessages.size(); i++) { Assertions.assertEquals(receivedMessages.get(i), payloads.get(i)); @@ -233,9 +230,6 @@ void sendAndReceiveBatch() throws InterruptedException { MessageListener messageListener = listenerContainer.getContainerProperties().getMessageListener(); assertTrue(messageListener instanceof EventHubsBatchMessageListener); List payloads = Arrays.asList("a", "b", "c", "d", "e", "f"); - - Thread.sleep(2000); - IntStream.range(0, 3) .mapToObj(i -> { EventBatchContext mock = mock(EventBatchContext.class); @@ -247,7 +241,7 @@ void sendAndReceiveBatch() throws InterruptedException { .forEach(eventContext -> ((EventHubsBatchMessageListener) messageListener).onMessage(eventContext)); - assertTrue(latch.await(100, TimeUnit.SECONDS), "Failed to receive message"); + assertTrue(latch.await(5L, TimeUnit.SECONDS), "Failed to receive message"); for (int i = 0; i < receivedMessages.size(); i++) { Assertions.assertEquals(receivedMessages.get(i), Arrays.asList(payloads.get(2 * i), payloads.get(2 * i + 1))); diff --git a/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java b/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java index a758b404708e..bb72a17d3a18 100644 --- a/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java +++ b/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java @@ -158,9 +158,6 @@ void sendAndReceive() throws InterruptedException { MessageListener messageListener = listenerContainer.getContainerProperties().getMessageListener(); assertTrue(messageListener instanceof ServiceBusRecordMessageListener); List payloads = Arrays.asList("a", "b", "c"); - - Thread.sleep(2000); - payloads.stream() .map(payload -> { ServiceBusReceivedMessageContext mock = mock(ServiceBusReceivedMessageContext.class); @@ -172,7 +169,7 @@ void sendAndReceive() throws InterruptedException { .forEach(context -> ((ServiceBusRecordMessageListener) messageListener).onMessage(context)); - assertTrue(latch.await(100, TimeUnit.SECONDS), "Failed to receive message"); + assertTrue(latch.await(5L, TimeUnit.SECONDS), "Failed to receive message"); for (int i = 0; i < receivedMessages.size(); i++) { Assertions.assertEquals(receivedMessages.get(i), payloads.get(i)); From 8e2a3a10f34efedf99737299244133baf0d59c77 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Fri, 27 Mar 2026 16:51:04 +0800 Subject: [PATCH 6/8] Add MatrixReplace --- sdk/spring/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sdk/spring/ci.yml b/sdk/spring/ci.yml index 8dfc7c64afbe..0e94c0720676 100644 --- a/sdk/spring/ci.yml +++ b/sdk/spring/ci.yml @@ -612,5 +612,8 @@ extends: releaseInBatch: ${{ parameters.release_springcloudazurestartermonitor }} TestParallelization: '1' SkipAzureTestReplace: true + MatrixReplace: + - Pool=env:LINUXPOOL/env:WINDOWSPOOL + - OSVmImage=env:LINUXVMIMAGE/env:WINDOWSVMIMAGE MatrixFilters: - JavaTestVersion=^(?!1.8|1.11).* From 6a38d7ecacfe5e272e677cfafa0d8bdaf953eade Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Fri, 27 Mar 2026 16:58:29 +0800 Subject: [PATCH 7/8] Update OS type by updating platform-matrixmjson --- eng/pipelines/templates/stages/platform-matrix.json | 6 +++--- sdk/spring/ci.yml | 3 --- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/eng/pipelines/templates/stages/platform-matrix.json b/eng/pipelines/templates/stages/platform-matrix.json index 5dcd7237067d..ec00a2e83b1b 100644 --- a/eng/pipelines/templates/stages/platform-matrix.json +++ b/eng/pipelines/templates/stages/platform-matrix.json @@ -91,7 +91,7 @@ }, { "Agent": { - "ubuntu-24.04": { "OSVmImage": "env:LINUXVMIMAGE", "Pool": "env:LINUXPOOL" } + "windows-2022": { "OSVmImage": "env:WINDOWSVMIMAGE", "Pool": "env:WINDOWSPOOL" } }, "JavaTestVersion": "1.21", "AZURE_TEST_HTTP_CLIENTS": "netty", @@ -106,7 +106,7 @@ }, { "Agent": { - "ubuntu-24.04": { "OSVmImage": "env:LINUXVMIMAGE", "Pool": "env:LINUXPOOL" } + "windows-2022": { "OSVmImage": "env:WINDOWSVMIMAGE", "Pool": "env:WINDOWSPOOL" } }, "JavaTestVersion": "1.21", "AZURE_TEST_HTTP_CLIENTS": "JdkHttpClientProvider", @@ -121,7 +121,7 @@ }, { "Agent": { - "ubuntu-24.04": { "OSVmImage": "env:LINUXVMIMAGE", "Pool": "env:LINUXPOOL" } + "windows-2022": { "OSVmImage": "env:WINDOWSVMIMAGE", "Pool": "env:WINDOWSPOOL" } }, "JavaTestVersion": "1.21", "AZURE_TEST_HTTP_CLIENTS": "VertxHttpClientProvider", diff --git a/sdk/spring/ci.yml b/sdk/spring/ci.yml index 0e94c0720676..8dfc7c64afbe 100644 --- a/sdk/spring/ci.yml +++ b/sdk/spring/ci.yml @@ -612,8 +612,5 @@ extends: releaseInBatch: ${{ parameters.release_springcloudazurestartermonitor }} TestParallelization: '1' SkipAzureTestReplace: true - MatrixReplace: - - Pool=env:LINUXPOOL/env:WINDOWSPOOL - - OSVmImage=env:LINUXVMIMAGE/env:WINDOWSVMIMAGE MatrixFilters: - JavaTestVersion=^(?!1.8|1.11).* From 7cbdcdb3c3e723653a79ee4bb1102f5cee42dc14 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Fri, 27 Mar 2026 17:19:19 +0800 Subject: [PATCH 8/8] Rename to SkipAzureTestReplace to testAllHttpClients --- eng/pipelines/templates/stages/archetype-sdk-client.yml | 4 ++-- sdk/spring/ci.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/pipelines/templates/stages/archetype-sdk-client.yml b/eng/pipelines/templates/stages/archetype-sdk-client.yml index 4795ec82e61e..49b581ae467d 100644 --- a/eng/pipelines/templates/stages/archetype-sdk-client.yml +++ b/eng/pipelines/templates/stages/archetype-sdk-client.yml @@ -34,7 +34,7 @@ parameters: - name: MatrixReplace type: object default: [] - - name: SkipAzureTestReplace + - name: testAllHttpClients type: boolean default: false - name: PreBuildSteps @@ -124,7 +124,7 @@ extends: - ${{ each replacement in parameters.MatrixReplace }}: - ${{ replacement }} - - ${{ if ne(parameters.SkipAzureTestReplace, true) }}: + - ${{ if ne(parameters.testAllHttpClients, true) }}: - AZURE_TEST.*=.*/ - ${{ if eq(parameters.SDKType, 'data') }}: - JavaTestVersion=(.*1)\.\d{2}(.*)/$1.11$2 diff --git a/sdk/spring/ci.yml b/sdk/spring/ci.yml index 8dfc7c64afbe..68d281f40f20 100644 --- a/sdk/spring/ci.yml +++ b/sdk/spring/ci.yml @@ -611,6 +611,6 @@ extends: skipVerifyChangeLog: true releaseInBatch: ${{ parameters.release_springcloudazurestartermonitor }} TestParallelization: '1' - SkipAzureTestReplace: true + testAllHttpClients: true MatrixFilters: - JavaTestVersion=^(?!1.8|1.11).*