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