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();