问题域/PD-294

多进程并发控制

Multi-Process Concurrency Control

单进程/多进程统一锁抽象,支持Gunicorn多worker模式下的数据一致性

子问题

1.asyncio与multiprocessing锁统一

2.keyed lock死锁预防

3.锁资源自动清理

4.跨进程状态同步

5.多进程模式下同步锁阻塞事件循环

6.锁获取中途被 asyncio.CancelledError 中断的回滚

7.多租户 workspace 级锁隔离

各项目的解法1 solutions

Signals

横向对比

维度LightRAG
锁抽象层级三层:UnifiedLock → KeyedUnifiedLock → NamespaceLock
并发模型asyncio + multiprocessing.Manager 双层锁,运行时按 worker 数切换
死锁预防sorted(keys) 全局排序获取 + ContextVar 防重入
锁资源管理引用计数 + 300s TTL + 500阈值批量清理
取消安全asyncio.shield 保护 __aexit__ 和 rollback,CancelledError 安全
工作区隔离workspace:namespace 前缀实现多租户锁隔离

最佳实践

1.排序获取防死锁

2.ContextVar实现协程隔离

3.asyncio.shield保护锁释放

4.双层锁策略:async_lock 门卫 + process_lock 互斥

5.引用计数+TTL+阈值三重条件触发锁清理

6.ContextVar.set 延迟到锁获取成功后防止状态污染