This is an automated email from the ASF dual-hosted git repository.

lollipopjin pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new 41a3a35990 [ISSUE #10373] Fix quarantined flaky tests and remove CI 
rerun workflow (#10379)
41a3a35990 is described below

commit 41a3a3599013dd9babe6b43108ab9b3fda3e92c4
Author: lizhimins <[email protected]>
AuthorDate: Tue May 26 14:21:17 2026 +0800

    [ISSUE #10373] Fix quarantined flaky tests and remove CI rerun workflow 
(#10379)
---
 .github/workflows/rerun-workflow.yml               | 22 ----------------------
 .../queue/TransactionalMessageServiceImplTest.java |  4 +---
 .../trace/DefaultMQConsumerWithTraceTest.java      |  8 ++------
 .../DefaultMQLitePullConsumerWithTraceTest.java    | 16 +++++-----------
 .../apache/rocketmq/filter/BloomFilterTest.java    |  9 ++++-----
 5 files changed, 12 insertions(+), 47 deletions(-)

diff --git a/.github/workflows/rerun-workflow.yml 
b/.github/workflows/rerun-workflow.yml
deleted file mode 100644
index 6c319505d2..0000000000
--- a/.github/workflows/rerun-workflow.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-name: Rerun workflow
-on:
-  workflow_run:
-    workflows: ["Build and Run Tests by Maven" , "Build and Run Tests by 
Bazel"]
-    types:
-      - completed
-
-permissions:
-  actions: write
-
-jobs:
-  rerun:
-    if: github.event.workflow_run.conclusion == 'failure' && 
fromJSON(github.event.workflow_run.run_attempt) < 3
-    runs-on: ubuntu-latest
-    steps:
-      - name: rerun ${{  github.event.workflow_run.id }}
-        env:
-          GH_REPO:  ${{ github.repository }}
-          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        run: |
-          gh run watch ${{ github.event.workflow_run.id }} > /dev/null 2>&1
-          gh run rerun ${{ github.event.workflow_run.id }} --failed
\ No newline at end of file
diff --git 
a/broker/src/test/java/org/apache/rocketmq/broker/transaction/queue/TransactionalMessageServiceImplTest.java
 
b/broker/src/test/java/org/apache/rocketmq/broker/transaction/queue/TransactionalMessageServiceImplTest.java
index 2130caf37b..65980756bd 100644
--- 
a/broker/src/test/java/org/apache/rocketmq/broker/transaction/queue/TransactionalMessageServiceImplTest.java
+++ 
b/broker/src/test/java/org/apache/rocketmq/broker/transaction/queue/TransactionalMessageServiceImplTest.java
@@ -61,7 +61,6 @@ import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.timeout;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
-import org.junit.Ignore;
 
 @RunWith(MockitoJUnitRunner.class)
 public class TransactionalMessageServiceImplTest {
@@ -163,7 +162,6 @@ public class TransactionalMessageServiceImplTest {
         assertThat(res).isFalse();
     }
 
-    @Ignore("Flaky: fails 1/100 runs (1.0%)")
     @Test
     public void testDeletePrepareMessage_maxSize() throws InterruptedException 
{
         brokerController.getBrokerConfig().setTransactionOpMsgMaxSize(1);
@@ -171,7 +169,7 @@ public class TransactionalMessageServiceImplTest {
         queueTransactionMsgService.open();
         boolean res = 
queueTransactionMsgService.deletePrepareMessage(createMessageBrokerInner(1000, 
"test", "testHello"));
         assertThat(res).isTrue();
-        verify(bridge, timeout(50)).writeOp(any(Integer.class), 
any(Message.class));
+        verify(bridge, timeout(3000)).writeOp(any(Integer.class), 
any(Message.class));
         queueTransactionMsgService.close();
     }
 
diff --git 
a/client/src/test/java/org/apache/rocketmq/client/trace/DefaultMQConsumerWithTraceTest.java
 
b/client/src/test/java/org/apache/rocketmq/client/trace/DefaultMQConsumerWithTraceTest.java
index ffbb2d69ee..1ebe4fa835 100644
--- 
a/client/src/test/java/org/apache/rocketmq/client/trace/DefaultMQConsumerWithTraceTest.java
+++ 
b/client/src/test/java/org/apache/rocketmq/client/trace/DefaultMQConsumerWithTraceTest.java
@@ -49,7 +49,6 @@ import 
org.apache.rocketmq.client.impl.consumer.ConsumeMessageConcurrentlyServic
 import org.apache.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl;
 import org.apache.rocketmq.client.impl.consumer.ProcessQueue;
 import org.apache.rocketmq.client.impl.consumer.PullAPIWrapper;
-import org.apache.rocketmq.client.impl.consumer.PullMessageService;
 import org.apache.rocketmq.client.impl.consumer.PullRequest;
 import org.apache.rocketmq.client.impl.consumer.PullResultExt;
 import org.apache.rocketmq.client.impl.consumer.RebalancePushImpl;
@@ -88,7 +87,6 @@ import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
-import org.junit.Ignore;
 
 @RunWith(MockitoJUnitRunner.Silent.class)
 public class DefaultMQConsumerWithTraceTest {
@@ -217,7 +215,6 @@ public class DefaultMQConsumerWithTraceTest {
         pushConsumer.shutdown();
     }
 
-    @Ignore("Flaky: fails 1/100 runs (1.0%)")
     @Test
     public void testPullMessage_WithTrace_Success() throws 
InterruptedException, RemotingException, MQBrokerException, MQClientException {
         
traceProducer.getDefaultMQProducerImpl().getMqClientFactory().registerProducer(producerGroupTraceTemp,
 traceProducer.getDefaultMQProducerImpl());
@@ -234,9 +231,8 @@ public class DefaultMQConsumerWithTraceTest {
             }
         }));
 
-        PullMessageService pullMessageService = 
mQClientFactory.getPullMessageService();
-        pullMessageService.executePullRequestImmediately(createPullRequest());
-        countDownLatch.await(30, TimeUnit.SECONDS);
+        
pushConsumer.getDefaultMQPushConsumerImpl().pullMessage(createPullRequest());
+        countDownLatch.await(10, TimeUnit.SECONDS);
         MessageExt msg = messageAtomic.get();
         assertThat(msg).isNotNull();
         assertThat(msg.getTopic()).isEqualTo(topic);
diff --git 
a/client/src/test/java/org/apache/rocketmq/client/trace/DefaultMQLitePullConsumerWithTraceTest.java
 
b/client/src/test/java/org/apache/rocketmq/client/trace/DefaultMQLitePullConsumerWithTraceTest.java
index e81edaad8e..9c4454a11b 100644
--- 
a/client/src/test/java/org/apache/rocketmq/client/trace/DefaultMQLitePullConsumerWithTraceTest.java
+++ 
b/client/src/test/java/org/apache/rocketmq/client/trace/DefaultMQLitePullConsumerWithTraceTest.java
@@ -80,8 +80,6 @@ import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.lenient;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
-import org.junit.Ignore;
-
 @RunWith(MockitoJUnitRunner.class)
 public class DefaultMQLitePullConsumerWithTraceTest {
 
@@ -118,6 +116,11 @@ public class DefaultMQLitePullConsumerWithTraceTest {
                 MQClientManager.getInstance(), "factoryTable", true);
         factoryTable.forEach((clientId, instance) -> instance.shutdown());
         factoryTable.clear();
+
+        Field field = RebalanceService.class.getDeclaredField("waitInterval");
+        field.setAccessible(true);
+        field.set(null, 100L);
+
         mQClientFactory = null;
         mqClientInstance = null;
         traceMqClientInstance = null;
@@ -154,7 +157,6 @@ public class DefaultMQLitePullConsumerWithTraceTest {
         }
     }
 
-    @Ignore("Flaky: fails 6/100 runs (6.0%)")
     @Test
     public void testSubscribe_PollMessageSuccess_WithDefaultTraceTopic() 
throws Exception {
         DefaultLitePullConsumer litePullConsumer = 
createLitePullConsumerWithDefaultTraceTopic();
@@ -171,7 +173,6 @@ public class DefaultMQLitePullConsumerWithTraceTest {
         }
     }
 
-    @Ignore("Flaky: fails 5/100 runs (5.0%)")
     @Test
     public void testSubscribe_PollMessageSuccess_WithCustomizedTraceTopic() 
throws Exception {
         DefaultLitePullConsumer litePullConsumer = 
createLitePullConsumerWithCustomizedTraceTopic();
@@ -238,13 +239,6 @@ public class DefaultMQLitePullConsumerWithTraceTest {
         mQClientFactory.getClientConfig().setDecodeReadBody(true);
         field.set(litePullConsumerImpl, mQClientFactory);
 
-        field = MQClientInstance.class.getDeclaredField("rebalanceService");
-        field.setAccessible(true);
-        RebalanceService rebalanceService = (RebalanceService) 
field.get(mQClientFactory);
-        field = RebalanceService.class.getDeclaredField("waitInterval");
-        field.setAccessible(true);
-        field.set(rebalanceService, 100);
-
         PullAPIWrapper pullAPIWrapper = 
litePullConsumerImpl.getPullAPIWrapper();
         field = PullAPIWrapper.class.getDeclaredField("mQClientFactory");
         field.setAccessible(true);
diff --git 
a/filter/src/test/java/org/apache/rocketmq/filter/BloomFilterTest.java 
b/filter/src/test/java/org/apache/rocketmq/filter/BloomFilterTest.java
index 6b9272c451..a65996d5f8 100644
--- a/filter/src/test/java/org/apache/rocketmq/filter/BloomFilterTest.java
+++ b/filter/src/test/java/org/apache/rocketmq/filter/BloomFilterTest.java
@@ -25,7 +25,6 @@ import org.junit.Test;
 import java.util.Random;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import org.junit.Ignore;
 
 public class BloomFilterTest {
 
@@ -143,14 +142,14 @@ public class BloomFilterTest {
         assertThat(bloomFilter.isValid(bloomFilterData)).isFalse();
     }
 
-    @Ignore("Flaky: fails 1/100 runs (1.0%)")
     @Test
     public void testCheckFalseHit() {
+        Random random = new Random(42);
         BloomFilter bloomFilter = BloomFilter.createByFn(1, 300);
         BitsArray bits = BitsArray.create(bloomFilter.getM());
         int falseHit = 0;
         for (int i = 0; i < bloomFilter.getN(); i++) {
-            String str = randomString((new 
Random(System.nanoTime())).nextInt(127) + 10);
+            String str = randomString(random, random.nextInt(127) + 10);
             int[] bitPos = bloomFilter.calcBitPositions(str);
 
             if (bloomFilter.checkFalseHit(bitPos, bits)) {
@@ -163,10 +162,10 @@ public class BloomFilterTest {
         assertThat(falseHit).isLessThanOrEqualTo(bloomFilter.getF() * 
bloomFilter.getN() / 100);
     }
 
-    private String randomString(int length) {
+    private String randomString(Random random, int length) {
         StringBuilder stringBuilder = new StringBuilder(length);
         for (int i = 0; i < length; i++) {
-            stringBuilder.append((char) ((new 
Random(System.nanoTime())).nextInt(123 - 97) + 97));
+            stringBuilder.append((char) (random.nextInt(26) + 'a'));
         }
 
         return stringBuilder.toString();

Reply via email to