GitHub user somak2kai created a discussion: 关于 PR #10631 的 CI 和 Review

# 关于 PR #10631 的 CI 和 Review

大家好,想请大家帮忙看一下这个 PR:

* PR: #10631
* Issue: #10630

这个 PR 主要修复 `DefaultLitePullConsumerImpl.taskTable` 的并发问题。

目前 `taskTable` 会在以下几个方法中进行修改:

* `updatePullTask`
* `updateAssignPullTask`
* `removePullTask`

其中存在 check-then-act 的并发风险,例如:

```java
if (!taskTable.containsKey(key)) {
    taskTable.put(key, task);
}
```

`containsKey` 和 `put` 之间没有同步保护,并发情况下可能产生 race condition。

这次修改统一使用:

```java
synchronized (this.taskTable) {
    // check and update taskTable
}
```

保证对 `taskTable` 的检查和修改是原子的。

另外增加了 `DefaultLitePullConsumerImplTaskTableRaceTest`,用于复现和验证这个并发问题。

目前代码已经提交,想请 committer 帮忙触发一下 CI,如果方便的话也希望帮忙 Review 一下。

如果实现方式有问题,欢迎直接指出,我可以继续修改。

谢谢!


GitHub link: https://github.com/apache/rocketmq/discussions/10908

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]

Reply via email to