Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Ensure atomicity for database operations #1172

Open
Hieuzest opened this issue Aug 18, 2023 · 1 comment
Open

Feature: Ensure atomicity for database operations #1172

Hieuzest opened this issue Aug 18, 2023 · 1 comment
Labels
feature 新特性

Comments

@Hieuzest
Copy link

Describe the problem related to the feature request

此提案由以下两个issue引出:

  • 跨表同步的一致性。当同一用户有多个session在短时间内被处理时,存在触发多次createUser的情况,此时会额外增加一条user并在binding处报主键不唯一(此问题一直以来都存在)
  • 对field修改的原子性。具体比如向user.permissions(array)添加新项,此时当前的架构无法确保操作的原子性。除此之外还有findAndModify的情况等。

Describe the solution you'd like

暂时没有特别好的思路。
朴素的想法是。对于1)由Koishi引入全局的同步管理机制;对于2)在minato侧添加完善$push等操作符

Describe alternatives you've considered

No response

Additional context

No response

@Hieuzest Hieuzest added the feature 新特性 label Aug 18, 2023
@purerosefallen
Copy link
Member

第一个问题我认为需要在 createUser 的情况加一个锁。第二个也可以用锁或者 transaction 的形式来解决。
其中一个思路就是引入 mutex api,这些操作之前进行加锁之后处理。
minato 其实也比较缺乏对 transaction 的支持。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature 新特性
Projects
None yet
Development

No branches or pull requests

2 participants