(currently work-in-progress)

OdysseusNet allows the configuration of each OdysseusNode using a separate XML-based configuration file. This file is located in the ODYSSEUS_HOME folder and is called odysseusNet.conf. With the activation of OdysseusNet, the contents of the file are read once (if the file did not exist, it will be created with default values). Further changes to the file during execution are not applied (Odysseus has to be started again, then). The configuration of OdysseusNet is based on key-value-pairs,whereas each key has to be unique. Developers can add/reuse own configuration keys (and values) described in Configuration for developers.

The following text is an example of such a OdysseusNet configuration file:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>OdysseusNet Property File edit only if you know what you are doing</comment>
<entry key="net.networkoperatorgenerator">websocket</entry>
<entry key="net.node.default.username">System</entry>
<entry key="net.nodemanager.storetype">filestore</entry>
<entry key="net.nodemanager.filename">C:/Users/Marco/odysseus/store/nodes.store</entry>
<entry key="net.node.communicator">rest</entry>
<entry key="net.querydistribute.maxport">20000</entry>
<entry key="net.remoteUpdate">false</entry>
<entry key="net.discoverer.name">BroadcastOdysseusNodeDiscoverer,IPListOdysseusNodeDiscoverer</entry>
<entry key="net.source.lifetime">3600000</entry>
<entry key="net.querydistribute.minport">10000</entry>
<entry key="net.node.preserveid">false</entry>
<entry key="net.autostart">true</entry>
<entry key="net.querydistribute.randomport">false</entry>
<entry key="net.dd.local">true</entry>
<entry key="net.node.group">OdysseusGroup</entry>
<entry key="net.querydistribute.partition">querycloud</entry>
<entry key="net.querydistribute.allocation">querycount</entry>
<entry key="net.node.name">OdysseusNode_1554</entry>
<entry key="net.discoverer.interval">5000</entry>
<entry key="net.dd.checkinterval">30000</entry>
<entry key="net.logging.receive">false</entry>
<entry key="net.connect.selector.name">GroupSelectorComponent</entry>
</properties>

Each entry represents one key-value pair. By default, the following configuration settings are supported:

KeyDefault valueDescriptionSee
net.node.nameOdysseusNodeHuman-readable non-unique name of the OdysseusNode. If value is OdysseusNode, a randomly generated 4-digit number is added to the name (e.g., OdysseusNode_1234).

OdysseusNet

net.node.groupOdysseusGroupName of the group the node is participating in. The node connects only to other nodes with the same NodeGroup. Groups are only considered when net.connect.selector.name = GroupSelectorComponentOdysseusNet
net.node.preserveidfalseIf true, the generated nodeID is saved and restored after each start of OdysseusNet.
net.autostartfalseIf true, OdysseusNet is actived immediately when Odysseus starts.OdysseusNet
net.remoteUpdatefalseIf true, the node allows update/restart/reinstall-signals from remote nodes to be processed (do not set to true if using OdysseusStudio!). This setting is useful e.g., for RaspberryPi and remote updates.Update/Restart/Reinstall
net.logging.receivefalseIf true, the node receives and prints log messages from remote nodes.Logging
net.querydistribute.minport10000Sets the minimum port number which is allowed to be used in transmitting data stream between distributed query parts (useful for configuring firewalls).

Distributing Queries

Query distribution strategies

net.querydistribute.maxport20000Sets the maximum port number which is allowed to be used in transmitting data stream between distributed query parts (useful for configuring firewalls).

Distributing Queries

Query distribution strategies

net.querydistribute.randomportfalseIf true, a port is randomly selected between net.querydistribute.minport and net.querydistribute.maxport. If false, free ports are selected in sequence (beginning with net.querydistribute.minport).

Distributing Queries

Query distribution strategies

net.querydistribute.preprocess<empty>Comma-separated list of strategies of preprocessors, which are used during query distribution if the user had not specified one in the query.

Distributing Queries

Query distribution strategies

net.querydistribute.partitionquerycloudDefault strategy for partitioning queries during query distribution if the user had not specified one in the query.

Distributing Queries

Query distribution strategies

net.querydistribute.modification<empty>Comma-separated list of strategies of modifications, which are used during query distribution if the user had not specified one in the query.

Distributing Queries

Query distribution strategies

net.querydistribute.allocationquerycountDefault strategy for allocating query parts to nodes if the user had not specified one in the query.

Distributing Queries

Query distribution strategies

net.querydistribute.postprocessmergeComma-separated list of strategies of postprocessors, which are used during query distribution if the user had not specified one in the query.

Distributing Queries

Query distribution strategies

net.discoverer.interval5000Time interval in milliseconds in which the node discoverer checks for new OdysseusNodes in the network.Discovery of OdysseusNodes
net.discoverer.name
BroadcastOdysseusNodeDiscoverer
Name of the discoverer to be used to detect other nodes in the network.Discovery of OdysseusNodes
net.source.lifetime
3600000
Time in milliseconds in which a source definition is distributed across the network.Distributing data sources
net.dd.localtrueIf true, the node stores distributed data locally.Distribution of (static) data
net.dd.checkinterval30000Time interval in milliseconds in which the node checks for invalid distributed data (e.g., exceeded lifetimes).Distribution of (static) data
net.connect.selector.nameGroupSelectorComponentName of the selector which decides which connections the node has to establish.Connection to OdysseusNodes

If OdysseusNet reads a configuration setting and the value is somewhat invalid, it uses the default value.