Introduce DOMEntityOwnershipService replacement
[controller.git] / akka / repackaged-akka-jar / src / main / resources / distributed_data_reference.conf
diff --git a/akka/repackaged-akka-jar/src/main/resources/distributed_data_reference.conf b/akka/repackaged-akka-jar/src/main/resources/distributed_data_reference.conf
new file mode 100644 (file)
index 0000000..f716157
--- /dev/null
@@ -0,0 +1,159 @@
+##############################################
+# Akka Distributed DataReference Config File #
+##############################################
+
+# This is the reference config file that contains all the default settings.
+# Make your edits/overrides in your application.conf.
+
+
+#//#distributed-data
+# Settings for the DistributedData extension
+akka.cluster.distributed-data {
+  # Actor name of the Replicator actor, /system/ddataReplicator
+  name = ddataReplicator
+
+  # Replicas are running on members tagged with this role.
+  # All members are used if undefined or empty.
+  role = ""
+
+  # How often the Replicator should send out gossip information
+  gossip-interval = 2 s
+  
+  # How often the subscribers will be notified of changes, if any
+  notify-subscribers-interval = 500 ms
+
+  # Logging of data with payload size in bytes larger than
+  # this value. Maximum detected size per key is logged once,
+  # with an increase threshold of 10%.
+  # It can be disabled by setting the property to off.
+  log-data-size-exceeding = 10 KiB
+
+  # Maximum number of entries to transfer in one round of gossip exchange when
+  # synchronizing the replicas. Next chunk will be transferred in next round of gossip.
+  # The actual number of data entries in each Gossip message is dynamically
+  # adjusted to not exceed the maximum remote message size (maximum-frame-size).
+  max-delta-elements = 500
+  
+  # The id of the dispatcher to use for Replicator actors.
+  # If specified you need to define the settings of the actual dispatcher.
+  use-dispatcher = "akka.actor.internal-dispatcher"
+
+  # How often the Replicator checks for pruning of data associated with
+  # removed cluster nodes. If this is set to 'off' the pruning feature will
+  # be completely disabled.
+  pruning-interval = 120 s
+  
+  # How long time it takes to spread the data to all other replica nodes.
+  # This is used when initiating and completing the pruning process of data associated
+  # with removed cluster nodes. The time measurement is stopped when any replica is 
+  # unreachable, but it's still recommended to configure this with certain margin.
+  # It should be in the magnitude of minutes even though typical dissemination time
+  # is shorter (grows logarithmic with number of nodes). There is no advantage of 
+  # setting this too low. Setting it to large value will delay the pruning process.
+  max-pruning-dissemination = 300 s
+  
+  # The markers of that pruning has been performed for a removed node are kept for this
+  # time and thereafter removed. If and old data entry that was never pruned is somehow
+  # injected and merged with existing data after this time the value will not be correct.
+  # This would be possible (although unlikely) in the case of a long network partition.
+  # It should be in the magnitude of hours. For durable data it is configured by 
+  # 'akka.cluster.distributed-data.durable.pruning-marker-time-to-live'.
+ pruning-marker-time-to-live = 6 h
+  
+  # Serialized Write and Read messages are cached when they are sent to 
+  # several nodes. If no further activity they are removed from the cache
+  # after this duration.
+  serializer-cache-time-to-live = 10s
+
+  # Update and Get operations are sent to oldest nodes first.
+  # This is useful together with Cluster Singleton, which is running on oldest nodes.
+  prefer-oldest = off
+  
+  # Settings for delta-CRDT
+  delta-crdt {
+    # enable or disable delta-CRDT replication
+    enabled = on
+    
+    # Some complex deltas grow in size for each update and above this
+    # threshold such deltas are discarded and sent as full state instead.
+    # This is number of elements or similar size hint, not size in bytes.
+    max-delta-size = 50
+  }
+  
+  durable {
+    # List of keys that are durable. Prefix matching is supported by using * at the
+    # end of a key.  
+    keys = []
+    
+    # The markers of that pruning has been performed for a removed node are kept for this
+    # time and thereafter removed. If and old data entry that was never pruned is
+    # injected and merged with existing data after this time the value will not be correct.
+    # This would be possible if replica with durable data didn't participate in the pruning
+    # (e.g. it was shutdown) and later started after this time. A durable replica should not 
+    # be stopped for longer time than this duration and if it is joining again after this
+    # duration its data should first be manually removed (from the lmdb directory).
+    # It should be in the magnitude of days. Note that there is a corresponding setting
+    # for non-durable data: 'akka.cluster.distributed-data.pruning-marker-time-to-live'.
+    pruning-marker-time-to-live = 10 d
+    
+    # Fully qualified class name of the durable store actor. It must be a subclass
+    # of akka.actor.Actor and handle the protocol defined in 
+    # akka.cluster.ddata.DurableStore. The class must have a constructor with 
+    # com.typesafe.config.Config parameter.
+    store-actor-class = akka.cluster.ddata.LmdbDurableStore
+    
+    use-dispatcher = akka.cluster.distributed-data.durable.pinned-store
+    
+    pinned-store {
+      executor = thread-pool-executor
+      type = PinnedDispatcher
+    }
+    
+    # Config for the LmdbDurableStore
+    lmdb {
+      # Directory of LMDB file. There are two options:
+      # 1. A relative or absolute path to a directory that ends with 'ddata'
+      #    the full name of the directory will contain name of the ActorSystem
+      #    and its remote port.
+      # 2. Otherwise the path is used as is, as a relative or absolute path to
+      #    a directory.
+      #
+      # When running in production you may want to configure this to a specific
+      # path (alt 2), since the default directory contains the remote port of the
+      # actor system to make the name unique. If using a dynamically assigned 
+      # port (0) it will be different each time and the previously stored data 
+      # will not be loaded.
+      dir = "ddata"
+      
+      # Size in bytes of the memory mapped file.
+      map-size = 100 MiB
+      
+      # Accumulate changes before storing improves performance with the
+      # risk of losing the last writes if the JVM crashes.
+      # The interval is by default set to 'off' to write each update immediately.
+      # Enabling write behind by specifying a duration, e.g. 200ms, is especially 
+      # efficient when performing many writes to the same key, because it is only 
+      # the last value for each key that will be serialized and stored.  
+      # write-behind-interval = 200 ms
+      write-behind-interval = off
+    }
+  }
+  
+}
+#//#distributed-data
+
+# Protobuf serializer for cluster DistributedData messages
+akka.actor {
+  serializers {
+    akka-data-replication = "akka.cluster.ddata.protobuf.ReplicatorMessageSerializer"
+    akka-replicated-data = "akka.cluster.ddata.protobuf.ReplicatedDataSerializer"
+  }
+  serialization-bindings {
+    "akka.cluster.ddata.Replicator$ReplicatorMessage" = akka-data-replication
+    "akka.cluster.ddata.ReplicatedDataSerialization" = akka-replicated-data
+  }
+  serialization-identifiers {
+    "akka.cluster.ddata.protobuf.ReplicatedDataSerializer" = 11
+    "akka.cluster.ddata.protobuf.ReplicatorMessageSerializer" = 12
+  }
+}