mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
implement threads metric on activity
This commit is contained in:
@@ -15,6 +15,9 @@
|
||||
*/
|
||||
package io.nosqlbench.engine.core.lifecycle.activity;
|
||||
|
||||
import com.codahale.metrics.Gauge;
|
||||
import io.nosqlbench.api.engine.metrics.ActivityMetrics;
|
||||
import io.nosqlbench.api.engine.metrics.instruments.NBFunctionGauge;
|
||||
import io.nosqlbench.api.labels.NBLabeledElement;
|
||||
import io.nosqlbench.api.labels.NBLabels;
|
||||
import io.nosqlbench.engine.api.activityapi.core.*;
|
||||
@@ -72,6 +75,7 @@ public class ActivityExecutor implements NBLabeledElement, ActivityController, P
|
||||
private long stoppedAt = 0L;
|
||||
|
||||
private ActivityExecutorShutdownHook shutdownHook = null;
|
||||
private NBFunctionGauge threadsGauge;
|
||||
|
||||
public ActivityExecutor(Activity activity, String sessionId) {
|
||||
this.activity = activity;
|
||||
@@ -450,6 +454,15 @@ public class ActivityExecutor implements NBLabeledElement, ActivityController, P
|
||||
startMotorExecutorService();
|
||||
startRunningActivityThreads();
|
||||
awaitMotorsAtLeastRunning();
|
||||
registerMetrics();
|
||||
}
|
||||
|
||||
private void registerMetrics() {
|
||||
this.threadsGauge= threadsGauge = ActivityMetrics.register(new NBFunctionGauge(activity, () -> (double) this.motors.size(), "threads"));
|
||||
}
|
||||
private void unregisterMetrics() {
|
||||
ActivityMetrics.unregister(this.threadsGauge);
|
||||
this.threadsGauge=null;
|
||||
}
|
||||
|
||||
private boolean shutdownExecutorService(int secondsToWait) {
|
||||
@@ -472,6 +485,7 @@ public class ActivityExecutor implements NBLabeledElement, ActivityController, P
|
||||
} finally {
|
||||
logger.trace(() -> "finally shutting down activity " + this.getActivity().getAlias());
|
||||
this.stoppedAt = System.currentTimeMillis();
|
||||
unregisterMetrics();
|
||||
activity.setRunState(RunState.Stopped);
|
||||
}
|
||||
|
||||
@@ -567,6 +581,16 @@ public class ActivityExecutor implements NBLabeledElement, ActivityController, P
|
||||
.build());
|
||||
}
|
||||
|
||||
private class ThreadsGauge implements Gauge<Double> {
|
||||
public ThreadsGauge(ActivityExecutor activityExecutor) {
|
||||
ActivityExecutor ae = activityExecutor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Double getValue() {
|
||||
return (double) ActivityExecutor.this.motors.size();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user