Files
MyFSIO/crates/myfsio-server
kqjy 5cac7c6241 Fix replication failing on large objects: multipart upload, per-part timeout, background healer, status metadata
- Replication now uses CreateMultipartUpload/UploadPart/CompleteMultipartUpload
  for objects above REPLICATION_STREAMING_THRESHOLD_BYTES, with adaptive part
  size (max(8 MiB, size/10000)) and 4 concurrent part uploads. Previously a
  single put_object was used regardless of size, which combined with the AWS
  SDK read_timeout capped every transfer at the timeout (default 30s) and
  made replication of any object above ~bandwidth*30s impossible.
- REPLICATION_READ_TIMEOUT_SECONDS default raised 30 -> 120 and documented as
  per-part / per-attempt rather than end-to-end.
- Added background healer worker that auto-retries persisted replication
  failures with exponential backoff (60s..3600s) capped at
  REPLICATION_HEALER_MAX_ATTEMPTS attempts. Configurable via
  REPLICATION_HEALER_ENABLED / REPLICATION_HEALER_INTERVAL_SECONDS /
  REPLICATION_HEALER_MAX_ATTEMPTS.
- Source objects now carry __replication_status__ (PENDING/COMPLETED/FAILED)
  metadata, surfaced as the x-amz-replication-status response header on
  GetObject and HeadObject.
2026-04-29 00:21:50 +08:00
..