*/
package org.opendaylight.controller.cluster.databroker.actors.dds;
-import com.google.common.base.Preconditions;
+import static com.google.common.base.Preconditions.checkArgument;
+import static java.util.Objects.requireNonNull;
+
import java.util.concurrent.CompletionStage;
-import javax.annotation.concurrent.ThreadSafe;
import org.opendaylight.controller.cluster.access.client.BackendInfoResolver;
import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier;
-import org.opendaylight.controller.cluster.datastore.utils.ActorContext;
+import org.opendaylight.controller.cluster.datastore.utils.ActorUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* {@link BackendInfoResolver} implementation for static shard configuration based on ShardManager. Unlike the full
* {@link ModuleShardBackendResolver}, this resolver is used in situations where the client corresponds exactly to one
- * backend shard, e.g. there is only one fixed cookie assigned and the operation path is not consulted at all.
+ * backend shard, e.g. there is only one fixed cookie assigned and the operation path is not consulted at all. This
+ * class is thread-safe.
*
* @author Robert Varga
*/
-@ThreadSafe
final class SimpleShardBackendResolver extends AbstractShardBackendResolver {
private static final Logger LOG = LoggerFactory.getLogger(SimpleShardBackendResolver.class);
private volatile ShardState state;
// FIXME: we really need just ActorContext.findPrimaryShardAsync()
- SimpleShardBackendResolver(final ClientIdentifier clientId, final ActorContext actorContext,
+ SimpleShardBackendResolver(final ClientIdentifier clientId, final ActorUtils actorUtils,
final String shardName) {
- super(clientId, actorContext);
- this.shardName = Preconditions.checkNotNull(shardName);
+ super(clientId, actorUtils);
+ this.shardName = requireNonNull(shardName);
}
private CompletionStage<ShardBackendInfo> getBackendInfo(final long cookie) {
- Preconditions.checkArgument(cookie == 0);
+ checkArgument(cookie == 0);
final ShardState existing = state;
if (existing != null) {
synchronized (this) {
LOG.debug("Invalidating backend information {}", staleInfo);
flushCache(shardName);
- LOG.trace("Invalidated cache %s", staleInfo);
+ LOG.trace("Invalidated cache {}", staleInfo);
state = null;
}
}
return getBackendInfo(cookie);
}
+
+ @Override
+ public String resolveCookieName(Long cookie) {
+ return shardName;
+ }
}