• reduceWalletBalance 与 addWalletBalance 在 Redis 锁外预读钱包 balance,
    锁内用锁外预读值计算流水 afterBalance。并发消费时各线程锁外都读到同一
    初始余额,各自记录 balance=初始±扣减,流水 balance 列不连贯
    (如 220 余额并发两笔各 110,两笔流水 balance 均=110,应 110/0)。
    
    修复:CAS 原子更新后重读钱包(事务内读自身更新,REPEATABLE READ 下
    CAS 前重读仍读快照旧值,须 CAS 后重读),afterBalance 直接用最新余额,
    无需按 bizType 条件加减。
    dadiyang authored
     
    Browse Code »