X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatabroker%2Factors%2Fdds%2FDistributedDataStoreClientBehavior.java;h=bc393a4c0f9cdffe61e0a49525edebcef92a24e1;hb=cd801d3b254bf709903b1fd31379967ab8ac1f36;hp=9940ae57f32858f042084440341d56a660dcb89b;hpb=cc1ec4a8e2ec99ad7711d0e5e649b34d37d87da0;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/DistributedDataStoreClientBehavior.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/DistributedDataStoreClientBehavior.java index 9940ae57f3..bc393a4c0f 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/DistributedDataStoreClientBehavior.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/DistributedDataStoreClientBehavior.java @@ -7,167 +7,31 @@ */ package org.opendaylight.controller.cluster.databroker.actors.dds; -import akka.actor.ActorRef; -import akka.actor.Status; -import com.google.common.base.Throwables; -import com.google.common.base.Verify; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.atomic.AtomicLong; -import java.util.function.Consumer; -import org.opendaylight.controller.cluster.access.client.ClientActorBehavior; +import java.util.function.Function; import org.opendaylight.controller.cluster.access.client.ClientActorContext; -import org.opendaylight.controller.cluster.access.commands.TransactionRequest; -import org.opendaylight.controller.cluster.access.concepts.LocalHistoryIdentifier; -import org.opendaylight.controller.cluster.access.concepts.Response; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; /** - * {@link ClientActorBehavior} acting as an intermediary between the backend actors and the DistributedDataStore - * frontend. - * - *
- * This class is not visible outside of this package because it breaks the actor containment. Services provided to - * Java world outside of actor containment are captured in {@link DistributedDataStoreClient}. - * - *
- * IMPORTANT: this class breaks actor containment via methods implementing {@link DistributedDataStoreClient} contract. - * When touching internal state, be mindful of the execution context from which execution context, Actor - * or POJO, is the state being accessed or modified. - * - *
- * THREAD SAFETY: this class must always be kept thread-safe, so that both the Actor System thread and the application - * threads can run concurrently. All state transitions must be made in a thread-safe manner. When in - * doubt, feel free to synchronize on this object. - * - *
- * PERFORMANCE: this class lies in a performance-critical fast path. All code needs to be concise and efficient, but - * performance must not come at the price of correctness. Any optimizations need to be carefully analyzed - * for correctness and performance impact. - * - *
- * TRADE-OFFS: part of the functionality runs in application threads without switching contexts, which makes it ideal
- * for performing work and charging applications for it. That has two positive effects:
- * - CPU usage is distributed across applications, minimizing work done in the actor thread
- * - CPU usage provides back-pressure towards the application.
+ * {@link AbstractDataStoreClientBehavior} which performs module-based sharding.
*
* @author Robert Varga
*/
-final class DistributedDataStoreClientBehavior extends ClientActorBehavior implements DistributedDataStoreClient {
- private static final Logger LOG = LoggerFactory.getLogger(DistributedDataStoreClientBehavior.class);
-
- private final Map