mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-22 20:36:38 +00:00
d1e5431908
An inbound replication PUT for an explicit version carries the source's legal-hold/retention state. Both the app-layer pre-check (`validate_existing_object_lock_for_write`) and the set-layer commit gate rejected it whenever the destination version was under an active legal hold, COMPLIANCE, or GOVERNANCE retention, so a source-side hold release or retention change could never land and the replication looped through MRF forever. Skip both gates only when `opts.replication_request` is set (requires ReplicateObjectAction). Non-replication overwrites stay rejected, and the receiver-side LWW merge still keeps a category locked more recently on this site. Refs rustfs/backlog#1953