Skip to content

Commit 521109e

Browse files
authored
Convert gc duration metrics to seconds (#12244)
1 parent 54c7b16 commit 521109e

File tree

5 files changed

+22
-11
lines changed

5 files changed

+22
-11
lines changed

instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/internal/DurationUtil.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,25 @@
66
package io.opentelemetry.instrumentation.runtimemetrics.java17.internal;
77

88
import java.time.Duration;
9+
import java.util.concurrent.TimeUnit;
910

1011
/**
1112
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
1213
* any time.
1314
*/
1415
public final class DurationUtil {
15-
private static final double NANOS_PER_SECOND = 1e9;
16+
private static final double NANOS_PER_SECOND = TimeUnit.SECONDS.toNanos(1);
17+
private static final double MILLIS_PER_SECOND = TimeUnit.SECONDS.toMillis(1);
1618

1719
/** Returns the duration as seconds, with fractional part included. */
1820
public static double toSeconds(Duration duration) {
1921
double epochSecs = (double) duration.getSeconds();
2022
return epochSecs + duration.getNano() / NANOS_PER_SECOND;
2123
}
2224

25+
public static double millisToSeconds(long milliseconds) {
26+
return milliseconds / MILLIS_PER_SECOND;
27+
}
28+
2329
private DurationUtil() {}
2430
}

instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/internal/garbagecollection/G1GarbageCollectionHandler.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.opentelemetry.api.metrics.Meter;
1111
import io.opentelemetry.instrumentation.runtimemetrics.java17.JfrFeature;
1212
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.Constants;
13+
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.DurationUtil;
1314
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.RecordedEventHandler;
1415
import java.time.Duration;
1516
import java.util.Optional;
@@ -40,7 +41,7 @@ public G1GarbageCollectionHandler(Meter meter) {
4041

4142
@Override
4243
public void accept(RecordedEvent ev) {
43-
histogram.record(ev.getDouble(Constants.DURATION), ATTR);
44+
histogram.record(DurationUtil.millisToSeconds(ev.getLong(Constants.DURATION)), ATTR);
4445
}
4546

4647
@Override

instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/internal/garbagecollection/OldGarbageCollectionHandler.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.opentelemetry.api.metrics.Meter;
1111
import io.opentelemetry.instrumentation.runtimemetrics.java17.JfrFeature;
1212
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.Constants;
13+
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.DurationUtil;
1314
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.RecordedEventHandler;
1415
import java.time.Duration;
1516
import java.util.Optional;
@@ -40,7 +41,7 @@ public OldGarbageCollectionHandler(Meter meter, String gc) {
4041

4142
@Override
4243
public void accept(RecordedEvent ev) {
43-
histogram.record(ev.getDouble(Constants.DURATION), attributes);
44+
histogram.record(DurationUtil.millisToSeconds(ev.getLong(Constants.DURATION)), attributes);
4445
}
4546

4647
@Override

instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/internal/garbagecollection/YoungGarbageCollectionHandler.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.opentelemetry.api.metrics.Meter;
1111
import io.opentelemetry.instrumentation.runtimemetrics.java17.JfrFeature;
1212
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.Constants;
13+
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.DurationUtil;
1314
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.RecordedEventHandler;
1415
import java.time.Duration;
1516
import java.util.Optional;
@@ -41,7 +42,7 @@ public YoungGarbageCollectionHandler(Meter meter, String gc) {
4142

4243
@Override
4344
public void accept(RecordedEvent ev) {
44-
histogram.record(ev.getDouble(Constants.DURATION), attributes);
45+
histogram.record(DurationUtil.millisToSeconds(ev.getLong(Constants.DURATION)), attributes);
4546
}
4647

4748
@Override

instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/internal/DurationUtilTest.java

+9-7
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,24 @@
55

66
package io.opentelemetry.instrumentation.runtimemetrics.java17.internal;
77

8-
import static org.junit.jupiter.api.Assertions.assertEquals;
8+
import static org.assertj.core.api.Assertions.assertThat;
99

1010
import java.time.Duration;
11+
import java.util.concurrent.TimeUnit;
1112
import org.junit.jupiter.api.Test;
1213

1314
class DurationUtilTest {
1415

1516
@Test
16-
void shouldConvertDurationToSeconds() {
17-
// Given
17+
void convertDurationToSeconds() {
1818
Duration duration = Duration.ofSeconds(7, 144);
19-
20-
// When
2119
double seconds = DurationUtil.toSeconds(duration);
20+
assertThat(seconds).isEqualTo(7.000000144);
21+
}
2222

23-
// Then
24-
assertEquals(7.000000144, seconds);
23+
@Test
24+
void convertMillisSeconds() {
25+
double seconds = DurationUtil.millisToSeconds(TimeUnit.SECONDS.toMillis(5));
26+
assertThat(seconds).isEqualTo(5);
2527
}
2628
}

0 commit comments

Comments
 (0)