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

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 39ac77d88a3a24246057079de6d42f2742680e4b
Author: Hussain Towaileb <[email protected]>
AuthorDate: Wed Oct 22 20:25:36 2025 +0300

    [NO ISSUE][EXT]: change azure cloud client to accept both clients
    
    Ext-ref: MB-69069
    Change-Id: I1ee625e30cccf44aeebfa4d5ae5aa99968942ac5
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20511
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Hussain Towaileb <[email protected]>
    Reviewed-by: Michael Blow <[email protected]>
---
 .../azure/blobstorage/AzBlobStorageCloudClient.java |  6 +++---
 .../writer/AzureExternalFileWriterFactory.java      |  2 +-
 .../util/azure/blob_storage/AzureUtils.java         | 21 ++++++++++++++++++---
 3 files changed, 22 insertions(+), 7 deletions(-)

diff --git 
a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/azure/blobstorage/AzBlobStorageCloudClient.java
 
b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/azure/blobstorage/AzBlobStorageCloudClient.java
index 0bd16a867b..1cd0556789 100644
--- 
a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/azure/blobstorage/AzBlobStorageCloudClient.java
+++ 
b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/azure/blobstorage/AzBlobStorageCloudClient.java
@@ -100,13 +100,13 @@ public class AzBlobStorageCloudClient implements 
ICloudClient {
     private static final Logger LOGGER = LogManager.getLogger();
 
     public AzBlobStorageCloudClient(AzBlobStorageClientConfig config, 
ICloudGuardian guardian) {
-        this(config, buildClient(config), guardian);
+        this(config, buildClient(config), buildAsyncClient(config), guardian);
     }
 
     public AzBlobStorageCloudClient(AzBlobStorageClientConfig config, 
BlobServiceClient blobServiceClient,
-            ICloudGuardian guardian) {
+            BlobServiceAsyncClient asyncBlobServiceClient, ICloudGuardian 
guardian) {
         this.blobContainerClient = 
blobServiceClient.getBlobContainerClient(config.getBucket());
-        this.blobContainerAsyncClient = 
buildAsyncClient(config).getBlobContainerAsyncClient(config.getBucket());
+        this.blobContainerAsyncClient = 
asyncBlobServiceClient.getBlobContainerAsyncClient(config.getBucket());
         this.config = config;
         this.guardian = guardian;
         long profilerInterval = config.getProfilerLogInterval();
diff --git 
a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/writer/AzureExternalFileWriterFactory.java
 
b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/writer/AzureExternalFileWriterFactory.java
index fd71ffc63c..d9eb16dd0f 100644
--- 
a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/writer/AzureExternalFileWriterFactory.java
+++ 
b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/writer/AzureExternalFileWriterFactory.java
@@ -68,7 +68,7 @@ public final class AzureExternalFileWriterFactory extends 
AbstractCloudExternalF
     ICloudClient createCloudClient(IApplicationContext appCtx) throws 
CompilationException {
         AzBlobStorageClientConfig config = 
AzBlobStorageClientConfig.of(configuration, writeBufferSize);
         return new AzBlobStorageCloudClient(config, 
AzureUtils.buildAzureBlobClient(appCtx, configuration),
-                ICloudGuardian.NoOpCloudGuardian.INSTANCE);
+                AzureUtils.buildAzureBlobAsyncClient(appCtx, configuration), 
ICloudGuardian.NoOpCloudGuardian.INSTANCE);
     }
 
     @Override
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/azure/blob_storage/AzureUtils.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/azure/blob_storage/AzureUtils.java
index ac407f4dc8..4d2a2dd116 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/azure/blob_storage/AzureUtils.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/azure/blob_storage/AzureUtils.java
@@ -77,6 +77,7 @@ import com.azure.identity.ClientCertificateCredentialBuilder;
 import com.azure.identity.ClientSecretCredentialBuilder;
 import com.azure.identity.ManagedIdentityCredentialBuilder;
 import com.azure.storage.blob.BlobContainerClient;
+import com.azure.storage.blob.BlobServiceAsyncClient;
 import com.azure.storage.blob.BlobServiceClient;
 import com.azure.storage.blob.BlobServiceClientBuilder;
 import com.azure.storage.blob.models.BlobItem;
@@ -94,14 +95,24 @@ public class AzureUtils {
         throw new AssertionError("do not instantiate");
     }
 
+    public static BlobServiceClient buildAzureBlobClient(IApplicationContext 
appCtx, Map<String, String> configuration)
+            throws CompilationException {
+        return buildAzureBlobClient(BlobServiceClient.class, appCtx, 
configuration);
+    }
+
+    public static BlobServiceAsyncClient 
buildAzureBlobAsyncClient(IApplicationContext appCtx,
+            Map<String, String> configuration) throws CompilationException {
+        return buildAzureBlobClient(BlobServiceAsyncClient.class, appCtx, 
configuration);
+    }
+
     /**
      * Builds the Azure storage account using the provided configuration
      *
      * @param configuration properties
      * @return client
      */
-    public static BlobServiceClient buildAzureBlobClient(IApplicationContext 
appCtx, Map<String, String> configuration)
-            throws CompilationException {
+    private static <T> T buildAzureBlobClient(Class<T> type, 
IApplicationContext appCtx,
+            Map<String, String> configuration) throws CompilationException {
         String managedIdentityId = 
configuration.get(MANAGED_IDENTITY_ID_FIELD_NAME);
         String accountName = configuration.get(ACCOUNT_NAME_FIELD_NAME);
         String accountKey = configuration.get(ACCOUNT_KEY_FIELD_NAME);
@@ -247,7 +258,11 @@ public class AzureUtils {
         }
 
         try {
-            return builder.buildClient();
+            if (type == BlobServiceClient.class) {
+                return type.cast(builder.buildClient());
+            } else {
+                return type.cast(builder.buildAsyncClient());
+            }
         } catch (Exception ex) {
             throw new CompilationException(ErrorCode.EXTERNAL_SOURCE_ERROR, 
ex, getMessageOrToString(ex));
         }

Reply via email to