Enable Split-Brain Resolver
[controller.git] / opendaylight / md-sal / sal-clustering-config / src / main / resources / initial / factory-akka.conf
index 34b309b0b162d77f905bfede823f34f05711cd47..8f9b5041eeb5c4f58368e2de58545f44064db2d0 100644 (file)
@@ -56,6 +56,11 @@ odl-cluster-data {
     loggers = ["akka.event.slf4j.Slf4jLogger"]
     logger-startup-timeout = 300s
 
+    # JFR requires boot delegation, which we do not have by default
+    java-flight-recorder {
+      enabled = false
+    }
+
     actor {
       warn-about-java-serializer-usage = off
       provider = "akka.cluster.ClusterActorRefProvider"
@@ -86,17 +91,23 @@ odl-cluster-data {
     }
     remote {
       log-remote-lifecycle-events = off
+      # Disable passive connections, as we are seeing issues
+      # with read-only associations
+      use-passive-connections = off
 
-      netty.tcp {
+      classic.netty.tcp {
         maximum-frame-size = 419430400
         send-buffer-size = 52428800
         receive-buffer-size = 52428800
       }
 
       artery {
+        enabled = on
+        transport = tcp
+
         advanced {
-          #maximum-frame-size = 256 KiB
-          #maximum-large-frame-size = 2 MiB
+          maximum-frame-size = 512 KiB
+          maximum-large-frame-size = 2 MiB
         }
       }
     }
@@ -110,24 +121,40 @@ odl-cluster-data {
       # This is crucial for correct behavior if you use Cluster Singleton or Cluster Sharding,
       # especially together with Akka Persistence.
 
-      #auto-down-unreachable-after = 30s
-
       allow-weakly-up-members = on
 
       use-dispatcher = cluster-dispatcher
 
       failure-detector.acceptable-heartbeat-pause = 3 s
+
+      distributed-data {
+        # How often the Replicator should send out gossip information.
+        # This value controls how quickly Entity Ownership Service data is replicated
+        # across cluster nodes.
+        gossip-interval = 100 ms
+
+        # How often the subscribers will be notified of changes, if any.
+        # This value controls how quickly Entity Ownership Service decisions are
+        # propagated within a node.
+        notify-subscribers-interval = 20 ms
+      }
+
+      downing-provider-class = "akka.cluster.sbr.SplitBrainResolverProvider"
+
+      split-brain-resolver {
+        active-strategy = keep-majority
+        stable-after = 7s
+      }
     }
 
     persistence {
       journal {
-        plugin = akka.persistence.journal.leveldb
-
-        # The following activates the alternative segmented file journal. Each persistent actor
+        # The following activates the default segmented file journal. Each persistent actor
         # is stored in a separate directory, with multiple segment files. Segments are removed
-        # when they are not longer required.
+        # when they are no longer required.
         #
-        # plugin = akka.persistence.journal.segmented-file
+        plugin = akka.persistence.journal.segmented-file
+
         segmented-file {
           class = "org.opendaylight.controller.akka.segjournal.SegmentedFileJournal"
           # Root directory for segmented journal storage
@@ -136,6 +163,24 @@ odl-cluster-data {
           max-entry-size = 16M
           # Maximum size of a segment
           max-segment-size = 128M
+          # Map each segment into memory. Defaults to true, use false to keep a heap-based
+          # buffer instead.
+          memory-mapped = true
+        }
+      }
+
+      # Journal configuration for shards that have persistence turned off. They still need to have a journal plugin
+      # configured, since they still need to store things in the journal occasionally, but having larger segment sizes
+      # would be wastefull.
+      non-persistent {
+        journal {
+          class = "org.opendaylight.controller.akka.segjournal.SegmentedFileJournal"
+          # Root directory for segmented journal storage
+          root-directory = "segmented-journal"
+          # Maximum size of a single entry in the segmented journal
+          max-entry-size = 512K
+          # Maximum size of a segment
+          max-segment-size = 1M
           # Map each segment into memory. Note that while this can improve performance,
           # it will also place additional burden on system resources.
           memory-mapped = false