1- package datadog .trace .core . monitor ;
1+ package datadog .trace .api . rum ;
22
33import static java .util .concurrent .TimeUnit .SECONDS ;
44
55import datadog .trace .api .StatsDClient ;
6- import datadog .trace .api .rum .RumTelemetryCollector ;
76import datadog .trace .util .AgentTaskScheduler ;
87import java .util .concurrent .TimeUnit ;
98import java .util .concurrent .atomic .AtomicBoolean ;
10- import org .jctools .counters .CountersFactory ;
11- import org .jctools .counters .FixedSizeStripedLongCounter ;
9+ import java .util .concurrent .atomic .AtomicLong ;
1210import org .slf4j .Logger ;
1311import org .slf4j .LoggerFactory ;
1412
1513// Default implementation of RumInjectorHealthMetrics that reports metrics via StatsDClient
1614// This class implements the RumTelemetryCollector interface, which is used to collect telemetry
1715// from the RumInjector in the internal-api module
18- public class DefaultRumInjectorHealthMetrics extends RumInjectorHealthMetrics
19- implements RumTelemetryCollector {
20- private static final Logger log = LoggerFactory .getLogger (DefaultRumInjectorHealthMetrics .class );
16+ public class RumInjectorMetrics implements RumTelemetryCollector {
17+ private static final Logger log = LoggerFactory .getLogger (RumInjectorMetrics .class );
2118
2219 private static final String [] NO_TAGS = new String [0 ];
2320
2421 private final AtomicBoolean started = new AtomicBoolean (false );
25- private volatile AgentTaskScheduler .Scheduled <DefaultRumInjectorHealthMetrics > cancellation ;
22+ private volatile AgentTaskScheduler .Scheduled <RumInjectorMetrics > cancellation ;
2623
27- private final FixedSizeStripedLongCounter injectionSucceed =
28- CountersFactory .createFixedSizeStripedCounter (8 );
29- private final FixedSizeStripedLongCounter injectionFailed =
30- CountersFactory .createFixedSizeStripedCounter (8 );
31- private final FixedSizeStripedLongCounter injectionSkipped =
32- CountersFactory .createFixedSizeStripedCounter (8 );
24+ private final AtomicLong injectionSucceed = new AtomicLong ();
25+ private final AtomicLong injectionFailed = new AtomicLong ();
26+ private final AtomicLong injectionSkipped = new AtomicLong ();
3327
3428 private final StatsDClient statsd ;
3529 private final long interval ;
3630 private final TimeUnit units ;
3731
38- @ Override
3932 public void start () {
4033 if (started .compareAndSet (false , true )) {
4134 cancellation =
@@ -44,39 +37,37 @@ public void start() {
4437 }
4538 }
4639
47- public DefaultRumInjectorHealthMetrics (final StatsDClient statsd ) {
40+ public RumInjectorMetrics (final StatsDClient statsd ) {
4841 this (statsd , 30 , SECONDS );
4942 }
5043
51- public DefaultRumInjectorHealthMetrics (final StatsDClient statsd , long interval , TimeUnit units ) {
44+ public RumInjectorMetrics (final StatsDClient statsd , long interval , TimeUnit units ) {
5245 this .statsd = statsd ;
5346 this .interval = interval ;
5447 this .units = units ;
5548 }
5649
5750 @ Override
5851 public void onInjectionSucceed () {
59- injectionSucceed .inc ();
52+ injectionSucceed .incrementAndGet ();
6053 }
6154
6255 @ Override
6356 public void onInjectionFailed () {
64- injectionFailed .inc ();
57+ injectionFailed .incrementAndGet ();
6558 }
6659
6760 @ Override
6861 public void onInjectionSkipped () {
69- injectionSkipped .inc ();
62+ injectionSkipped .incrementAndGet ();
7063 }
7164
72- @ Override
7365 public void close () {
7466 if (null != cancellation ) {
7567 cancellation .cancel ();
7668 }
7769 }
7870
79- @ Override
8071 public String summary () {
8172 return "injectionSucceed="
8273 + injectionSucceed .get ()
@@ -86,13 +77,13 @@ public String summary() {
8677 + injectionSkipped .get ();
8778 }
8879
89- private static class Flush implements AgentTaskScheduler .Task <DefaultRumInjectorHealthMetrics > {
80+ private static class Flush implements AgentTaskScheduler .Task <RumInjectorMetrics > {
9081
9182 private final long [] previousCounts = new long [3 ]; // one per counter
9283 private int countIndex ;
9384
9485 @ Override
95- public void run (DefaultRumInjectorHealthMetrics target ) {
86+ public void run (RumInjectorMetrics target ) {
9687 countIndex = -1 ;
9788 try {
9889 reportIfChanged (target .statsd , "rum.injection.succeed" , target .injectionSucceed , NO_TAGS );
@@ -107,10 +98,7 @@ public void run(DefaultRumInjectorHealthMetrics target) {
10798 }
10899
109100 private void reportIfChanged (
110- StatsDClient statsDClient ,
111- String aspect ,
112- FixedSizeStripedLongCounter counter ,
113- String [] tags ) {
101+ StatsDClient statsDClient , String aspect , AtomicLong counter , String [] tags ) {
114102 long count = counter .get ();
115103 long delta = count - previousCounts [++countIndex ];
116104 if (delta > 0 ) {
0 commit comments