>From Hussain Towaileb <[email protected]>:

Hussain Towaileb has submitted this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20511?usp=email )

Change subject: [NO ISSUE][EXT]: change azure cloud client to accept both 
clients
......................................................................

[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]>
---
M 
asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/azure/blobstorage/AzBlobStorageCloudClient.java
M 
asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/writer/AzureExternalFileWriterFactory.java
M 
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/azure/blob_storage/AzureUtils.java
3 files changed, 22 insertions(+), 7 deletions(-)

Approvals:
  Michael Blow: Looks good to me, approved
  Jenkins: Verified
  Hussain Towaileb: Looks good to me, but someone else must approve




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 0bd16a8..1cd0556 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 @@
     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 fd71ffc..d9eb16d 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 @@
     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 ac407f4..4d2a2dd 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.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 @@
         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 @@
         }

         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));
         }

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20511?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: asterixdb
Gerrit-Branch: phoenix
Gerrit-Change-Id: I1ee625e30cccf44aeebfa4d5ae5aa99968942ac5
Gerrit-Change-Number: 20511
Gerrit-PatchSet: 3
Gerrit-Owner: Hussain Towaileb <[email protected]>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Hussain Towaileb <[email protected]>
Gerrit-Reviewer: Jenkins <[email protected]>
Gerrit-Reviewer: Michael Blow <[email protected]>

Reply via email to