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]