diff --git a/api/src/main/java/io/grpc/Channel.java b/api/src/main/java/io/grpc/Channel.java index 60ff76ff082..b46d1b0fbb6 100644 --- a/api/src/main/java/io/grpc/Channel.java +++ b/api/src/main/java/io/grpc/Channel.java @@ -16,7 +16,7 @@ package io.grpc; -import javax.annotation.concurrent.ThreadSafe; +import com.google.errorprone.annotations.ThreadSafe; /** * A virtual connection to a conceptual endpoint, to perform RPCs. A channel is free to have zero or diff --git a/api/src/main/java/io/grpc/ChannelLogger.java b/api/src/main/java/io/grpc/ChannelLogger.java index ce654ec9d5b..8c534725a5f 100644 --- a/api/src/main/java/io/grpc/ChannelLogger.java +++ b/api/src/main/java/io/grpc/ChannelLogger.java @@ -16,7 +16,7 @@ package io.grpc; -import javax.annotation.concurrent.ThreadSafe; +import com.google.errorprone.annotations.ThreadSafe; /** * A Channel-specific logger provided by GRPC library to {@link LoadBalancer} implementations. diff --git a/api/src/main/java/io/grpc/ClientInterceptor.java b/api/src/main/java/io/grpc/ClientInterceptor.java index c27c31c8474..81474c2ddd9 100644 --- a/api/src/main/java/io/grpc/ClientInterceptor.java +++ b/api/src/main/java/io/grpc/ClientInterceptor.java @@ -16,7 +16,7 @@ package io.grpc; -import javax.annotation.concurrent.ThreadSafe; +import com.google.errorprone.annotations.ThreadSafe; /** * Interface for intercepting outgoing calls before they are dispatched by a {@link Channel}. diff --git a/api/src/main/java/io/grpc/ClientStreamTracer.java b/api/src/main/java/io/grpc/ClientStreamTracer.java index 42e1fdfebea..50874beb320 100644 --- a/api/src/main/java/io/grpc/ClientStreamTracer.java +++ b/api/src/main/java/io/grpc/ClientStreamTracer.java @@ -19,7 +19,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.base.MoreObjects; -import javax.annotation.concurrent.ThreadSafe; +import com.google.errorprone.annotations.ThreadSafe; /** * {@link StreamTracer} for the client-side. diff --git a/api/src/main/java/io/grpc/CompressorRegistry.java b/api/src/main/java/io/grpc/CompressorRegistry.java index 4711f6917d0..bce1b8f4ccf 100644 --- a/api/src/main/java/io/grpc/CompressorRegistry.java +++ b/api/src/main/java/io/grpc/CompressorRegistry.java @@ -19,10 +19,10 @@ import static com.google.common.base.Preconditions.checkArgument; import com.google.common.annotations.VisibleForTesting; +import com.google.errorprone.annotations.ThreadSafe; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import javax.annotation.Nullable; -import javax.annotation.concurrent.ThreadSafe; /** * Encloses classes related to the compression and decompression of messages. diff --git a/api/src/main/java/io/grpc/DecompressorRegistry.java b/api/src/main/java/io/grpc/DecompressorRegistry.java index ea0433d8d0a..983f7355437 100644 --- a/api/src/main/java/io/grpc/DecompressorRegistry.java +++ b/api/src/main/java/io/grpc/DecompressorRegistry.java @@ -20,6 +20,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.base.Joiner; +import com.google.errorprone.annotations.ThreadSafe; import java.nio.charset.Charset; import java.util.Collections; import java.util.HashSet; @@ -27,7 +28,6 @@ import java.util.Map; import java.util.Set; import javax.annotation.Nullable; -import javax.annotation.concurrent.ThreadSafe; /** * Encloses classes related to the compression and decompression of messages. diff --git a/api/src/main/java/io/grpc/HandlerRegistry.java b/api/src/main/java/io/grpc/HandlerRegistry.java index 4aaf0114fb1..b6e17903b63 100644 --- a/api/src/main/java/io/grpc/HandlerRegistry.java +++ b/api/src/main/java/io/grpc/HandlerRegistry.java @@ -16,10 +16,10 @@ package io.grpc; +import com.google.errorprone.annotations.ThreadSafe; import java.util.Collections; import java.util.List; import javax.annotation.Nullable; -import javax.annotation.concurrent.ThreadSafe; /** * Registry of services and their methods used by servers to dispatching incoming calls. diff --git a/api/src/main/java/io/grpc/LoadBalancer.java b/api/src/main/java/io/grpc/LoadBalancer.java index 3187ae8ef1b..730f0baf3b8 100644 --- a/api/src/main/java/io/grpc/LoadBalancer.java +++ b/api/src/main/java/io/grpc/LoadBalancer.java @@ -22,6 +22,7 @@ import com.google.common.base.MoreObjects; import com.google.common.base.Objects; import com.google.common.base.Preconditions; +import com.google.errorprone.annotations.ThreadSafe; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -32,7 +33,6 @@ import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.NotThreadSafe; -import javax.annotation.concurrent.ThreadSafe; /** * A pluggable component that receives resolved addresses from {@link NameResolver} and provides the @@ -64,7 +64,7 @@ * allows implementations to schedule tasks to be run in the same Synchronization Context, with or * without a delay, thus those tasks don't need to worry about synchronizing with the balancer * methods. - * + * *
However, the actual running thread may be the network thread, thus the following rules must be * followed to prevent blocking or even dead-locking in a network: * @@ -417,7 +417,7 @@ public void handleSubchannelState( * *
This method should always return a constant value. It's not specified when this will be * called. - * + * *
Note that this method is only called when implementing {@code handleResolvedAddresses()} * instead of {@code acceptResolvedAddresses()}. * @@ -640,7 +640,7 @@ private PickResult( * stream is created at all in some cases. * @since 1.3.0 */ - // TODO(shivaspeaks): Need to deprecate old APIs and create new ones, + // TODO(shivaspeaks): Need to deprecate old APIs and create new ones, // per https://github.com/grpc/grpc-java/issues/12662. public static PickResult withSubchannel( Subchannel subchannel, @Nullable ClientStreamTracer.Factory streamTracerFactory) { @@ -1332,7 +1332,7 @@ public MetricRecorder getMetricRecorder() { } /** - * A logical connection to a server, or a group of equivalent servers represented by an {@link + * A logical connection to a server, or a group of equivalent servers represented by an {@link * EquivalentAddressGroup}. * *
It maintains at most one physical connection (aka transport) for sending new RPCs, while diff --git a/api/src/main/java/io/grpc/LoadBalancerRegistry.java b/api/src/main/java/io/grpc/LoadBalancerRegistry.java index a8fbc102f5f..31442c0ce48 100644 --- a/api/src/main/java/io/grpc/LoadBalancerRegistry.java +++ b/api/src/main/java/io/grpc/LoadBalancerRegistry.java @@ -20,6 +20,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.annotations.VisibleForTesting; +import com.google.errorprone.annotations.ThreadSafe; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; @@ -30,7 +31,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.Nullable; -import javax.annotation.concurrent.ThreadSafe; /** * Registry of {@link LoadBalancerProvider}s. The {@link #getDefaultRegistry default instance} diff --git a/api/src/main/java/io/grpc/ManagedChannel.java b/api/src/main/java/io/grpc/ManagedChannel.java index 7875fdb57f2..5f35380aa59 100644 --- a/api/src/main/java/io/grpc/ManagedChannel.java +++ b/api/src/main/java/io/grpc/ManagedChannel.java @@ -16,8 +16,8 @@ package io.grpc; +import com.google.errorprone.annotations.ThreadSafe; import java.util.concurrent.TimeUnit; -import javax.annotation.concurrent.ThreadSafe; /** * A {@link Channel} that provides lifecycle management. diff --git a/api/src/main/java/io/grpc/ManagedChannelRegistry.java b/api/src/main/java/io/grpc/ManagedChannelRegistry.java index ec47b325ffc..41ce4d71a5a 100644 --- a/api/src/main/java/io/grpc/ManagedChannelRegistry.java +++ b/api/src/main/java/io/grpc/ManagedChannelRegistry.java @@ -18,6 +18,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; +import com.google.errorprone.annotations.ThreadSafe; import com.google.errorprone.annotations.concurrent.GuardedBy; import java.net.SocketAddress; import java.net.URI; @@ -32,7 +33,6 @@ import java.util.ServiceLoader; import java.util.logging.Level; import java.util.logging.Logger; -import javax.annotation.concurrent.ThreadSafe; /** * Registry of {@link ManagedChannelProvider}s. The {@link #getDefaultRegistry default instance} diff --git a/api/src/main/java/io/grpc/NameResolver.java b/api/src/main/java/io/grpc/NameResolver.java index e44a26309ae..f77be5c0954 100644 --- a/api/src/main/java/io/grpc/NameResolver.java +++ b/api/src/main/java/io/grpc/NameResolver.java @@ -23,6 +23,7 @@ import com.google.common.base.MoreObjects.ToStringHelper; import com.google.common.base.Objects; import com.google.errorprone.annotations.InlineMe; +import com.google.errorprone.annotations.ThreadSafe; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -35,7 +36,6 @@ import java.util.concurrent.ScheduledExecutorService; import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; -import javax.annotation.concurrent.ThreadSafe; /** * A pluggable component that resolves a target {@link URI} and return addresses to the caller. @@ -78,7 +78,7 @@ public abstract class NameResolver { * Starts the resolution. The method is not supposed to throw any exceptions. That might cause the * Channel that the name resolver is serving to crash. Errors should be propagated * through {@link Listener#onError}. - * + * *
An instance may not be started more than once, by any overload of this method, even after * an intervening call to {@link #shutdown}. * @@ -114,7 +114,7 @@ public void onResult(ResolutionResult resolutionResult) { * Starts the resolution. The method is not supposed to throw any exceptions. That might cause the * Channel that the name resolver is serving to crash. Errors should be propagated * through {@link Listener2#onError}. - * + * *
An instance may not be started more than once, by any overload of this method, even after
* an intervening call to {@link #shutdown}.
*
diff --git a/api/src/main/java/io/grpc/NameResolverRegistry.java b/api/src/main/java/io/grpc/NameResolverRegistry.java
index c5e9f7467ab..970d8db7a50 100644
--- a/api/src/main/java/io/grpc/NameResolverRegistry.java
+++ b/api/src/main/java/io/grpc/NameResolverRegistry.java
@@ -20,6 +20,7 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableMap;
+import com.google.errorprone.annotations.ThreadSafe;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import java.net.URI;
import java.util.ArrayList;
@@ -33,7 +34,6 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Registry of {@link NameResolverProvider}s. The {@link #getDefaultRegistry default instance}
diff --git a/api/src/main/java/io/grpc/Server.java b/api/src/main/java/io/grpc/Server.java
index 97ea06a81c2..7fb7c3ea7b2 100644
--- a/api/src/main/java/io/grpc/Server.java
+++ b/api/src/main/java/io/grpc/Server.java
@@ -16,12 +16,12 @@
package io.grpc;
+import com.google.errorprone.annotations.ThreadSafe;
import java.io.IOException;
import java.net.SocketAddress;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.TimeUnit;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Server for listening for and dispatching incoming calls. It is not expected to be implemented by
diff --git a/api/src/main/java/io/grpc/ServerCallHandler.java b/api/src/main/java/io/grpc/ServerCallHandler.java
index fdfa9997957..89740a4171b 100644
--- a/api/src/main/java/io/grpc/ServerCallHandler.java
+++ b/api/src/main/java/io/grpc/ServerCallHandler.java
@@ -16,7 +16,7 @@
package io.grpc;
-import javax.annotation.concurrent.ThreadSafe;
+import com.google.errorprone.annotations.ThreadSafe;
/**
* Interface to initiate processing of incoming remote calls. Advanced applications and generated
diff --git a/api/src/main/java/io/grpc/ServerInterceptor.java b/api/src/main/java/io/grpc/ServerInterceptor.java
index 9b2e76ef608..b8ca50a1787 100644
--- a/api/src/main/java/io/grpc/ServerInterceptor.java
+++ b/api/src/main/java/io/grpc/ServerInterceptor.java
@@ -16,7 +16,7 @@
package io.grpc;
-import javax.annotation.concurrent.ThreadSafe;
+import com.google.errorprone.annotations.ThreadSafe;
/**
* Interface for intercepting incoming calls before they are dispatched by
diff --git a/api/src/main/java/io/grpc/ServerRegistry.java b/api/src/main/java/io/grpc/ServerRegistry.java
index 1ec7030b82b..63249cd89d1 100644
--- a/api/src/main/java/io/grpc/ServerRegistry.java
+++ b/api/src/main/java/io/grpc/ServerRegistry.java
@@ -18,6 +18,7 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
+import com.google.errorprone.annotations.ThreadSafe;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import java.util.ArrayList;
import java.util.Collections;
@@ -27,7 +28,6 @@
import java.util.ServiceLoader;
import java.util.logging.Level;
import java.util.logging.Logger;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Registry of {@link ServerProvider}s. The {@link #getDefaultRegistry default instance} loads
diff --git a/api/src/main/java/io/grpc/ServerStreamTracer.java b/api/src/main/java/io/grpc/ServerStreamTracer.java
index d522610ab3a..e67cf526ff5 100644
--- a/api/src/main/java/io/grpc/ServerStreamTracer.java
+++ b/api/src/main/java/io/grpc/ServerStreamTracer.java
@@ -16,8 +16,8 @@
package io.grpc;
+import com.google.errorprone.annotations.ThreadSafe;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Listens to events on a stream to collect metrics.
diff --git a/api/src/main/java/io/grpc/StreamTracer.java b/api/src/main/java/io/grpc/StreamTracer.java
index 66b3de8be6b..34a36f7d365 100644
--- a/api/src/main/java/io/grpc/StreamTracer.java
+++ b/api/src/main/java/io/grpc/StreamTracer.java
@@ -16,7 +16,7 @@
package io.grpc;
-import javax.annotation.concurrent.ThreadSafe;
+import com.google.errorprone.annotations.ThreadSafe;
/**
* Listens to events on a stream to collect metrics.
diff --git a/api/src/main/java/io/grpc/SynchronizationContext.java b/api/src/main/java/io/grpc/SynchronizationContext.java
index 94916a1b473..9f6e141380b 100644
--- a/api/src/main/java/io/grpc/SynchronizationContext.java
+++ b/api/src/main/java/io/grpc/SynchronizationContext.java
@@ -20,6 +20,7 @@
import static com.google.common.base.Preconditions.checkState;
import static io.grpc.TimeUtils.convertToNanos;
+import com.google.errorprone.annotations.ThreadSafe;
import java.lang.Thread.UncaughtExceptionHandler;
import java.time.Duration;
import java.util.Queue;
@@ -29,7 +30,6 @@
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
-import javax.annotation.concurrent.ThreadSafe;
/**
* A synchronization context is a queue of tasks that run in sequence. It offers following
@@ -262,4 +262,4 @@ public boolean isPending() {
return !(runnable.hasStarted || runnable.isCancelled);
}
}
-}
\ No newline at end of file
+}
diff --git a/binder/src/main/java/io/grpc/binder/internal/BinderClientTransport.java b/binder/src/main/java/io/grpc/binder/internal/BinderClientTransport.java
index bef1eefd43e..07238115281 100644
--- a/binder/src/main/java/io/grpc/binder/internal/BinderClientTransport.java
+++ b/binder/src/main/java/io/grpc/binder/internal/BinderClientTransport.java
@@ -32,6 +32,7 @@
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.errorprone.annotations.CheckReturnValue;
+import com.google.errorprone.annotations.ThreadSafe;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import io.grpc.Attributes;
import io.grpc.CallOptions;
@@ -62,7 +63,6 @@
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.atomic.AtomicInteger;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/** Concrete client-side transport implementation. */
@ThreadSafe
diff --git a/binder/src/main/java/io/grpc/binder/internal/BinderServer.java b/binder/src/main/java/io/grpc/binder/internal/BinderServer.java
index 96685a2f8bd..fd8612acb6e 100644
--- a/binder/src/main/java/io/grpc/binder/internal/BinderServer.java
+++ b/binder/src/main/java/io/grpc/binder/internal/BinderServer.java
@@ -25,6 +25,7 @@
import android.os.Parcel;
import android.os.RemoteException;
import com.google.common.collect.ImmutableList;
+import com.google.errorprone.annotations.ThreadSafe;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import io.grpc.Attributes;
import io.grpc.Grpc;
@@ -49,7 +50,6 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/**
* A gRPC InternalServer which accepts connections via a host AndroidService.
diff --git a/binder/src/main/java/io/grpc/binder/internal/BinderTransport.java b/binder/src/main/java/io/grpc/binder/internal/BinderTransport.java
index 1592f6977df..46d393e92a2 100644
--- a/binder/src/main/java/io/grpc/binder/internal/BinderTransport.java
+++ b/binder/src/main/java/io/grpc/binder/internal/BinderTransport.java
@@ -30,6 +30,7 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Verify;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.errorprone.annotations.ThreadSafe;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import io.grpc.Attributes;
import io.grpc.Grpc;
@@ -54,7 +55,6 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Base class for binder-based gRPC transport.
diff --git a/binder/src/main/java/io/grpc/binder/internal/ServiceBinding.java b/binder/src/main/java/io/grpc/binder/internal/ServiceBinding.java
index 4b6bf7d06fb..bd4ce757094 100644
--- a/binder/src/main/java/io/grpc/binder/internal/ServiceBinding.java
+++ b/binder/src/main/java/io/grpc/binder/internal/ServiceBinding.java
@@ -33,6 +33,7 @@
import androidx.annotation.AnyThread;
import androidx.annotation.MainThread;
import com.google.common.annotations.VisibleForTesting;
+import com.google.errorprone.annotations.ThreadSafe;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import io.grpc.Status;
import io.grpc.StatusException;
@@ -41,7 +42,6 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Manages an Android binding that's restricted to at most one connection to the remote Service.
diff --git a/core/src/main/java/io/grpc/internal/AtomicBackoff.java b/core/src/main/java/io/grpc/internal/AtomicBackoff.java
index 68ba9bece0c..8121676977d 100644
--- a/core/src/main/java/io/grpc/internal/AtomicBackoff.java
+++ b/core/src/main/java/io/grpc/internal/AtomicBackoff.java
@@ -17,10 +17,10 @@
package io.grpc.internal;
import com.google.common.base.Preconditions;
+import com.google.errorprone.annotations.ThreadSafe;
import java.util.concurrent.atomic.AtomicLong;
import java.util.logging.Level;
import java.util.logging.Logger;
-import javax.annotation.concurrent.ThreadSafe;
/**
* A {@code long} atomically updated due to errors caused by the value being too small.
diff --git a/core/src/main/java/io/grpc/internal/ClientTransport.java b/core/src/main/java/io/grpc/internal/ClientTransport.java
index fd0f30b8bf1..3466e940a74 100644
--- a/core/src/main/java/io/grpc/internal/ClientTransport.java
+++ b/core/src/main/java/io/grpc/internal/ClientTransport.java
@@ -16,6 +16,7 @@
package io.grpc.internal;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.CallOptions;
import io.grpc.ClientStreamTracer;
import io.grpc.InternalChannelz.SocketStats;
@@ -24,7 +25,6 @@
import io.grpc.MethodDescriptor;
import io.grpc.Status;
import java.util.concurrent.Executor;
-import javax.annotation.concurrent.ThreadSafe;
/**
* The client-side transport typically encapsulating a single connection to a remote
diff --git a/core/src/main/java/io/grpc/internal/ConnectionClientTransport.java b/core/src/main/java/io/grpc/internal/ConnectionClientTransport.java
index 8385316d608..f55eea69c02 100644
--- a/core/src/main/java/io/grpc/internal/ConnectionClientTransport.java
+++ b/core/src/main/java/io/grpc/internal/ConnectionClientTransport.java
@@ -16,8 +16,8 @@
package io.grpc.internal;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.Attributes;
-import javax.annotation.concurrent.ThreadSafe;
/**
* A {@link ManagedClientTransport} that is based on a connection.
diff --git a/core/src/main/java/io/grpc/internal/InternalServer.java b/core/src/main/java/io/grpc/internal/InternalServer.java
index a6079081233..6ca26f0c366 100644
--- a/core/src/main/java/io/grpc/internal/InternalServer.java
+++ b/core/src/main/java/io/grpc/internal/InternalServer.java
@@ -16,13 +16,13 @@
package io.grpc.internal;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.InternalChannelz.SocketStats;
import io.grpc.InternalInstrumented;
import java.io.IOException;
import java.net.SocketAddress;
import java.util.List;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/**
* An object that accepts new incoming connections on one or more listening socket addresses.
diff --git a/core/src/main/java/io/grpc/internal/InternalSubchannel.java b/core/src/main/java/io/grpc/internal/InternalSubchannel.java
index ce31921e316..23d82a4b9c3 100644
--- a/core/src/main/java/io/grpc/internal/InternalSubchannel.java
+++ b/core/src/main/java/io/grpc/internal/InternalSubchannel.java
@@ -30,6 +30,7 @@
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
import com.google.errorprone.annotations.ForOverride;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.Attributes;
import io.grpc.CallOptions;
import io.grpc.ChannelLogger;
@@ -62,7 +63,6 @@
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Transports for a single {@link SocketAddress}.
diff --git a/core/src/main/java/io/grpc/internal/KeepAliveManager.java b/core/src/main/java/io/grpc/internal/KeepAliveManager.java
index 535b3a82524..da2a402c89b 100644
--- a/core/src/main/java/io/grpc/internal/KeepAliveManager.java
+++ b/core/src/main/java/io/grpc/internal/KeepAliveManager.java
@@ -22,12 +22,12 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Stopwatch;
import com.google.common.util.concurrent.MoreExecutors;
+import com.google.errorprone.annotations.ThreadSafe;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import io.grpc.Status;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Manages keepalive pings.
@@ -308,4 +308,3 @@ public void onPingTimeout() {
}
}
}
-
diff --git a/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java b/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java
index e423220e3ad..03fa4b536e8 100644
--- a/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java
+++ b/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java
@@ -32,6 +32,7 @@
import com.google.common.base.Supplier;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
+import com.google.errorprone.annotations.ThreadSafe;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import io.grpc.Attributes;
import io.grpc.CallCredentials;
@@ -118,7 +119,6 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/** A communication channel for making outgoing RPCs. */
@ThreadSafe
@@ -695,7 +695,7 @@ public String getServiceAuthority() {
InternalConfigSelector getConfigSelector() {
return realChannel.configSelector.get();
}
-
+
@VisibleForTesting
boolean hasThrottle() {
return this.transportProvider.throttle != null;
diff --git a/core/src/main/java/io/grpc/internal/ManagedClientTransport.java b/core/src/main/java/io/grpc/internal/ManagedClientTransport.java
index 8350a005409..f65a4c7fc26 100644
--- a/core/src/main/java/io/grpc/internal/ManagedClientTransport.java
+++ b/core/src/main/java/io/grpc/internal/ManagedClientTransport.java
@@ -17,10 +17,10 @@
package io.grpc.internal;
import com.google.errorprone.annotations.CheckReturnValue;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.Attributes;
import io.grpc.Status;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/**
* A {@link ClientTransport} that has life-cycle management.
diff --git a/core/src/main/java/io/grpc/internal/ObjectPool.java b/core/src/main/java/io/grpc/internal/ObjectPool.java
index 13547bc274a..83f9a456fbc 100644
--- a/core/src/main/java/io/grpc/internal/ObjectPool.java
+++ b/core/src/main/java/io/grpc/internal/ObjectPool.java
@@ -16,7 +16,7 @@
package io.grpc.internal;
-import javax.annotation.concurrent.ThreadSafe;
+import com.google.errorprone.annotations.ThreadSafe;
/**
* An object pool.
diff --git a/core/src/main/java/io/grpc/internal/SharedResourceHolder.java b/core/src/main/java/io/grpc/internal/SharedResourceHolder.java
index 1dfa1f90718..0ed36bb4355 100644
--- a/core/src/main/java/io/grpc/internal/SharedResourceHolder.java
+++ b/core/src/main/java/io/grpc/internal/SharedResourceHolder.java
@@ -17,12 +17,12 @@
package io.grpc.internal;
import com.google.common.base.Preconditions;
+import com.google.errorprone.annotations.ThreadSafe;
import java.util.IdentityHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
-import javax.annotation.concurrent.ThreadSafe;
/**
* A holder for shared resource singletons.
diff --git a/core/src/main/java/io/grpc/internal/StatsTraceContext.java b/core/src/main/java/io/grpc/internal/StatsTraceContext.java
index 650f0b979ae..f1c64789b14 100644
--- a/core/src/main/java/io/grpc/internal/StatsTraceContext.java
+++ b/core/src/main/java/io/grpc/internal/StatsTraceContext.java
@@ -19,6 +19,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.annotations.VisibleForTesting;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.Attributes;
import io.grpc.ClientStreamTracer;
import io.grpc.Context;
@@ -31,7 +32,6 @@
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
-import javax.annotation.concurrent.ThreadSafe;
/**
* The stats and tracing information for a stream.
diff --git a/core/src/main/java/io/grpc/internal/TransportProvider.java b/core/src/main/java/io/grpc/internal/TransportProvider.java
index 47230443e97..d117a671f68 100644
--- a/core/src/main/java/io/grpc/internal/TransportProvider.java
+++ b/core/src/main/java/io/grpc/internal/TransportProvider.java
@@ -16,8 +16,8 @@
package io.grpc.internal;
+import com.google.errorprone.annotations.ThreadSafe;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Provides transports for sending RPCs.
diff --git a/gcp-observability/src/main/java/io/grpc/gcp/observability/ObservabilityConfig.java b/gcp-observability/src/main/java/io/grpc/gcp/observability/ObservabilityConfig.java
index 0489c8b5e3b..ffc1dc53d8b 100644
--- a/gcp-observability/src/main/java/io/grpc/gcp/observability/ObservabilityConfig.java
+++ b/gcp-observability/src/main/java/io/grpc/gcp/observability/ObservabilityConfig.java
@@ -16,12 +16,12 @@
package io.grpc.gcp.observability;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.Internal;
import io.opencensus.trace.Sampler;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import javax.annotation.concurrent.ThreadSafe;
@Internal
public interface ObservabilityConfig {
diff --git a/grpclb/src/main/java/io/grpc/grpclb/GrpclbClientLoadRecorder.java b/grpclb/src/main/java/io/grpc/grpclb/GrpclbClientLoadRecorder.java
index fe928263ef9..ff55e108507 100644
--- a/grpclb/src/main/java/io/grpc/grpclb/GrpclbClientLoadRecorder.java
+++ b/grpclb/src/main/java/io/grpc/grpclb/GrpclbClientLoadRecorder.java
@@ -18,6 +18,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
+import com.google.errorprone.annotations.ThreadSafe;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import com.google.protobuf.util.Timestamps;
import io.grpc.ClientStreamTracer;
@@ -30,7 +31,6 @@
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Record and aggregate client-side load data for GRPCLB. This records load occurred during the
diff --git a/inprocess/src/main/java/io/grpc/inprocess/InProcessServer.java b/inprocess/src/main/java/io/grpc/inprocess/InProcessServer.java
index ffaca78f397..879524f66b2 100644
--- a/inprocess/src/main/java/io/grpc/inprocess/InProcessServer.java
+++ b/inprocess/src/main/java/io/grpc/inprocess/InProcessServer.java
@@ -19,6 +19,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.MoreObjects;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.InternalChannelz.SocketStats;
import io.grpc.InternalInstrumented;
import io.grpc.ServerStreamTracer;
@@ -33,7 +34,6 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ScheduledExecutorService;
-import javax.annotation.concurrent.ThreadSafe;
@ThreadSafe
final class InProcessServer implements InternalServer {
diff --git a/inprocess/src/main/java/io/grpc/inprocess/InProcessTransport.java b/inprocess/src/main/java/io/grpc/inprocess/InProcessTransport.java
index a92f10fd5c5..98b61bd44b1 100644
--- a/inprocess/src/main/java/io/grpc/inprocess/InProcessTransport.java
+++ b/inprocess/src/main/java/io/grpc/inprocess/InProcessTransport.java
@@ -24,6 +24,7 @@
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
import com.google.errorprone.annotations.CheckReturnValue;
+import com.google.errorprone.annotations.ThreadSafe;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import io.grpc.Attributes;
import io.grpc.CallOptions;
@@ -77,7 +78,6 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
@ThreadSafe
final class InProcessTransport implements ServerTransport, ConnectionClientTransport {
diff --git a/interop-testing/src/main/java/io/grpc/testing/integration/XdsTestClient.java b/interop-testing/src/main/java/io/grpc/testing/integration/XdsTestClient.java
index 89519041a79..42d081b125d 100644
--- a/interop-testing/src/main/java/io/grpc/testing/integration/XdsTestClient.java
+++ b/interop-testing/src/main/java/io/grpc/testing/integration/XdsTestClient.java
@@ -27,6 +27,7 @@
import com.google.common.util.concurrent.ListeningScheduledExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
+import com.google.errorprone.annotations.ThreadSafe;
import com.google.protobuf.ByteString;
import io.grpc.BindableService;
import io.grpc.CallOptions;
@@ -77,7 +78,6 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
import org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement;
/** Client for xDS interop tests. */
diff --git a/rls/src/main/java/io/grpc/rls/CachingRlsLbClient.java b/rls/src/main/java/io/grpc/rls/CachingRlsLbClient.java
index a2846fd04c8..420e1ea68b9 100644
--- a/rls/src/main/java/io/grpc/rls/CachingRlsLbClient.java
+++ b/rls/src/main/java/io/grpc/rls/CachingRlsLbClient.java
@@ -29,6 +29,7 @@
import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import com.google.errorprone.annotations.CheckReturnValue;
+import com.google.errorprone.annotations.ThreadSafe;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import io.grpc.ChannelLogger;
import io.grpc.ChannelLogger.ChannelLogLevel;
@@ -77,7 +78,6 @@
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/**
* A CachingRlsLbClient is a core implementation of RLS loadbalancer supports dynamic request
diff --git a/rls/src/main/java/io/grpc/rls/Throttler.java b/rls/src/main/java/io/grpc/rls/Throttler.java
index 96d17e70adf..1d10aae1ca4 100644
--- a/rls/src/main/java/io/grpc/rls/Throttler.java
+++ b/rls/src/main/java/io/grpc/rls/Throttler.java
@@ -16,7 +16,7 @@
package io.grpc.rls;
-import javax.annotation.concurrent.ThreadSafe;
+import com.google.errorprone.annotations.ThreadSafe;
/**
* A strategy for deciding when to throttle requests at the client.
diff --git a/s2a/BUILD.bazel b/s2a/BUILD.bazel
index 34387206ba5..4651f7fb7dd 100644
--- a/s2a/BUILD.bazel
+++ b/s2a/BUILD.bazel
@@ -11,7 +11,6 @@ java_library(
"//core",
"//core:internal",
"//netty",
- artifact("com.google.code.findbugs:jsr305"),
artifact("com.google.errorprone:error_prone_annotations"),
artifact("com.google.guava:guava"),
artifact("org.checkerframework:checker-qual"),
@@ -37,7 +36,7 @@ java_library(
]),
deps = [
":s2a_identity",
- artifact("com.google.code.findbugs:jsr305"),
+ artifact("com.google.errorprone:error_prone_annotations"),
artifact("com.google.guava:guava"),
],
)
diff --git a/s2a/src/main/java/io/grpc/s2a/internal/channel/S2AHandshakerServiceChannel.java b/s2a/src/main/java/io/grpc/s2a/internal/channel/S2AHandshakerServiceChannel.java
index 8453268efc0..bdebf4649e3 100644
--- a/s2a/src/main/java/io/grpc/s2a/internal/channel/S2AHandshakerServiceChannel.java
+++ b/s2a/src/main/java/io/grpc/s2a/internal/channel/S2AHandshakerServiceChannel.java
@@ -19,12 +19,12 @@
import static com.google.common.base.Preconditions.checkNotNull;
import static java.util.concurrent.TimeUnit.SECONDS;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.Channel;
import io.grpc.ChannelCredentials;
import io.grpc.ManagedChannel;
import io.grpc.internal.SharedResourceHolder.Resource;
import io.grpc.netty.NettyChannelBuilder;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Provides APIs for managing gRPC channels to an S2A server. Each channel is local and plaintext.
@@ -104,4 +104,4 @@ public String toString() {
}
private S2AHandshakerServiceChannel() {}
-}
\ No newline at end of file
+}
diff --git a/s2a/src/main/java/io/grpc/s2a/internal/handshaker/tokenmanager/AccessTokenManager.java b/s2a/src/main/java/io/grpc/s2a/internal/handshaker/tokenmanager/AccessTokenManager.java
index 65fca46bbb2..11405ed312e 100644
--- a/s2a/src/main/java/io/grpc/s2a/internal/handshaker/tokenmanager/AccessTokenManager.java
+++ b/s2a/src/main/java/io/grpc/s2a/internal/handshaker/tokenmanager/AccessTokenManager.java
@@ -16,9 +16,9 @@
package io.grpc.s2a.internal.handshaker.tokenmanager;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.s2a.internal.handshaker.S2AIdentity;
import java.util.Optional;
-import javax.annotation.concurrent.ThreadSafe;
/** Manages access tokens for authenticating to the S2A. */
@ThreadSafe
@@ -46,4 +46,4 @@ public String getDefaultToken() {
public String getToken(S2AIdentity identity) {
return tokenFetcher.getToken(identity);
}
-}
\ No newline at end of file
+}
diff --git a/services/BUILD.bazel b/services/BUILD.bazel
index ba9d334a5c9..16fbf3c2f94 100644
--- a/services/BUILD.bazel
+++ b/services/BUILD.bazel
@@ -29,7 +29,7 @@ java_library(
deps = [
":channelz",
"//api",
- artifact("com.google.code.findbugs:jsr305"),
+ artifact("com.google.errorprone:error_prone_annotations"),
],
)
@@ -44,7 +44,6 @@ java_library(
deps = [
"//api",
"//context",
- artifact("com.google.code.findbugs:jsr305"),
artifact("com.google.errorprone:error_prone_annotations"),
artifact("com.google.guava:guava"),
],
@@ -82,6 +81,7 @@ java_library(
"@com_google_protobuf//:protobuf_java_util",
"@io_grpc_grpc_proto//:binarylog_java_proto",
artifact("com.google.code.findbugs:jsr305"),
+ artifact("com.google.errorprone:error_prone_annotations"),
artifact("com.google.guava:guava"),
],
)
@@ -100,7 +100,6 @@ java_library(
"@com_google_protobuf//:protobuf_java",
"@com_google_protobuf//:protobuf_java_util",
"@io_grpc_grpc_proto//:channelz_java_proto",
- artifact("com.google.code.findbugs:jsr305"),
artifact("com.google.guava:guava"),
],
)
diff --git a/services/src/main/java/io/grpc/protobuf/services/BinlogHelper.java b/services/src/main/java/io/grpc/protobuf/services/BinlogHelper.java
index e810c983beb..823817cd587 100644
--- a/services/src/main/java/io/grpc/protobuf/services/BinlogHelper.java
+++ b/services/src/main/java/io/grpc/protobuf/services/BinlogHelper.java
@@ -24,6 +24,7 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
+import com.google.errorprone.annotations.ThreadSafe;
import com.google.protobuf.ByteString;
import com.google.protobuf.Duration;
import com.google.protobuf.util.Durations;
@@ -69,7 +70,6 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/**
* A binary log class that is configured for a specific {@link MethodDescriptor}.
diff --git a/services/src/main/java/io/grpc/services/AdminInterface.java b/services/src/main/java/io/grpc/services/AdminInterface.java
index 2288d844fd1..d1ff08ab293 100644
--- a/services/src/main/java/io/grpc/services/AdminInterface.java
+++ b/services/src/main/java/io/grpc/services/AdminInterface.java
@@ -16,6 +16,7 @@
package io.grpc.services;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.BindableService;
import io.grpc.ExperimentalApi;
import io.grpc.ServerServiceDefinition;
@@ -27,7 +28,6 @@
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Admin Interface provides a class of services for exposing the overall state of gRPC
diff --git a/services/src/main/java/io/grpc/services/CallMetricRecorder.java b/services/src/main/java/io/grpc/services/CallMetricRecorder.java
index d480f0f4c3b..42a18625dad 100644
--- a/services/src/main/java/io/grpc/services/CallMetricRecorder.java
+++ b/services/src/main/java/io/grpc/services/CallMetricRecorder.java
@@ -18,13 +18,13 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.errorprone.annotations.InlineMe;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.Context;
import io.grpc.ExperimentalApi;
import java.util.Collections;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicReference;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Utility to record call metrics for load-balancing. One instance per call.
diff --git a/stub/src/main/java/io/grpc/stub/AbstractAsyncStub.java b/stub/src/main/java/io/grpc/stub/AbstractAsyncStub.java
index f369eeaf87f..70d61bbb8d2 100644
--- a/stub/src/main/java/io/grpc/stub/AbstractAsyncStub.java
+++ b/stub/src/main/java/io/grpc/stub/AbstractAsyncStub.java
@@ -17,10 +17,10 @@
package io.grpc.stub;
import com.google.errorprone.annotations.CheckReturnValue;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.CallOptions;
import io.grpc.Channel;
import io.grpc.stub.ClientCalls.StubType;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Stub implementations for async stubs.
diff --git a/stub/src/main/java/io/grpc/stub/AbstractBlockingStub.java b/stub/src/main/java/io/grpc/stub/AbstractBlockingStub.java
index 4bdb3c0bb94..1d09ff39ffc 100644
--- a/stub/src/main/java/io/grpc/stub/AbstractBlockingStub.java
+++ b/stub/src/main/java/io/grpc/stub/AbstractBlockingStub.java
@@ -17,10 +17,10 @@
package io.grpc.stub;
import com.google.errorprone.annotations.CheckReturnValue;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.CallOptions;
import io.grpc.Channel;
import io.grpc.stub.ClientCalls.StubType;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Stub implementations for blocking stubs.
diff --git a/stub/src/main/java/io/grpc/stub/AbstractFutureStub.java b/stub/src/main/java/io/grpc/stub/AbstractFutureStub.java
index 5e37b1e4915..a9d912032f1 100644
--- a/stub/src/main/java/io/grpc/stub/AbstractFutureStub.java
+++ b/stub/src/main/java/io/grpc/stub/AbstractFutureStub.java
@@ -17,10 +17,10 @@
package io.grpc.stub;
import com.google.errorprone.annotations.CheckReturnValue;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.CallOptions;
import io.grpc.Channel;
import io.grpc.stub.ClientCalls.StubType;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Stub implementations for future stubs.
diff --git a/stub/src/main/java/io/grpc/stub/AbstractStub.java b/stub/src/main/java/io/grpc/stub/AbstractStub.java
index 697107760db..7b548715ce2 100644
--- a/stub/src/main/java/io/grpc/stub/AbstractStub.java
+++ b/stub/src/main/java/io/grpc/stub/AbstractStub.java
@@ -20,6 +20,7 @@
import static io.grpc.InternalTimeUtils.convert;
import com.google.errorprone.annotations.CheckReturnValue;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.CallCredentials;
import io.grpc.CallOptions;
import io.grpc.Channel;
@@ -32,7 +33,6 @@
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
import org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement;
/**
diff --git a/util/src/main/java/io/grpc/util/MutableHandlerRegistry.java b/util/src/main/java/io/grpc/util/MutableHandlerRegistry.java
index 307142b642c..ef3cc606bfe 100644
--- a/util/src/main/java/io/grpc/util/MutableHandlerRegistry.java
+++ b/util/src/main/java/io/grpc/util/MutableHandlerRegistry.java
@@ -16,6 +16,7 @@
package io.grpc.util;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.BindableService;
import io.grpc.ExperimentalApi;
import io.grpc.HandlerRegistry;
@@ -28,7 +29,6 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Default implementation of {@link HandlerRegistry}.
diff --git a/xds/src/main/java/io/grpc/xds/SharedCallCounterMap.java b/xds/src/main/java/io/grpc/xds/SharedCallCounterMap.java
index 7aa55c27429..f6305c9b608 100644
--- a/xds/src/main/java/io/grpc/xds/SharedCallCounterMap.java
+++ b/xds/src/main/java/io/grpc/xds/SharedCallCounterMap.java
@@ -19,6 +19,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.annotations.VisibleForTesting;
+import com.google.errorprone.annotations.ThreadSafe;
import io.grpc.xds.XdsNameResolverProvider.CallCounterProvider;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
@@ -26,7 +27,6 @@
import java.util.Map;
import java.util.concurrent.atomic.AtomicLong;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/**
* The global map for holding circuit breaker atomic counters.
diff --git a/xds/src/main/java/io/grpc/xds/SharedXdsClientPoolProvider.java b/xds/src/main/java/io/grpc/xds/SharedXdsClientPoolProvider.java
index 45c379244af..fba4f209921 100644
--- a/xds/src/main/java/io/grpc/xds/SharedXdsClientPoolProvider.java
+++ b/xds/src/main/java/io/grpc/xds/SharedXdsClientPoolProvider.java
@@ -20,6 +20,7 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
+import com.google.errorprone.annotations.ThreadSafe;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import io.grpc.CallCredentials;
import io.grpc.MetricRecorder;
@@ -40,7 +41,6 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/**
* The global factory for creating a singleton {@link XdsClient} instance to be used by all gRPC
diff --git a/xds/src/main/java/io/grpc/xds/ThreadSafeRandom.java b/xds/src/main/java/io/grpc/xds/ThreadSafeRandom.java
index 533ccee2375..ae5eb595de9 100644
--- a/xds/src/main/java/io/grpc/xds/ThreadSafeRandom.java
+++ b/xds/src/main/java/io/grpc/xds/ThreadSafeRandom.java
@@ -16,8 +16,8 @@
package io.grpc.xds;
+import com.google.errorprone.annotations.ThreadSafe;
import java.util.concurrent.ThreadLocalRandom;
-import javax.annotation.concurrent.ThreadSafe;
@ThreadSafe // Except for impls/mocks in tests
interface ThreadSafeRandom {
diff --git a/xds/src/main/java/io/grpc/xds/XdsCredentialsRegistry.java b/xds/src/main/java/io/grpc/xds/XdsCredentialsRegistry.java
index 9dd77a400cd..d5283e5d32f 100644
--- a/xds/src/main/java/io/grpc/xds/XdsCredentialsRegistry.java
+++ b/xds/src/main/java/io/grpc/xds/XdsCredentialsRegistry.java
@@ -21,6 +21,7 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableMap;
+import com.google.errorprone.annotations.ThreadSafe;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import io.grpc.InternalServiceProviders;
import java.util.ArrayList;
@@ -33,7 +34,6 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
/**
* Registry of {@link XdsCredentialsProvider}s. The {@link #getDefaultRegistry default
@@ -133,7 +133,7 @@ public static synchronized XdsCredentialsRegistry getDefaultRegistry() {
/**
* Returns effective providers map from scheme to the highest priority
- * XdsCredsProvider of that scheme.
+ * XdsCredsProvider of that scheme.
*/
@VisibleForTesting
synchronized Map