namespace "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider";
prefix "distributed-datastore-provider";
- import config { prefix config; revision-date 2013-04-05; }
- import rpc-context { prefix rpcx; revision-date 2013-06-17; }
- 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
the distributed datastore provider implementation";
"Initial revision.";
}
- // This is the definition of the service implementation as a module identity.
- identity distributed-config-datastore-provider {
- base config:module-type;
- config:provided-service config-dom-store-spi:config-dom-datastore;
- // Specifies the prefix for generated java classes.
- config:java-name-prefix DistributedConfigDataStoreProvider;
- }
-
- // This is the definition of the service implementation as a module identity.
- identity distributed-operational-datastore-provider {
- base config:module-type;
- config:provided-service operational-dom-store-spi:operational-dom-datastore;
- // Specifies the prefix for generated java classes.
- config:java-name-prefix DistributedOperationalDataStoreProvider;
- }
-
typedef non-zero-uint32-type {
type uint32 {
range "1..max";
}
grouping data-store-properties {
- leaf max-shard-data-change-executor-queue-size {
- default 1000;
- type non-zero-uint32-type;
- description "The maximum queue size for each shard's data store data change notification executor.";
- }
-
- leaf max-shard-data-change-executor-pool-size {
- default 20;
- type non-zero-uint32-type;
- description "The maximum thread pool size for each shard's data store data change notification executor.";
- }
-
- leaf max-shard-data-change-listener-queue-size {
- default 1000;
- type non-zero-uint32-type;
- description "The maximum queue size for each shard's data store data change listener.";
- }
-
- leaf max-shard-data-store-executor-queue-size {
- default 5000;
- type non-zero-uint32-type;
- description "The maximum queue size for each shard's data store executor.";
- }
-
leaf shard-transaction-idle-timeout-in-minutes {
default 10;
type non-zero-uint32-type;
leaf shard-snapshot-data-threshold-percentage {
default 12;
type percentage;
- description "The percentage of Runtime.maxMemory() used by the in-memory journal log before a snapshot is to be taken";
+ description "The percentage of Runtime.maxMemory() used by the in-memory journal log before a snapshot is to be taken.
+ Disabled, if direct threshold is enabled.";
+ }
+
+ leaf shard-snapshot-data-threshold {
+ default 0;
+ type uint32 {
+ range "0..max";
+ }
+ description "The threshold of in-memory journal size before a snapshot is to be taken. If set to 0, direct threshold
+ is disabled and percentage is used instead.";
}
an operation (eg transaction create).";
}
+ leaf initial-settle-timeout-multiplier {
+ default 3;
+ type uint32;
+ description "Multiplier for the maximum amount of time to wait for a shard to elect a leader.
+ Zero value means wait indefinitely (as long as it takes).";
+ }
+
+ leaf recovery-snapshot-interval-seconds {
+ default 0;
+ type uint32;
+ description "Interval after which a snapshot should be taken during the recovery process.";
+ }
+
leaf shard-batched-modification-count {
default 1000;
type non-zero-uint32-type;
description "Enable or disable data persistence";
}
+ leaf snapshotOnRootOverwrite {
+ default false;
+ type boolean;
+ description "Enable or disable capturing snapshots on DataTree root overwrites";
+ }
+
leaf shard-isolated-leader-check-interval-in-millis {
default 5000;
type heartbeat-interval-type;
}
leaf shard-snapshot-chunk-size {
- default 2048000;
+ status deprecated;
+ default 491520;
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.";
}
+ leaf maximum-message-slice-size {
+ default 491520;
+ type non-zero-uint32-type;
+ description "When fragmenting messages thru the akka remoting framework, this is the
+ maximum size in bytes for a message slice.";
+ }
+
leaf use-tell-based-protocol {
+ status obsolete;
default false;
type boolean;
description "Use a newer protocol between the frontend and backend. This feature is considered
is the threshold in terms of number of megabytes before it should switch from storing in memory to
buffering to a file.";
}
- }
- // Augments the 'configuration' choice node under modules/module.
- augment "/config:modules/config:module/config:configuration" {
- case distributed-config-datastore-provider {
- when "/config:modules/config:module/config:type = 'distributed-config-datastore-provider'";
- container config-schema-service {
- uses config:service-ref {
- refine type {
- mandatory false;
- config:required-identity sal:schema-service;
- }
- }
- }
-
- 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;
- }
+ leaf sync-index-threshold {
+ default 10;
+ type non-zero-uint32-type;
+ description "Permitted synchronization lag, expressed in terms of RAFT entry count. It a follower's
+ commitIndex trails the leader's journal by more than this amount of entries the follower
+ is considered to be out-of-sync.";
+ }
+
+ leaf backend-aliveness-timer-interval-in-seconds {
+ default 30;
+ type non-zero-uint32-type;
+ description "The timer interval whereby, on expiration after response inactivity from the back-end,
+ the connection to the back-end is torn down and reconnection is attempted.";
+ }
+
+ leaf frontend-request-timeout-in-seconds {
+ default 120; // 2 minutes
+ type non-zero-uint32-type;
+ description "The timeout interval whereby client frontend transaction requests are failed.";
}
- }
- // Augments the 'configuration' choice node under modules/module.
- augment "/config:modules/config:module/config:configuration" {
- case distributed-operational-datastore-provider {
- when "/config:modules/config:module/config:type = 'distributed-operational-datastore-provider'";
- container operational-schema-service {
- uses config:service-ref {
- refine type {
- mandatory false;
- config:required-identity sal:schema-service;
- }
- }
- }
-
- 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;
- }
+ leaf frontend-no-progress-timeout-in-seconds {
+ default 900; // 15 minutes
+ type non-zero-uint32-type;
+ description "The timeout interval whereby the client front-end hasn't made progress with the
+ back-end on any request and terminates.";
+ }
+
+ leaf initial-payload-serialized-buffer-capacity {
+ default 512;
+ type non-zero-uint32-type;
+ description "The initial buffer capacity, in bytes, to use when serializing message payloads.";
+ }
+
+ leaf use-lz4-compression {
+ default false;
+ type boolean;
+ description "Use lz4 compression for snapshots, sent from leader to follower, for snapshots stored
+ by LocalSnapshotStore, use akka.conf configuration.";
}
+
+ leaf export-on-recovery {
+ default off;
+ type enumeration {
+ enum off;
+ enum json;
+ }
+ description "Export snapshot and journal during recovery. Possible modes: off(default),
+ json(export to json files). Note that in case of large snapshot,
+ export will take a lot of time.";
+ }
+
+ leaf recovery-export-base-dir {
+ default persistence-export;
+ type string;
+ description "Directory name for snapshot and journal dumps.";
+ }
+ }
+
+ container data-store-properties-container {
+ uses data-store-properties;
}
}