objstore: test accept-encoding-only GCS signing#69759
Conversation
|
Skipping CI for Draft Pull Request. |
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
What problem does this PR solve?
Issue Number: ref #69718
Problem Summary:
This is a draft E2E validation PR for the GCS S3-compatible import issue. The main proposed fix is #69721.
The specific question for this branch is whether excluding only
Accept-Encodingfrom the SigV4 canonical request is enough for GCS S3 interoperability, while leaving the AWS SDK v2 metadata headers (Amz-Sdk-Invocation-IdandAmz-Sdk-Request) signed.What changed and how does it work?
This PR keeps the GCS S3-compatible signer but changes it to remove only
Accept-Encodingwhile signing.It also adds draft-only HTTP fault injection for the GCS S3-compatible path so a real cluster E2E import can exercise AWS SDK retry behavior. The default behavior on this branch is:
TIDB_GCS_S3_COMPAT_FAULT_RATE: default0.02; set to0to disableTIDB_GCS_S3_COMPAT_FAULT_MODE: defaultmixed; allowed values arehttp500,connection-reset, andmixedTIDB_GCS_S3_COMPAT_FAULT_MAX: optional max number of injected faults per processThis PR is not intended to be the final mergeable fix as-is. It is intended to produce an image for online E2E validation.
Check List
Tests
Commands run locally:
Also attempted a failpoint-enabled Bazel run. The local Bazel build failed before tests with
pkg/util/intest/assert_common.go:93:34: undefined: _curpkg_; failpoint state was disabled afterward.Side effects
Documentation
Release note
Please refer to Release Notes Language Style Guide to write a quality release note.