<configfile finalname="${config.configfile.directory}/${config.clustering.configfile}">mvn:org.opendaylight.controller/sal-clustering-config/${project.version}/xml/config</configfile>
<configfile finalname="${config.configfile.directory}/${config.clustered-entity-ownership.configfile}">mvn:org.opendaylight.controller/sal-clustering-config/${project.version}/xml/entityownershipconfig</configfile>
<configfile finalname="configuration/initial/akka.conf">mvn:org.opendaylight.controller/sal-clustering-config/${project.version}/xml/akkaconf</configfile>
+ <configfile finalname="configuration/factory/akka.conf" override="true">mvn:org.opendaylight.controller/sal-clustering-config/${project.version}/xml/factoryakkaconf</configfile>
<configfile finalname="configuration/initial/module-shards.conf">mvn:org.opendaylight.controller/sal-clustering-config/${project.version}/xml/moduleshardconf</configfile>
<configfile finalname="configuration/initial/modules.conf">mvn:org.opendaylight.controller/sal-clustering-config/${project.version}/xml/moduleconf</configfile>
<configfile finalname="etc/org.opendaylight.controller.cluster.datastore.cfg">mvn:org.opendaylight.controller/sal-clustering-config/${project.version}/cfg/datastore</configfile>
import java.io.File;
public class FileAkkaConfigurationReader implements AkkaConfigurationReader {
- private static final String DEFAULT_AKKA_CONF_PATH = "./configuration/initial/akka.conf";
+ private static final String CUSTOM_AKKA_CONF_PATH = "./configuration/initial/akka.conf";
+ private static final String FACTORY_AKKA_CONF_PATH = "./configuration/factory/akka.conf";
- @Override public Config read() {
- File configFile = new File(DEFAULT_AKKA_CONF_PATH);
- Preconditions.checkState(configFile.exists(), "%s is missing", configFile);
- return ConfigFactory.parseFile(configFile);
+ @Override
+ public Config read() {
+ File customConfigFile = new File(CUSTOM_AKKA_CONF_PATH);
+ Preconditions.checkState(customConfigFile.exists(), "%s is missing", customConfigFile);
+ File factoryConfigFile = new File(FACTORY_AKKA_CONF_PATH);
+ if(factoryConfigFile.exists()) {
+ return ConfigFactory.parseFile(customConfigFile).withFallback(ConfigFactory.parseFile(factoryConfigFile));
+ }
+
+ return ConfigFactory.parseFile(customConfigFile);
}
}
<type>xml</type>
<classifier>akkaconf</classifier>
</artifact>
+ <artifact>
+ <file>${project.build.directory}/classes/initial/factory-akka.conf</file>
+ <type>xml</type>
+ <classifier>factoryakkaconf</classifier>
+ </artifact>
<artifact>
<file>${project.build.directory}/classes/initial/module-shards.conf</file>
<type>xml</type>
odl-cluster-data {
- bounded-mailbox {
- mailbox-type = "org.opendaylight.controller.cluster.common.actor.MeteredBoundedMailbox"
- mailbox-capacity = 1000
- mailbox-push-timeout-time = 100ms
- }
-
- metric-capture-enabled = true
-
- notification-dispatcher {
- # Dispatcher is the name of the event-based dispatcher
- type = Dispatcher
- # What kind of ExecutionService to use
- executor = "fork-join-executor"
- # Configuration for the fork join pool
- fork-join-executor {
- # Min number of threads to cap factor-based parallelism number to
- parallelism-min = 2
- # Parallelism (threads) ... ceil(available processors * factor)
- parallelism-factor = 3.0
- # Max number of threads to cap factor-based parallelism number to
- parallelism-max = 15
- }
- # Throughput defines the maximum number of messages to be
- # processed per actor before the thread jumps to the next actor.
- # Set to 1 for as fair as possible.
- throughput = 1
- }
-
akka {
- loglevel = "INFO"
- loggers = ["akka.event.slf4j.Slf4jLogger"]
- logger-startup-timeout = 300s
-
- actor {
- provider = "akka.cluster.ClusterActorRefProvider"
- serializers {
- java = "akka.serialization.JavaSerializer"
- proto = "akka.remote.serialization.ProtobufSerializer"
- readylocal = "org.opendaylight.controller.cluster.datastore.messages.ReadyLocalTransactionSerializer"
- }
-
- serialization-bindings {
- "com.google.protobuf.Message" = proto
- "org.opendaylight.controller.cluster.datastore.messages.ReadyLocalTransaction" = readylocal
- }
-
- default-dispatcher {
- # Setting throughput to 1 makes the dispatcher fair. It processes 1 message from
- # the mailbox before moving on to the next mailbox
- throughput = 1
- }
-
- default-mailbox {
- # When not using a BalancingDispatcher it is recommended that we use the SingleConsumerOnlyUnboundedMailbox
- # as it is the most efficient for multiple producer/single consumer use cases
- mailbox-type="akka.dispatch.SingleConsumerOnlyUnboundedMailbox"
- }
- }
remote {
- log-remote-lifecycle-events = off
netty.tcp {
hostname = "127.0.0.1"
port = 2550
- maximum-frame-size = 419430400
- send-buffer-size = 52428800
- receive-buffer-size = 52428800
}
}
cluster {
seed-nodes = ["akka.tcp://opendaylight-cluster-data@127.0.0.1:2550"]
-
- seed-node-timeout = 12s
-
- auto-down-unreachable-after = 30s
roles = [
"member-1"
]
}
-
+
persistence {
# By default the snapshots/journal directories live in KARAF_HOME. You can choose to put it somewhere else by
# modifying the following two properties. The directory location specified may be a relative or absolute path.
--- /dev/null
+
+odl-cluster-data {
+ bounded-mailbox {
+ mailbox-type = "org.opendaylight.controller.cluster.common.actor.MeteredBoundedMailbox"
+ mailbox-capacity = 1000
+ mailbox-push-timeout-time = 100ms
+ }
+
+ metric-capture-enabled = true
+
+ notification-dispatcher {
+ # Dispatcher is the name of the event-based dispatcher
+ type = Dispatcher
+ # What kind of ExecutionService to use
+ executor = "fork-join-executor"
+ # Configuration for the fork join pool
+ fork-join-executor {
+ # Min number of threads to cap factor-based parallelism number to
+ parallelism-min = 2
+ # Parallelism (threads) ... ceil(available processors * factor)
+ parallelism-factor = 3.0
+ # Max number of threads to cap factor-based parallelism number to
+ parallelism-max = 15
+ }
+ # Throughput defines the maximum number of messages to be
+ # processed per actor before the thread jumps to the next actor.
+ # Set to 1 for as fair as possible.
+ throughput = 1
+ }
+
+ akka {
+ loglevel = "INFO"
+ loggers = ["akka.event.slf4j.Slf4jLogger"]
+ logger-startup-timeout = 300s
+
+ actor {
+ provider = "akka.cluster.ClusterActorRefProvider"
+ serializers {
+ java = "akka.serialization.JavaSerializer"
+ proto = "akka.remote.serialization.ProtobufSerializer"
+ readylocal = "org.opendaylight.controller.cluster.datastore.messages.ReadyLocalTransactionSerializer"
+ }
+
+ serialization-bindings {
+ "com.google.protobuf.Message" = proto
+ "org.opendaylight.controller.cluster.datastore.messages.ReadyLocalTransaction" = readylocal
+ }
+
+ default-dispatcher {
+ # Setting throughput to 1 makes the dispatcher fair. It processes 1 message from
+ # the mailbox before moving on to the next mailbox
+ throughput = 1
+ }
+
+ default-mailbox {
+ # When not using a BalancingDispatcher it is recommended that we use the SingleConsumerOnlyUnboundedMailbox
+ # as it is the most efficient for multiple producer/single consumer use cases
+ mailbox-type="akka.dispatch.SingleConsumerOnlyUnboundedMailbox"
+ }
+ }
+ remote {
+ log-remote-lifecycle-events = off
+ netty.tcp {
+ hostname = "127.0.0.1"
+ port = 2550
+ maximum-frame-size = 419430400
+ send-buffer-size = 52428800
+ receive-buffer-size = 52428800
+ }
+ }
+
+ cluster {
+ seed-nodes = ["akka.tcp://opendaylight-cluster-data@127.0.0.1:2550"]
+
+ seed-node-timeout = 12s
+
+ auto-down-unreachable-after = 30s
+
+ roles = [
+ "member-1"
+ ]
+
+ }
+ }
+}