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 1a93ce8b0b6137347e8f5ce665e6e56fddb9abfd
Author: Hussain Towaileb <hussain.towai...@couchbase.com>
AuthorDate: Tue Oct 3 14:07:03 2023 +0300

    [NO ISSUE][OTH]: Add methods to collect requests/jobs stats
    
    Change-Id: Ib266878bf05782506045abfadaa83b41f0f95986
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17839
    Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
    Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
    Reviewed-by: Hussain Towaileb <hussai...@gmail.com>
    Reviewed-by: Peeyush Gupta <peeyush.gu...@couchbase.com>
---
 .../org/apache/asterix/active/IActiveNotificationHandler.java     | 7 +++++++
 .../org/apache/asterix/app/active/ActiveNotificationHandler.java  | 6 ++++++
 .../main/java/org/apache/asterix/common/api/IRequestTracker.java  | 6 ++++++
 .../java/org/apache/asterix/runtime/utils/RequestTracker.java     | 8 ++++++++
 .../main/java/org/apache/hyracks/control/cc/job/IJobManager.java  | 5 +++++
 .../main/java/org/apache/hyracks/control/cc/job/JobManager.java   | 5 +++++
 6 files changed, 37 insertions(+)

diff --git 
a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/IActiveNotificationHandler.java
 
b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/IActiveNotificationHandler.java
index 60bfa69801..9a0514839f 100644
--- 
a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/IActiveNotificationHandler.java
+++ 
b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/IActiveNotificationHandler.java
@@ -19,6 +19,8 @@
  */
 package org.apache.asterix.active;
 
+import java.util.Collection;
+
 import org.apache.asterix.active.message.ActivePartitionMessage;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
@@ -52,6 +54,11 @@ public interface IActiveNotificationHandler {
      */
     void unregisterListener(IActiveEntityEventsListener listener) throws 
HyracksDataException;
 
+    /**
+     * @return List of all the registered event listeners
+     */
+    Collection<IActiveEntityEventsListener> getEventListenersAsList();
+
     /**
      * @return all the registered event listeners
      */
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveNotificationHandler.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveNotificationHandler.java
index 6b3581e66c..3c277d5aa6 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveNotificationHandler.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveNotificationHandler.java
@@ -19,6 +19,7 @@
 package org.apache.asterix.app.active;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -186,6 +187,11 @@ public class ActiveNotificationHandler extends 
SingleThreadEventProcessor<Active
         return 
entityEventListeners.values().toArray(IActiveEntityEventsListener[]::new);
     }
 
+    @Override
+    public synchronized Collection<IActiveEntityEventsListener> 
getEventListenersAsList() {
+        return 
Collections.unmodifiableCollection(entityEventListeners.values());
+    }
+
     @Override
     public synchronized void registerListener(IActiveEntityEventsListener 
listener) throws HyracksDataException {
         if (suspended) {
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IRequestTracker.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IRequestTracker.java
index a3ddb30ef0..0019015df8 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IRequestTracker.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IRequestTracker.java
@@ -75,4 +75,10 @@ public interface IRequestTracker {
      * @return the recently completed requests
      */
     Collection<IClientRequest> getCompletedRequests();
+
+    /**
+     *
+     * @return the total number of requests since cluster start/restart
+     */
+    long getTotalNumberOfRequests();
 }
diff --git 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RequestTracker.java
 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RequestTracker.java
index 333c709b61..c9425c6065 100644
--- 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RequestTracker.java
+++ 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RequestTracker.java
@@ -24,6 +24,7 @@ import java.util.Collections;
 import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.asterix.common.api.IClientRequest;
 import org.apache.asterix.common.api.IRequestTracker;
@@ -37,10 +38,12 @@ public class RequestTracker implements IRequestTracker {
     private final Map<String, IClientRequest> clientIdRequests = new 
ConcurrentHashMap<>();
     private final CircularFifoQueue<IClientRequest> completedRequests;
     private final ICcApplicationContext ccAppCtx;
+    private final AtomicLong numRequests;
 
     public RequestTracker(ICcApplicationContext ccAppCtx) {
         this.ccAppCtx = ccAppCtx;
         completedRequests = new 
CircularFifoQueue<>(ccAppCtx.getExternalProperties().getRequestsArchiveSize());
+        numRequests = new AtomicLong(0);
     }
 
     @Override
@@ -57,6 +60,7 @@ public class RequestTracker implements IRequestTracker {
     @Override
     public void track(IClientRequest request) {
         runningRequests.put(request.getId(), request);
+        numRequests.incrementAndGet();
         if (request.getClientContextId() != null) {
             clientIdRequests.put(request.getClientContextId(), request);
         }
@@ -112,4 +116,8 @@ public class RequestTracker implements IRequestTracker {
     private synchronized void archive(IClientRequest request) {
         completedRequests.add(request);
     }
+
+    public long getTotalNumberOfRequests() {
+        return numRequests.get();
+    }
 }
diff --git 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/IJobManager.java
 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/IJobManager.java
index a9ddee3b59..b2795d4d5d 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/IJobManager.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/IJobManager.java
@@ -111,6 +111,11 @@ public interface IJobManager {
      */
     Collection<JobRun> getRunningJobs();
 
+    /**
+     * @return number of jobs that are currently running.
+     */
+    int getRunningJobsCount();
+
     /**
      * @return all jobs that are currently waiting in the job queue.
      */
diff --git 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/JobManager.java
 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/JobManager.java
index 9850ee285e..4882f4ac49 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/JobManager.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/JobManager.java
@@ -263,6 +263,11 @@ public class JobManager implements IJobManager {
         return activeRunMap.values();
     }
 
+    @Override
+    public int getRunningJobsCount() {
+        return activeRunMap.size();
+    }
+
     @Override
     public Collection<JobRun> getPendingJobs() {
         return jobQueue.jobs();

Reply via email to