cxymds
7320d7fab2
fix(replication): make resync starts atomic ( #5215 )
2026-07-25 08:58:06 +08:00
cxymds
45b675c641
fix(replication): report authoritative backlog metrics ( #5209 )
2026-07-25 01:32:50 +08:00
cxymds
d7f30fe0a2
fix(replication): persist sanitized resync errors ( #5200 )
2026-07-24 22:15:51 +08:00
cxymds
6c23b8506e
feat(site-replication): persist durable resync lifecycle ( #5125 )
2026-07-23 08:02:30 +08:00
Zhengchao An
819e1422fb
fix(replication): resolve same-destination rules highest-priority first ( #4452 )
2026-07-08 18:32:09 +08:00
Zhengchao An
9a7255540b
fix(replication): add resync metrics ( #4408 )
2026-07-08 15:01:28 +08:00
Zhengchao An
68f048b8fe
fix(replication): persist delete marker mtime in MRF entries ( #4331 )
...
fix(replication): persist original mtime in MRF entries (backlog#867)
MRF delete entries did not persist the original delete-marker mtime, so
after a restart the recovery replay path reconstructed the delete without
a source timestamp. Downstream the replica delete-marker was stamped with
the replay time (now()) instead of the source mtime, causing delete-marker
timestamp divergence across clusters.
Extend the MrfReplicateEntry disk format with an optional deleteMarkerMtime
field (persisted as Unix nanoseconds) in both duplicate struct definitions
(rustfs-replication and rustfs-filemeta). DeletedObjectReplicationInfo now
persists delete_marker_mtime, and start_mrf_processor restores it onto the
reconstructed delete so the replica keeps the source timestamp.
Backward compatibility: the new key uses skip_serializing_if + serde
default, so historical MRF files without it decode to None and replay
falls back to the current time (pre-#867 behaviour). No panic or entry
loss on old files.
Closes rustfs/backlog#867
2026-07-07 04:42:10 +08:00
Zhengchao An
123552d32b
refactor(replication): own utility wire contracts ( #4255 )
2026-07-04 08:00:37 +08:00
Zhengchao An
3d4fb532e5
refactor(replication): own filemeta wire contracts ( #4254 )
2026-07-04 06:39:54 +08:00
Zhengchao An
125c228832
refactor(replication): own delete DTO contracts ( #4253 )
2026-07-04 04:00:27 +08:00
Zhengchao An
d19ee6c51c
refactor(replication): isolate storage api contracts ( #4244 )
2026-07-03 22:48:21 +08:00
Zhengchao An
24e88a2cf4
refactor(replication): isolate filemeta facade contracts ( #4243 )
2026-07-03 22:20:46 +08:00
Zhengchao An
31df11beb7
refactor(replication): isolate multipart and target adapters ( #4211 )
...
* refactor(replication): isolate multipart part planning
* refactor(replication): isolate target head adapters
2026-07-03 08:06:17 +08:00
Zhengchao An
29899f4731
refactor(replication): isolate queue backpressure decisions ( #4202 )
2026-07-02 23:28:45 +08:00
cxymds
c7a0178994
fix: honor replication status metadata ( #4178 )
...
Co-authored-by: overtrue <anzhengchao@gmail.com >
2026-07-02 22:33:41 +08:00
Zhengchao An
9a142fb123
refactor(replication): move delete schedule decisions ( #4199 )
2026-07-02 22:11:29 +08:00
Zhengchao An
b972e25c51
refactor(replication): move app decisions into crate ( #4191 )
2026-07-02 17:14:55 +08:00
Zhengchao An
008b7fcb6f
refactor(replication): move heal queue routing contracts ( #4176 )
...
* refactor(replication): move heal queue routing contracts
* fix(replication): satisfy feature clippy
2026-07-02 15:15:08 +08:00
Zhengchao An
98a0cca4a2
refactor(replication): move resync decision contracts ( #4173 )
...
* refactor(replication): move resync decision contracts
* fix(replication): avoid resync status clones
2026-07-02 14:13:05 +08:00
Zhengchao An
4615df006d
fix: auto-repair clippy failures from d666028cdc ( #4172 )
...
fix: simplify match arms to satisfy clippy manual-unwrap-or-default and manual-unwrap-or
Two match expressions in crates/replication/src/runtime.rs triggered
clippy lints (manual-unwrap-or-default, manual-unwrap-or) with the
project's -D warnings policy. Replace them with the idiomatic
.unwrap_or_default() and .unwrap_or() calls.
2026-07-02 14:11:44 +08:00
Zhengchao An
48f8443626
refactor(replication): move object compare contracts ( #4171 )
2026-07-02 13:19:47 +08:00
Zhengchao An
d666028cdc
refactor(replication): move resync classifiers into crate ( #4170 )
2026-07-02 12:57:59 +08:00
Zhengchao An
953a080b37
refactor(replication): move runtime sizing contracts ( #4169 )
2026-07-02 12:33:11 +08:00
Zhengchao An
473132f36b
refactor(replication): move stats contracts into crate ( #4168 )
2026-07-02 12:14:36 +08:00
Zhengchao An
8ce0f824cf
refactor(replication): move queue contracts into crate ( #4167 )
2026-07-02 11:40:49 +08:00
Zhengchao An
2cf856a51d
Move replication delete worker contract into crate ( #4166 )
...
refactor(replication): move delete worker contract into crate
2026-07-02 11:03:24 +08:00
Zhengchao An
df6ce41acd
Move replication operation contracts into crate ( #4165 )
...
refactor(replication): move operation contracts into crate
2026-07-02 10:48:02 +08:00
Zhengchao An
b57820a486
refactor(replication): move config contracts into crate ( #4162 )
2026-07-02 10:17:48 +08:00
Zhengchao An
18d89d1e31
refactor(replication): route metadata contracts through crate ( #4160 )
2026-07-02 08:48:42 +08:00
Zhengchao An
2de38d3e5c
refactor(replication): move mrf wire format to replication crate ( #4157 )
...
* refactor(replication): move mrf wire format to replication crate
* refactor(replication): match re-exported error variants
2026-07-02 04:27:53 +08:00
Zhengchao An
8f01012071
fix(replication): address resync review follow-up ( #4155 )
...
* fix(replication): address resync crate review
* fix(replication): skip fixext fields correctly
* fix(replication): satisfy resync clippy
2026-07-02 04:00:28 +08:00
Zhengchao An
e80391f1aa
refactor(replication): extract resync contracts crate ( #4154 )
2026-07-02 01:30:01 +08:00