马登山
08d2907f72
Merge remote-tracking branch 'origin/cxymds/fix-1358-fleet-version-gate' into cxymds/fix-1358-gcs-exact-generation
2026-07-29 07:56:51 +08:00
马登山
94a5e27114
Merge remote-tracking branch 'origin/cxymds/fix-1358-opaque-transition-metadata' into cxymds/fix-1358-fleet-version-gate
2026-07-29 07:56:22 +08:00
马登山
c442b0f449
test(tiering): reach destination identity guard
2026-07-28 21:07:27 +08:00
马登山
60abc2c074
Merge remote-tracking branch 'origin/cxymds/fix-1358-fleet-version-gate' into cxymds/fix-1358-gcs-exact-generation
2026-07-28 20:15:27 +08:00
马登山
bfccbe1088
Merge remote-tracking branch 'origin/cxymds/fix-1358-opaque-transition-metadata' into cxymds/fix-1358-fleet-version-gate
2026-07-28 20:15:10 +08:00
马登山
58305bf479
test(tiering): exercise free-version identity guard
2026-07-28 20:14:33 +08:00
马登山
eff1d0c219
Merge branch 'cxymds/fix-1358-opaque-transition-metadata' into cxymds/fix-1358-fleet-version-gate
2026-07-28 19:40:09 +08:00
马登山
c22d9d316b
test(tiering): accept strict missing journal errors
2026-07-28 19:39:54 +08:00
马登山
bf985f58bc
Merge branch 'cxymds/fix-1358-opaque-transition-metadata' into cxymds/fix-1358-fleet-version-gate
...
# Conflicts:
# crates/ecstore/src/set_disk/ops/object.rs
2026-07-28 19:16:13 +08:00
马登山
9b2953ee5d
test(tiering): pin empty exact cleanup guard
2026-07-28 19:05:05 +08:00
马登山
3d63a755a9
fix(tiering): replay exact cleanup journals
2026-07-28 19:00:30 +08:00
马登山
b3b3eb57af
fix(tiering): accept unversioned transition responses
2026-07-28 18:53:25 +08:00
马登山
4839096440
fix(tiering): preserve remote version state on delete
2026-07-28 18:18:44 +08:00
马登山
4d8088ddbd
Merge remote-tracking branch 'origin/main' into cxymds/fix-1358-opaque-transition-metadata
...
# Conflicts:
# crates/ecstore/src/set_disk/ops/object.rs
2026-07-28 17:49:18 +08:00
cxymds
7f146fc5de
feat(tiering): model provider version capabilities ( #5372 )
2026-07-28 17:42:08 +08:00
cxymds
5426237a49
fix(filemeta): preserve canonical version order ( #5353 )
2026-07-28 17:38:59 +08:00
cxymds
d7afa4e38e
fix(heal): report partial rename failures ( #5355 )
...
* fix(heal): report partial rename failures
* fix(log-analyzer): track partial heal rename failures
2026-07-28 17:37:02 +08:00
cxymds
a3f5a8eaf9
fix(ecstore): fence object tagging updates ( #5360 )
...
* fix(ecstore): fence object tagging updates
* test(ecstore): stabilize tagging lock regressions
* test(ecstore): restore setup type on current-thread runtime
2026-07-28 17:36:00 +08:00
cxymds
547c678eed
fix(filemeta): reject positive size without parts ( #5354 )
...
* fix(filemeta): reject positive size without parts
* test(ecstore): keep optimized read fixture valid
* test(ecstore): keep listing fixtures valid
2026-07-28 17:35:53 +08:00
cxymds
df945b275a
fix(lifecycle): recover saturated scanner tasks ( #5369 )
2026-07-28 17:30:52 +08:00
cxymds
2e78a49c95
fix(lifecycle): reject invalid modification times ( #5370 )
2026-07-28 17:23:21 +08:00
cxymds
7ad0e726db
fix(ecstore): use set read quorum for version reads ( #5365 )
...
* fix(ecstore): use set read quorum for version reads
* fix(ecstore): convert optimized read batch errors
2026-07-28 17:23:15 +08:00
cxymds
45c3386b68
fix(bitrot): reject trailing shard data ( #5358 )
...
* fix(bitrot): reject trailing shard data
* test(ecstore): align bitrot disk fixture type
2026-07-28 17:23:08 +08:00
cxymds
7af92b4f54
fix(ecstore): handle pre-epoch disk health clocks ( #5383 )
2026-07-28 17:22:26 +08:00
cxymds
daa627ee0e
fix(auth): enforce presigned URL expiry limit ( #5368 )
...
* fix(auth): enforce presigned URL expiry limit
* ci(deny): allow presigned expiry s3s fork
* chore(deps): update presigned expiry validation
2026-07-28 17:11:30 +08:00
cxymds
5c3d3a8220
fix(ecstore): handle mutex poisoning explicitly ( #5379 )
...
* fix(ecstore): handle mutex poisoning explicitly
* test(ecstore): satisfy poison assertion lint
2026-07-28 17:09:09 +08:00
cxymds
6bc5fc77b5
fix(notify): emit noop event for missing deletes ( #5381 )
2026-07-28 17:05:10 +08:00
cxymds
e822fc1552
fix(swift): enforce cumulative container quotas ( #5378 )
2026-07-28 17:05:04 +08:00
cxymds
2f6115e058
fix(swift): enforce TempURL IP restrictions ( #5377 )
2026-07-28 17:04:58 +08:00
cxymds
882e1a71b1
fix(tiering): abort failed multipart restores ( #5367 )
...
* fix(tiering): abort failed multipart restores
* fix(tiering): compile restore abort regressions
* test(tiering): assert restored multipart metadata
* test(tiering): parse completed restore status
2026-07-28 17:04:52 +08:00
cxymds
b432f31c2c
fix(multipart): preserve retried parts on quorum failure ( #5363 )
...
* fix(multipart): preserve retried parts on quorum failure
* style(multipart): format transaction rollback
* fix(proto): regenerate multipart transaction RPCs
* fix(multipart): import rollback marker constant
* fix(multipart): export transaction action
* fix: import multipart transaction test requests
2026-07-28 17:04:46 +08:00
cxymds
6e0640444e
fix(multipart): list uploads across all sets ( #5362 )
2026-07-28 17:04:40 +08:00
cxymds
4fb9b0dc7f
fix(authz): fail closed on policy load errors ( #5359 )
...
* fix(authz): fail closed on policy load errors
* test(authz): cover policy failure precedence
* test: align policy failure expectations
* test: align upload part copy fail-closed expectation
2026-07-28 17:04:35 +08:00
唐小鸭
2216f00cfd
fix(kms): unify persisted SSE data key envelopes ( #5343 )
...
* feat(kms): implement secure handling of static KMS secret keys and enhance encryption context validation
* feat: enhance local SSE DEK handling with JSON envelope format and versioning
2026-07-28 17:02:18 +08:00
cxymds
fd2a87d47e
fix(s3): reject empty multipart completions ( #5352 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-07-28 08:35:50 +00:00
马登山
007cb7ea38
Merge remote-tracking branch 'origin/cxymds/fix-1358-fleet-version-gate' into cxymds/fix-1358-gcs-exact-generation
2026-07-28 16:17:43 +08:00
马登山
c15a148c50
Merge remote-tracking branch 'origin/cxymds/fix-1358-opaque-transition-metadata' into cxymds/fix-1358-gcs-exact-generation
2026-07-28 16:17:43 +08:00
马登山
8e591e64d9
fix(tiering): gate remote version state writes
2026-07-28 16:16:09 +08:00
马登山
821e056f70
fix(tiering): gate remote version state safely
2026-07-28 15:10:53 +08:00
马登山
a6695f6d30
merge: stack provider version semantics
2026-07-28 14:10:56 +08:00
马登山
5db7330d2a
fix(tiering): use exact GCS generations
2026-07-28 14:07:15 +08:00
马登山
837286f959
feat(tiering): persist opaque remote versions
2026-07-28 13:37:43 +08:00
马登山
f65ac198dc
feat(tiering): model provider version capabilities
2026-07-28 13:20:36 +08:00
houseme
1e10d752b9
test(e2e): stabilize inline full gate checks ( #5351 )
...
Align inline fast path cluster tests with the current tier mutation and manual transition contracts while keeping msgpack compat assertions focused on observed traffic.
Co-authored-by: heihutu <heihutu@gmail.com >
2026-07-28 04:31:19 +00:00
houseme
362f6026ac
chore(build): pin Rust toolchain configs to 1.97.1 ( #5350 )
...
Co-authored-by: heihutu <heihutu@gmail.com >
2026-07-28 03:53:32 +00:00
GatewayJ
5cedab09ab
fix(sts): return Query API-compatible responses ( #5282 )
...
* fix(sts): return Query API-compatible responses
* fix(sts): resolve review and CI failures
* fix(sts): harden query response conversion
* test(e2e): stabilize transition conflict coverage
* fix(ilm): retry vanished transition admission CAS
* test(e2e): narrow transition overlap coverage
---------
Co-authored-by: houseme <housemecn@gmail.com >
2026-07-28 10:39:17 +08:00
houseme
d385cea7c6
test(lifecycle): add manual transition rollout harnesses ( #5346 )
...
* test(lifecycle): add manual transition rollout harnesses
Add a dedicated #1508 ignored E2E harness for non-empty manual transition rollout readback and a reusable Docker mixed-version harness entrypoint.
Co-Authored-By: heihutu <heihutu@gmail.com >
* test(lifecycle): satisfy rollout harness clippy
Use unwrap_or_default for the optional transition_failed report field while preserving the zero-default status readback behavior.
Co-Authored-By: heihutu <heihutu@gmail.com >
---------
Co-authored-by: heihutu <heihutu@gmail.com >
2026-07-28 00:04:47 +00:00
Henry Guo
d5df66ac4f
fix(scanner): require authoritative usage snapshots ( #5333 )
2026-07-28 07:29:57 +08:00
Zhengchao An
5a768d3a44
perf(s3): resolve bucket versioning once per DeleteObjects request ( #5340 )
...
DeleteObjects rebuilt ObjectOptions inside its per-key phase-1 loop, and
del_opts re-fetched the bucket versioning configuration on every call: a
1000-key request paid 1001 identical metadata-sys lookups, each taking the
global bucket-metadata read lock and cloning a VersioningConfiguration.
Split del_opts into the existing async entry point plus a synchronous
del_opts_with_versioning that takes an already-resolved configuration, and
reuse the request-level version_cfg the handler had already fetched.
This also removes a snapshot inconsistency. The skip-stat decision
(can_skip_delete_objects_pre_stat) and the post-delete accounting already
derived from the request-level snapshot while del_opts re-read the config
per key, so a PutBucketVersioning committing mid-request could give a key
opts.versioned=true while the batch delete still ran with versioned=false:
the object was deleted outright with replication state attached to a delete
marker that was never created, and the advisory object-lock pre-check was
skipped on a false premise. All three now derive from one snapshot.
GET, HEAD and DeleteObject additionally establish bucket existence before
building ObjectOptions, so a request naming a nonexistent bucket no longer
performs bucket-metadata work first. GET keeps its cheap request-shape
validations (key, range, partNumber) ahead of the existence check so
InvalidArgument still wins over NoSuchBucket for malformed requests.
Bucket validation moves to validate_bucket_exists, which takes an explicit
store and shares the existing 5s-TTL cache. GET, PUT, HEAD and DeleteObject
now resolve the store through the request-bound server context
(backlog#1052 S6) instead of the process-global handle: get_validated_store
resolves the first-published global AppContext, so in an embedded
multi-instance process a request to the second server operated on the first
server's store. Remaining global-handle call sites in bucket_usecase and
select_object are left for a follow-up.
2026-07-28 06:33:17 +08:00
houseme
6d3ce90c0f
fix(lifecycle): harden manual transition rollout checks ( #5344 )
...
Co-authored-by: heihutu <heihutu@gmail.com >
2026-07-27 17:29:06 +00:00