You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by xu...@apache.org on 2026/07/24 04:33:24 UTC

(opendal) branch main updated: Revert "fix(services/gcs): stop double-encoding object paths in writer (#7943)

This is an automated email from the ASF dual-hosted git repository.

Xuanwo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opendal.git


The following commit(s) were added to refs/heads/main by this push:
     new eecfe563a Revert "fix(services/gcs): stop double-encoding object paths in writer (#7943)
eecfe563a is described below

commit eecfe563ac0302802da067f50e904f7e0121a01d
Author: Erick Guan <29...@users.noreply.github.com>
AuthorDate: Fri Jul 24 12:33:16 2026 +0800

    Revert "fix(services/gcs): stop double-encoding object paths in writer (#7943)
    
    Revert "fix(services/gcs): stop double-encoding object paths in writer (#7927)"
    
    This reverts commit 19e028238cdc11398099bd25a8ef7895a15d68a7.
---
 core/services/gcs/src/core.rs   |  7 +------
 core/services/gcs/src/writer.rs | 17 ++++++++++++-----
 2 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/core/services/gcs/src/core.rs b/core/services/gcs/src/core.rs
index acaad74eb..80eab2090 100644
--- a/core/services/gcs/src/core.rs
+++ b/core/services/gcs/src/core.rs
@@ -605,12 +605,7 @@ impl GcsCore {
     ) -> Result<Response<Buffer>> {
         let p = build_abs_path(&self.root, path);
 
-        let url = format!(
-            "{}/{}/{}?uploads",
-            self.endpoint,
-            self.bucket,
-            gcs_percent_encode_path(&p)
-        );
+        let url = format!("{}/{}/{}?uploads", self.endpoint, self.bucket, p);
 
         let mut builder = Request::post(&url)
             .header(CONTENT_LENGTH, 0)
diff --git a/core/services/gcs/src/writer.rs b/core/services/gcs/src/writer.rs
index 4217704aa..769c0fbbe 100644
--- a/core/services/gcs/src/writer.rs
+++ b/core/services/gcs/src/writer.rs
@@ -23,6 +23,7 @@ use http::StatusCode;
 use super::core::CompleteMultipartUploadRequestPart;
 use super::core::GcsCore;
 use super::core::InitiateMultipartUploadResult;
+use super::core::gcs_percent_encode_path;
 use super::core::parse_error;
 use opendal_core::raw::*;
 use opendal_core::*;
@@ -50,10 +51,12 @@ impl GcsWriter {
 impl oio::MultipartWrite for GcsWriter {
     async fn write_once(&self, _: u64, body: Buffer) -> Result<Metadata> {
         let size = body.len() as u64;
-        // Forward the raw path; the core request builder percent-encodes once.
-        let req = self
-            .core
-            .gcs_insert_object_request(&self.path, Some(size), &self.op, body)?;
+        let req = self.core.gcs_insert_object_request(
+            &gcs_percent_encode_path(&self.path),
+            Some(size),
+            &self.op,
+            body,
+        )?;
 
         let req = self.core.sign(&self.ctx, req).await?;
 
@@ -74,7 +77,11 @@ impl oio::MultipartWrite for GcsWriter {
     async fn initiate_part(&self) -> Result<String> {
         let resp = self
             .core
-            .gcs_initiate_multipart_upload(&self.ctx, &self.path, &self.op)
+            .gcs_initiate_multipart_upload(
+                &self.ctx,
+                &gcs_percent_encode_path(&self.path),
+                &self.op,
+            )
             .await?;
 
         if !resp.status().is_success() {