Use configured maximum memory to determine limits
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / yang / distributed-datastore-provider.yang
index b775cf0a9914be9ed37f8595bbafeb662e57321e..285de0ee0186f0003bd5aa64c64aa946507ca4c1 100644 (file)
@@ -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
@@ -100,7 +101,7 @@ module distributed-datastore-provider {
          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";
+            description "The percentage of Runtime.maxMemory() used by the in-memory journal log before a snapshot is to be taken";
          }
 
 
@@ -111,7 +112,7 @@ module distributed-datastore-provider {
          }
 
          leaf shard-election-timeout-factor {
-            default 2;
+            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";
@@ -124,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.";
          }
@@ -136,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;
@@ -157,7 +168,7 @@ module distributed-datastore-provider {
          }
 
          leaf shard-batched-modification-count {
-            default 100;
+            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
@@ -183,20 +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 {
+         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.
@@ -212,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;
                 }
@@ -231,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;
                 }