fix: enforce stable shadow snapshot boundaries

This commit is contained in:
zgw
2026-09-03 15:07:37 +08:00
parent 935d7af43d
commit d77fac1d56
12 changed files with 256 additions and 88 deletions

View File

@@ -96,15 +96,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
state.snapshot_status as snapshotStatus,
state.synchronized_at as synchronizedAt,
convert(varchar(64), state.source_signature, 2) as sourceSignature
from alg.shadow_snapshot_state state
from alg.shadow_snapshot_state state with (readcommittedlock)
where state.warehouse_id = #{warehouseId}
</select>
<insert id="insertComparison">
insert into alg.decision_log (
decision_id, warehouse_id, decision_type, input_version, result_code, reason)
values (
try_convert(uniqueidentifier, #{decisionId}), #{warehouseId}, #{decisionType},
convert(binary(8), #{inputVersion}), #{resultCode}, #{reason})
select try_convert(uniqueidentifier, #{decisionId}), state.warehouse_id, #{decisionType},
convert(binary(8), #{inputVersion}), #{resultCode}, #{reason}
from alg.shadow_snapshot_state state with (updlock, holdlock)
where state.warehouse_id = #{warehouseId}
and state.snapshot_status = 'PUBLISHED'
and state.snapshot_generation = #{inputVersion}
and state.synchronized_at = #{snapshotSynchronizedAt}
and convert(varchar(64), state.source_signature, 2) = #{sourceSignature}
</insert>
</mapper>