X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fyang%2Fdistributed-datastore-provider.yang;h=8174c7786336417b9ae9a0c765721fb2fc655464;hp=367d4f45e235209dd3a07b51107dec6198d1c157;hb=dceb9db7853dabfbd4abdfb3d886a79871097831;hpb=47ad11bd477096d9ffcf568e071ba68baabdbe6e diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/yang/distributed-datastore-provider.yang b/opendaylight/md-sal/sal-distributed-datastore/src/main/yang/distributed-datastore-provider.yang index 367d4f45e2..8174c77863 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/yang/distributed-datastore-provider.yang +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/yang/distributed-datastore-provider.yang @@ -10,6 +10,7 @@ module distributed-datastore-provider { import opendaylight-config-dom-datastore {prefix config-dom-store-spi;} import opendaylight-operational-dom-datastore {prefix operational-dom-store-spi;} import opendaylight-md-sal-dom {prefix sal;} + import actor-system-provider-service {prefix actor-system;} description "This module contains the base YANG definitions for @@ -104,12 +105,19 @@ module distributed-datastore-provider { } - leaf shard-hearbeat-interval-in-millis { + leaf shard-heartbeat-interval-in-millis { default 500; type heartbeat-interval-type; description "The interval at which a shard will send a heart beat message to its remote shard."; } + leaf shard-election-timeout-factor { + default 20; + type non-zero-uint32-type; + description "The multiplication factor to be used to determine shard election timeout. The shard election timeout + is determined by multiplying shard-heartbeat-interval-in-millis with the shard-election-timeout-factor"; + } + leaf operation-timeout-in-seconds { default 5; type operation-timeout-type; @@ -117,7 +125,7 @@ module distributed-datastore-provider { } leaf shard-journal-recovery-log-batch-size { - default 5000; + default 1; type non-zero-uint32-type; description "The maximum number of journal log entries to batch on recovery for a shard before committing to the data store."; } @@ -129,11 +137,21 @@ module distributed-datastore-provider { } leaf shard-transaction-commit-queue-capacity { - default 20000; + default 50000; type non-zero-uint32-type; description "The maximum allowed capacity for each shard's transaction commit queue."; } + leaf shard-commit-queue-expiry-timeout-in-seconds { + default 120; // 2 minutes + type non-zero-uint32-type; + description "The maximum amount of time a transaction can remain in a shard's commit queue waiting + to begin the CanCommit phase as coordinated by the broker front-end. Normally this should be + quick but latencies can occur in between transaction ready and CanCommit or a remote broker + could lose connection and CanCommit might never occur. Expiring transactions from the queue + allows subsequent pending transaction to be processed."; + } + leaf shard-initialization-timeout-in-seconds { default 300; // 5 minutes type non-zero-uint32-type; @@ -149,6 +167,15 @@ module distributed-datastore-provider { an operation (eg transaction create)."; } + leaf shard-batched-modification-count { + default 1000; + type non-zero-uint32-type; + description "The number of transaction modification operations (put, merge, delete) to + batch before sending to the shard transaction actor. Batching improves + performance as less modifications messages are sent to the actor and thus + lessens the chance that the transaction actor's mailbox queue could get full."; + } + leaf enable-metric-capture { default false; type boolean; @@ -167,12 +194,45 @@ module distributed-datastore-provider { description "Enable or disable data persistence"; } - leaf shard-isolated-leader-check-interval-in-millis { + leaf shard-isolated-leader-check-interval-in-millis { default 5000; type heartbeat-interval-type; description "The interval at which the leader of the shard will check if its majority followers are active and term itself as isolated"; - } + } + + leaf transaction-creation-initial-rate-limit { + default 100; + type non-zero-uint32-type; + description "The initial number of transactions per second that are allowed before the data store + should begin applying back pressure. This number is only used as an initial guidance, + subsequently the datastore measures the latency for a commit and auto-adjusts the rate limit"; + } + + leaf transaction-debug-context-enabled { + default false; + type boolean; + description "Enable or disable transaction context debug. This will log the call site trace for + transactions that fail"; + } + + leaf custom-raft-policy-implementation { + default ""; + type string; + description "A fully qualified java class name. The class should implement + org.opendaylight.controller.cluster.raft.policy.RaftPolicy. This java class should be + accessible to the distributed data store OSGi module so that it can be dynamically loaded via + reflection. For now let's assume that these classes to customize raft behaviors should be + present in the distributed data store module itself. If this property is set to a class which + cannot be found then the default raft behavior will be applied"; + } + + leaf shard-snapshot-chunk-size { + default 2048000; + type non-zero-uint32-type; + description "When sending a snapshot to a follower, this is the maximum size in bytes for + a chunk of data."; + } } // Augments the 'configuration' choice node under modules/module. @@ -188,6 +248,15 @@ module distributed-datastore-provider { } } + container config-actor-system-provider { + uses config:service-ref { + refine type { + mandatory false; + config:required-identity actor-system:actor-system-provider-service; + } + } + } + container config-properties { uses data-store-properties; } @@ -207,6 +276,15 @@ module distributed-datastore-provider { } } + container operational-actor-system-provider { + uses config:service-ref { + refine type { + mandatory false; + config:required-identity actor-system:actor-system-provider-service; + } + } + } + container operational-properties { uses data-store-properties; }