You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by al...@apache.org on 2024/06/12 12:24:20 UTC

(asterixdb) branch master updated: [NO ISSUE][OTH] Expose IRequestProfiler from ICloudClient

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 3580069c21 [NO ISSUE][OTH] Expose IRequestProfiler from ICloudClient
3580069c21 is described below

commit 3580069c212d8cac8483fe2ae40d5e5cf04dc6e6
Author: Ali Alsuliman <al...@gmail.com>
AuthorDate: Wed Jun 12 03:55:52 2024 +0300

    [NO ISSUE][OTH] Expose IRequestProfiler from ICloudClient
    
    - user model changes: no
    - storage format changes: no
    - interface changes: yes
    
    Details:
    - Expose the object requests counts from IRequestProfiler.
    
    Change-Id: I6964af27bf66717661cb450de793ca7d06bb9eaf
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18364
    Reviewed-by: Hussain Towaileb <hu...@gmail.com>
    Tested-by: Ali Alsuliman <al...@gmail.com>
---
 .../apache/asterix/cloud/clients/ICloudClient.java |  6 ++++
 .../cloud/clients/aws/s3/S3CloudClient.java        |  5 ++++
 .../cloud/clients/google/gcs/GCSCloudClient.java   |  5 ++++
 .../clients/profiler/CountRequestProfiler.java     | 35 ++++++++++++++++++++++
 .../cloud/clients/profiler/IRequestProfiler.java   | 15 ++++++++++
 .../clients/profiler/NoOpRequestProfiler.java      | 35 ++++++++++++++++++++++
 6 files changed, 101 insertions(+)

diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/ICloudClient.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/ICloudClient.java
index 89f3c81312..209245b61e 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/ICloudClient.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/ICloudClient.java
@@ -25,6 +25,7 @@ import java.util.Collection;
 import java.util.Set;
 
 import org.apache.asterix.cloud.IWriteBufferProvider;
+import org.apache.asterix.cloud.clients.profiler.IRequestProfiler;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.control.nc.io.IOManager;
@@ -41,6 +42,11 @@ public interface ICloudClient {
      */
     int getWriteBufferSize();
 
+    /**
+     * @return the requests profiler
+     */
+    IRequestProfiler getProfiler();
+
     /**
      * Creates a cloud buffered writer
      *
diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3CloudClient.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3CloudClient.java
index 2eae455ba6..5ce1f4393a 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3CloudClient.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3CloudClient.java
@@ -104,6 +104,11 @@ public final class S3CloudClient implements ICloudClient {
         return writeBufferSize;
     }
 
+    @Override
+    public IRequestProfiler getProfiler() {
+        return profiler;
+    }
+
     @Override
     public ICloudWriter createWriter(String bucket, String path, IWriteBufferProvider bufferProvider) {
         ICloudBufferedWriter bufferedWriter = new S3BufferedWriter(s3Client, profiler, guardian, bucket, path);
diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSCloudClient.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSCloudClient.java
index accf3c9774..2874b4e61a 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSCloudClient.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSCloudClient.java
@@ -90,6 +90,11 @@ public class GCSCloudClient implements ICloudClient {
         return GCSClientConfig.WRITE_BUFFER_SIZE;
     }
 
+    @Override
+    public IRequestProfiler getProfiler() {
+        return profiler;
+    }
+
     @Override
     public ICloudWriter createWriter(String bucket, String path, IWriteBufferProvider bufferProvider) {
         return new GCSWriter(bucket, path, gcsClient, profiler);
diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/CountRequestProfiler.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/CountRequestProfiler.java
index 624395bb3f..3fc378cc17 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/CountRequestProfiler.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/CountRequestProfiler.java
@@ -95,6 +95,41 @@ public class CountRequestProfiler implements IRequestProfiler {
         log();
     }
 
+    @Override
+    public long objectsListCount() {
+        return listObjectsCounter.get();
+    }
+
+    @Override
+    public long objectGetCount() {
+        return getObjectCounter.get();
+    }
+
+    @Override
+    public long objectWriteCount() {
+        return writeObjectCounter.get();
+    }
+
+    @Override
+    public long objectDeleteCount() {
+        return deleteObjectCounter.get();
+    }
+
+    @Override
+    public long objectCopyCount() {
+        return copyObjectCounter.get();
+    }
+
+    @Override
+    public long objectMultipartUploadCount() {
+        return multipartUploadCounter.get();
+    }
+
+    @Override
+    public long objectMultipartDownloadCount() {
+        return multipartDownloadCounter.get();
+    }
+
     private void log() {
         if (LOGGER.isEnabled(LOG_LEVEL)) {
             long currentTime = System.nanoTime();
diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/IRequestProfiler.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/IRequestProfiler.java
index 9d1d86e3ab..a23a78f41f 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/IRequestProfiler.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/IRequestProfiler.java
@@ -32,4 +32,19 @@ public interface IRequestProfiler {
     void objectMultipartUpload();
 
     void objectMultipartDownload();
+
+    long objectsListCount();
+
+    long objectGetCount();
+
+    long objectWriteCount();
+
+    long objectDeleteCount();
+
+    long objectCopyCount();
+
+    long objectMultipartUploadCount();
+
+    long objectMultipartDownloadCount();
+
 }
diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/NoOpRequestProfiler.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/NoOpRequestProfiler.java
index 2ef27698c3..f7e89c3643 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/NoOpRequestProfiler.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/NoOpRequestProfiler.java
@@ -58,4 +58,39 @@ public class NoOpRequestProfiler implements IRequestProfiler {
     public void objectMultipartDownload() {
         // NoOp
     }
+
+    @Override
+    public long objectsListCount() {
+        return 0;
+    }
+
+    @Override
+    public long objectGetCount() {
+        return 0;
+    }
+
+    @Override
+    public long objectWriteCount() {
+        return 0;
+    }
+
+    @Override
+    public long objectDeleteCount() {
+        return 0;
+    }
+
+    @Override
+    public long objectCopyCount() {
+        return 0;
+    }
+
+    @Override
+    public long objectMultipartUploadCount() {
+        return 0;
+    }
+
+    @Override
+    public long objectMultipartDownloadCount() {
+        return 0;
+    }
 }