Skip to main content

lock_assets_by_path

Function lock_assets_by_path 

Source
pub(crate) async fn lock_assets_by_path(
    tx: &Transaction<'_>,
    paths: &[String],
) -> Result<LockedAssets, AppError>
Expand description

按相对路径锁定素材行,供随后在同一事务内写入引用。

paths 须已去重。FOR KEY SHARE 与素材删除/清理的 FOR UPDATE 互斥: READ COMMITTED 下若等锁期间删除已提交,本语句重读后跳过该行,计入 missing; 反之拿到锁后,删除方须等本事务提交,其引用复核是加锁之后的另一条语句、 取新快照,能看到本事务刚提交的引用行。按 id 升序加锁,与删除方加锁顺序一致, 避免多图评论与批量删除互相死锁。