Skip to content

fix: 避免账户初始化与多写任务锁冲突 - #6958

Open
hezhang-1216 wants to merge 2 commits into
mainfrom
fix/account-init-multiwrite-lock
Open

hezhang-1216 wants to merge 2 commits into
mainfrom
fix/account-init-multiwrite-lock

Conversation

@hezhang-1216

Copy link
Copy Markdown
Collaborator

Summary

  • 在账户首次写入前获取账户根目录 Tree 锁,并将同一 lease 透传到身份、workspace、账户配置和用户配置初始化,避免 multiwrite lazy-init 抢占子路径 Exact 锁
  • multiwrite 遇到 Conflict、Timeout 或 Busy 时保留事件并指数退避重试;单次等待上限 10 秒、总窗口 3 分钟,并以 32 次作为防御性上限
  • retry batch 与新事件隔离,临时冲突仅记录 debug,重试耗尽后才记录最终错误并扣除 pending

Test plan

  • cargo test -p ragfs 'multibackend::runtime::tests::'
  • pytest -q tests/server/test_admin_api.py -k 'create_account or create_user_paths_accept_initial_user_config'
  • pytest -q tests/server/test_account_services.py -k account
  • pytest -q tests/unit/test_directory_initializer.py -k 'workspace or system_assets_sync'
  • 修改文件通过 ruff check、rustfmt --check 和 git diff --check

账户创建在首次写入前统一持有 Tree 锁,并为 multiwrite 临时锁冲突增加有界指数退避,避免初始化失败和事件丢失。
避免单个账户的初始化锁冲突阻塞其他账户事件消费,同时保持原有退避上限和待处理计数语义。

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant