import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Consumer;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import javax.annotation.concurrent.GuardedBy;
-import javax.annotation.concurrent.ThreadSafe;
+import org.checkerframework.checker.lock.qual.GuardedBy;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.controller.cluster.access.ABIVersion;
import org.opendaylight.controller.cluster.access.client.BackendInfoResolver;
import org.opendaylight.controller.cluster.access.commands.ConnectClientRequest;
* shard is assigned a single cookie and this mapping is stored in a bidirectional map. Information about corresponding
* shard leader is resolved via {@link ActorUtils}. The product of resolution is {@link ShardBackendInfo}.
*
+ * <p>
+ * This class is thread-safe.
+ *
* @author Robert Varga
*/
-@ThreadSafe
abstract class AbstractShardBackendResolver extends BackendInfoResolver<ShardBackendInfo> {
static final class ShardState {
private final CompletionStage<ShardBackendInfo> stage;
stage.whenComplete(this::onStageResolved);
}
- @Nonnull CompletionStage<ShardBackendInfo> getStage() {
+ @NonNull CompletionStage<ShardBackendInfo> getStage() {
return stage;
}
- @Nullable synchronized ShardBackendInfo getResult() {
+ synchronized @Nullable ShardBackendInfo getResult() {
return result;
}