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 2025/03/23 05:11:12 UTC

(opendal) branch main updated: refactor: migrate azblob services to context based http client (#5845)

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 e4ffcdd43 refactor: migrate azblob services to context based http client (#5845)
e4ffcdd43 is described below

commit e4ffcdd435e2c96ea2258ae76f74b0c0192c711f
Author: Ziyi Tan <aj...@gmail.com>
AuthorDate: Sun Mar 23 13:11:08 2025 +0800

    refactor: migrate azblob services to context based http client (#5845)
    
    * Migrate azblob services to context based http client
    
    Signed-off-by: Ziy1-Tan <aj...@gmail.com>
    
    * update ghac
    
    ---------
    
    Signed-off-by: Ziy1-Tan <aj...@gmail.com>
---
 core/src/services/azblob/backend.rs | 23 +++++++++++++----------
 core/src/services/azblob/core.rs    |  5 ++---
 core/src/services/azblob/writer.rs  |  2 +-
 core/src/services/ghac/writer.rs    |  1 -
 4 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/core/src/services/azblob/backend.rs b/core/src/services/azblob/backend.rs
index b90ee56e2..eafe32ddb 100644
--- a/core/src/services/azblob/backend.rs
+++ b/core/src/services/azblob/backend.rs
@@ -56,9 +56,12 @@ const AZBLOB_BATCH_LIMIT: usize = 256;
 
 impl Configurator for AzblobConfig {
     type Builder = AzblobBuilder;
+
+    #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
         AzblobBuilder {
             config: self,
+
             http_client: None,
         }
     }
@@ -68,6 +71,8 @@ impl Configurator for AzblobConfig {
 #[derive(Default, Clone)]
 pub struct AzblobBuilder {
     config: AzblobConfig,
+
+    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` instead")]
     http_client: Option<HttpClient>,
 }
 
@@ -244,6 +249,8 @@ impl AzblobBuilder {
     ///
     /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
     /// during minor updates.
+    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` instead")]
+    #[allow(deprecated)]
     pub fn http_client(mut self, client: HttpClient) -> Self {
         self.http_client = Some(client);
         self
@@ -369,15 +376,6 @@ impl Builder for AzblobBuilder {
         }?;
         debug!("backend use endpoint {}", &container);
 
-        let client = if let Some(client) = self.http_client {
-            client
-        } else {
-            HttpClient::new().map_err(|err| {
-                err.with_operation("Builder::build")
-                    .with_context("service", Scheme::Azblob)
-            })?
-        };
-
         let mut config_loader = AzureStorageConfig::default().from_env();
 
         if let Some(v) = self
@@ -494,6 +492,12 @@ impl Builder for AzblobBuilder {
                             ..Default::default()
                         });
 
+                    // allow deprecated api here for compatibility
+                    #[allow(deprecated)]
+                    if let Some(client) = self.http_client {
+                        am.update_http_client(|_| client);
+                    }
+
                     am.into()
                 },
                 root,
@@ -503,7 +507,6 @@ impl Builder for AzblobBuilder {
                 encryption_algorithm,
                 container: self.config.container.clone(),
 
-                client,
                 loader: cred_loader,
                 signer,
             }),
diff --git a/core/src/services/azblob/core.rs b/core/src/services/azblob/core.rs
index 0be70e2f4..87fd4da11 100644
--- a/core/src/services/azblob/core.rs
+++ b/core/src/services/azblob/core.rs
@@ -69,7 +69,6 @@ pub struct AzblobCore {
     pub encryption_key: Option<HeaderValue>,
     pub encryption_key_sha256: Option<HeaderValue>,
     pub encryption_algorithm: Option<HeaderValue>,
-    pub client: HttpClient,
     pub loader: AzureStorageLoader,
     pub signer: AzureStorageSigner,
 }
@@ -132,7 +131,7 @@ impl AzblobCore {
 
     #[inline]
     pub async fn send(&self, req: Request<Buffer>) -> Result<Response<Buffer>> {
-        self.client.send(req).await
+        self.info.http_client().send(req).await
     }
 
     pub fn insert_sse_headers(&self, mut req: http::request::Builder) -> http::request::Builder {
@@ -241,7 +240,7 @@ impl AzblobCore {
 
         self.sign(&mut req).await?;
 
-        self.client.fetch(req).await
+        self.info.http_client().fetch(req).await
     }
 
     pub fn azblob_put_blob_request(
diff --git a/core/src/services/azblob/writer.rs b/core/src/services/azblob/writer.rs
index 24116c364..17cf8b676 100644
--- a/core/src/services/azblob/writer.rs
+++ b/core/src/services/azblob/writer.rs
@@ -71,7 +71,7 @@ impl oio::AppendWrite for AzblobWriter {
 
                 self.core.sign(&mut req).await?;
 
-                let resp = self.core.client.send(req).await?;
+                let resp = self.core.info.http_client().send(req).await?;
 
                 let status = resp.status();
                 match status {
diff --git a/core/src/services/ghac/writer.rs b/core/src/services/ghac/writer.rs
index 7fb2b3630..00aa4ac9b 100644
--- a/core/src/services/ghac/writer.rs
+++ b/core/src/services/ghac/writer.rs
@@ -127,7 +127,6 @@ impl GhacWriter {
                     encryption_key: None,
                     encryption_key_sha256: None,
                     encryption_algorithm: None,
-                    client: core.http_client.clone(),
                     loader: {
                         let config = reqsign::AzureStorageConfig {
                             sas_token: Some(query.to_string()),