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
}
}
+ typedef percentage {
+ type uint8 {
+ range "0..100";
+ }
+ }
+
grouping data-store-properties {
leaf max-shard-data-change-executor-queue-size {
default 1000;
leaf shard-snapshot-batch-count {
default 20000;
type non-zero-uint32-type;
- description "The minimum number of entries to be present in the in-memory journal log before a snapshot to be taken.";
+ description "The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.";
}
- leaf shard-hearbeat-interval-in-millis {
+ leaf shard-snapshot-data-threshold-percentage {
+ default 12;
+ type percentage;
+ description "The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken";
+ }
+
+
+ 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;
}
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.";
}
}
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;
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;
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.
}
}
+ 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;
}
}
}
+ 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;
}