fsouza / fake-gcs-server

Google Cloud Storage emulator & testing library.

Home Page:https://pkg.go.dev/github.com/fsouza/fake-gcs-server/fakestorage?tab=doc

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Batch delete operations failed for `unable to process request`

Xuanwo opened this issue · comments

When making a batch request to fake-gce-server, it responds with "unable to process request" for every part.

--349bb61a455a0215f770b8fbec1504b2ed685bbeb93f6beca85a9dfbbe8e\r\n
Content-Id: 0\r\n
Content-Type: application/http\r\n
\r\n
HTTP/1.1 400 Bad Request\r\n
Connection: close\r\n
Content-Type: text/plain; charset=utf-8\r\n
X-Content-Type-Options: nosniff\r\n\
r\n
unable to process request\n
\r\n
--349bb61a455a0215f770b8fbec1504b2ed685bbeb93f6beca85a9dfbbe8e\r\n
  • The same request works fine on real gcs service.
  • I attempted to set the log-level to debug, but couldn't find any additional meaningful information.
  • Version 1.4.7

Thanks for reporting! Would you be able to share a snippet reproducing the issue?

When using fake-gcs-server with Docker,

docker run -d --name fake-gcs-server -p 4443:4443 -v ${PWD}/data:/data fsouza/fake-gcs-server -scheme http

and sending an HTTP request (sent by the opendal project) using the GCS batch API like this,

POST /batch/storage/v1 HTTP/1.1
content-type: multipart/mixed; boundary=opendal-ade6d51e-686a-48a8-925b-80f3a77b16a4
content-length: 424
accept: */*
host: 127.0.0.1:4443

--opendal-ade6d51e-686a-48a8-925b-80f3a77b16a4
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: 0

DELETE /storage/v1/b/bucket_1/o/test_0.txt HTTP/1.1

--opendal-ade6d51e-686a-48a8-925b-80f3a77b16a4
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: 1

DELETE /storage/v1/b/bucket_1/o/test_1.txt HTTP/1.1

--opendal-ade6d51e-686a-48a8-925b-80f3a77b16a4--

it reproduces this issue.

HTTP/1.1 200 OK
Content-Type: multipart/mixed; boundary=e1d04395bf35360ac8c8839f19c2f89d85124b7c2b97985186c851a3f276
Date: Tue, 16 Jan 2024 06:31:25 GMT
Content-Length: 590

--e1d04395bf35360ac8c8839f19c2f89d85124b7c2b97985186c851a3f276
Content-Id: 0
Content-Type: application/http

HTTP/1.1 400 Bad Request
Connection: close
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff

unable to process request

--e1d04395bf35360ac8c8839f19c2f89d85124b7c2b97985186c851a3f276
Content-Id: 1
Content-Type: application/http

HTTP/1.1 400 Bad Request
Connection: close
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff

unable to process request

--e1d04395bf35360ac8c8839f19c2f89d85124b7c2b97985186c851a3f276--