Skip to content

Commit 6ca3d1d

Browse files
authored
Add missing thread safety & immutable annotations in the API. (open-telemetry#972)
1 parent 96ee305 commit 6ca3d1d

15 files changed

Lines changed: 34 additions & 0 deletions

api/src/main/java/io/opentelemetry/correlationcontext/DefaultCorrelationContextManagerProvider.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
package io.opentelemetry.correlationcontext;
1818

1919
import io.opentelemetry.correlationcontext.spi.CorrelationContextManagerProvider;
20+
import javax.annotation.concurrent.ThreadSafe;
2021

22+
@ThreadSafe
2123
public final class DefaultCorrelationContextManagerProvider
2224
implements CorrelationContextManagerProvider {
2325
private static final CorrelationContextManagerProvider instance =

api/src/main/java/io/opentelemetry/correlationcontext/unsafe/CorrelationContextInScope.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@
1919
import io.grpc.Context;
2020
import io.opentelemetry.context.Scope;
2121
import io.opentelemetry.correlationcontext.CorrelationContext;
22+
import javax.annotation.concurrent.NotThreadSafe;
2223

2324
/**
2425
* A scope that manages the {@link Context} for a {@link CorrelationContext}.
2526
*
2627
* @since 0.1.0
2728
*/
29+
@NotThreadSafe
2830
final class CorrelationContextInScope implements Scope {
2931
private final Context orig;
3032

api/src/main/java/io/opentelemetry/metrics/Counter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
package io.opentelemetry.metrics;
1818

1919
import io.opentelemetry.metrics.InstrumentWithBinding.BoundInstrument;
20+
import javax.annotation.concurrent.ThreadSafe;
2021

2122
/**
2223
* Base interface for all the Counter metrics.
2324
*
2425
* @param <H> the Bound Counter type.
2526
* @since 0.1.0
2627
*/
28+
@ThreadSafe
2729
public interface Counter<H extends BoundInstrument> extends InstrumentWithBinding<H> {
2830

2931
/** Builder class for {@link Counter}. */

api/src/main/java/io/opentelemetry/metrics/DefaultMeter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@
2121
import java.util.List;
2222
import java.util.Map;
2323
import javax.annotation.concurrent.Immutable;
24+
import javax.annotation.concurrent.ThreadSafe;
2425

2526
/**
2627
* No-op implementations of {@link Meter}.
2728
*
2829
* @since 0.1.0
2930
*/
31+
@ThreadSafe
3032
public final class DefaultMeter implements Meter {
3133

3234
private static final DefaultMeter INSTANCE = new DefaultMeter();

api/src/main/java/io/opentelemetry/metrics/DefaultMeterProvider.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package io.opentelemetry.metrics;
1818

19+
import javax.annotation.concurrent.ThreadSafe;
20+
21+
@ThreadSafe
1922
public class DefaultMeterProvider implements MeterProvider {
2023

2124
private static final MeterProvider instance = new DefaultMeterProvider();

api/src/main/java/io/opentelemetry/metrics/DefaultMetricsProvider.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
package io.opentelemetry.metrics;
1818

1919
import io.opentelemetry.metrics.spi.MetricsProvider;
20+
import javax.annotation.concurrent.ThreadSafe;
2021

22+
@ThreadSafe
2123
public final class DefaultMetricsProvider implements MetricsProvider {
2224
private static final MetricsProvider instance = new DefaultMetricsProvider();
2325

api/src/main/java/io/opentelemetry/metrics/InstrumentWithBinding.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
package io.opentelemetry.metrics;
1818

1919
import io.opentelemetry.metrics.InstrumentWithBinding.BoundInstrument;
20+
import javax.annotation.concurrent.ThreadSafe;
2021

2122
/**
2223
* Base interface for all metrics with bounds defined in this package.
2324
*
2425
* @param <B> the specific type of Bound Instrument this instrument can provide.
2526
* @since 0.3.0
2627
*/
28+
@ThreadSafe
2729
public interface InstrumentWithBinding<B extends BoundInstrument> extends Instrument {
2830
/**
2931
* Returns a {@code Bound Instrument} associated with the specified {@code labelSet}. Multiples

api/src/main/java/io/opentelemetry/metrics/LabelSet.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@
1616

1717
package io.opentelemetry.metrics;
1818

19+
import javax.annotation.concurrent.ThreadSafe;
20+
1921
/**
2022
* LabelSet is an implementation-level interface that represents a set of Labels for use as
2123
* pre-defined labels in the metrics API.
2224
*
2325
* <p>LabelSets that have the same key/value pairs should have the same equals/hashcode.
2426
*/
27+
@ThreadSafe
2528
public interface LabelSet {}

api/src/main/java/io/opentelemetry/metrics/Measure.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
package io.opentelemetry.metrics;
1818

1919
import io.opentelemetry.metrics.InstrumentWithBinding.BoundInstrument;
20+
import javax.annotation.concurrent.ThreadSafe;
2021

2122
/**
2223
* Base interface for all the Measure instruments.
2324
*
2425
* @param <H> the Bound Instrument type.
2526
* @since 0.1.0
2627
*/
28+
@ThreadSafe
2729
public interface Measure<H extends BoundInstrument> extends InstrumentWithBinding<H> {
2830

2931
/** Builder class for {@link Measure}. */

api/src/main/java/io/opentelemetry/metrics/Observer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@
1616

1717
package io.opentelemetry.metrics;
1818

19+
import javax.annotation.concurrent.ThreadSafe;
20+
1921
/**
2022
* Base interface for all the Observer metrics.
2123
*
2224
* @param <R> the callback Result type.
2325
* @since 0.1.0
2426
*/
27+
@ThreadSafe
2528
public interface Observer<R> extends Instrument {
2629
/**
2730
* A {@code Callback} for a {@code Observer}.

0 commit comments

Comments
 (0)