+ 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-uint16-type {
+ type uint16 {
+ range "1..max";
+ }
+ }
+
+ typedef operation-timeout-type {
+ type uint16 {
+ range "5..max";
+ }
+ }
+
+ grouping data-store-properties {
+ leaf max-shard-data-change-executor-queue-size {
+ default 1000;
+ type non-zero-uint16-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-uint16-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-uint16-type;
+ description "The maximum queue size for each shard's data store data change listeners.";
+ }
+
+ leaf max-shard-data-store-executor-queue-size {
+ default 5000;
+ type non-zero-uint16-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-uint16-type;
+ description "The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.";
+ }
+
+ leaf operation-timeout-in-seconds {
+ default 5;
+ type operation-timeout-type;
+ description "The maximum amount of time for akka operations (remote or local) to complete before failing.";
+ }
+ }
+
+ // 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-properties {
+ uses data-store-properties;
+ }
+ }