pingcap / tidb

TiDB is an open-source, cloud-native, distributed, MySQL-Compatible database for elastic scale and real-time analytics. Try AI-powered Chat2Query free at : https://www.pingcap.com/tidb-serverless/
https://pingcap.com
Apache License 2.0
36.97k stars 5.82k forks source link

storage: The S3-compatible API of Google Cloud Storage does not support DeleteObjects #50918

Open kennytm opened 7 months ago

kennytm commented 7 months ago

Bug Report

Please answer these questions before submitting your issue. Thanks!

1. Minimal reproduce step (Required)

  1. Create a GCS bucket.
  2. Create a TiCDC v7.6 changefeed with redo-log enabled (setting consistent.level = 'eventual'), and set the storage to s3://bucket/?endpoint=http://storage.googleapis.com (thus accessing GCS through their S3-compatible XML API).
  3. Wait for a while.

2. What did you expect to see? (Required)

No error.

3. What did you see instead (Required)

Changefeed stopped because of incompatible API:

[2024/02/01 00:00:00.000 +00:00] [WARN] [meta_manager.go:159] ["redo: init redo meta fail"] [namespace=default] [changefeed=«redacted»] [error="[CDC:ErrS3StorageAPI]external storage api: NotImplemented: A header or query you provided requested a function that is not implemented.\n\tstatus code: 400, request id: , host id: "]

4. What is your TiDB version? (Required)

v7.6.0

kennytm commented 7 months ago

The GCS JSON API (gcs://) uses an entirely different approach for batch delete (https://cloud.google.com/storage/docs/batch), so I believe there is no plan for Google to support DeleteObjects in the XML API.

For this issue we either

BornChanger commented 6 months ago

@kennytm can you please open the issue to tiflow repo instead? cc @flowbehappy

BornChanger commented 6 months ago

/remove-component br

kennytm commented 6 months ago

@BornChanger I have explained why the issue is filed here in the first line in https://github.com/pingcap/tidb/issues/50918#issuecomment-1922586687. I'm keeping the labels unless there is a dedicated label for the external-storage component.