Two CI-surfaced bugs caught by PR #9471's S3 Lifecycle Tests run on
master after PRs #9475 + #9466:
1. Walker dispatch for ABORT_MPU was sending entry.DestKey as
req.ObjectPath. The server's ABORT_MPU handler
(weed/s3api/s3api_internal_lifecycle.go) strips the .uploads/
prefix to extract the upload id and reads the init record from
that directory, so it expects the .uploads/<id> path verbatim.
DestKey looks like a regular object path; the server's prefix
check fails and the dispatch returns BLOCKED with
"FATAL_EVENT_ERROR: ABORT_MPU object_path missing .uploads/
prefix". The test fix renames TestWalkerDispatcher_MPUInitUsesDestKey
to ...UsesUploadsPath and inverts the assertion to match the
actual server contract.
DestKey is still used for the WalkBuckets shard predicate and
for rule-prefix matching in bootstrap.walker; both surfaces want
the user's intended path, while DISPATCH wants the .uploads/<id>
directory. The bootstrap test
(TestLifecycleAbortIncompleteMultipartUpload) caught this when
the walker's BLOCKED error surfaced as FATAL output.
2. test/s3/lifecycle/s3_lifecycle_empty_bucket_test.go asserts the
shell command logs "loaded lifecycle for N bucket(s)" so a
regression that produces half-shaped output (no load summary)
is caught. The restored shell command (PR #9475) didn't print
that line; add it back on the first pass that finds non-zero
inputs.
see https://blog.aqwari.net/xml-schema-go/
1. go get aqwari.net/xml/cmd/xsdgen
2. Add EncodingType element for ListBucketResult in AmazonS3.xsd
3. xsdgen -o s3api_xsd_generated.go -pkg s3api AmazonS3.xsd
4. Remove empty Grantee struct in s3api_xsd_generated.go
5. Remove xmlns: sed s'/http:\/\/s3.amazonaws.com\/doc\/2006-03-01\/\ //' s3api_xsd_generated.go