Concepts Guide

SRS Configuration File

For general information about TCP-based topic resolution, see TCP-Based Topic Resolution Details.

The SRS configuration file must start with this line:

<?xml version="1.0" encoding="UTF-8" ?>

After that, the '<um-srs>' element contains the rest of the configuration.

The SRS configuration does not support the XInclude feature.

Here is a sample short configuration:

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon>
<log type="file" frequency="hourly" size="10" max-history="10"
total-size-cap="10000" compression="zip">SRS.log</log>
<pid-file>SRS.pid</pid-file>
</daemon>
<srs>
<interface>10.12.34.56</interface>
<port>27000</port>
<state-lifetime>3600</state-lifetime>
</srs>
<daemon-monitor topic="/29west/statistics">
<publishing-interval>
<default>2000</default>
<config-opts>20000</config-opts>
<internal-config-opts>0</internal-config-opts>
</publishing-interval>
<lbm-attributes>
<option scope="context" name="operational_mode" value="embedded" />
<option scope="context" name="mim_incoming_address" value="0.0.0.0" />
<option scope="context" name="transport_tcp_port_low" value="14381" />
<option scope="context" name="transport_tcp_port_high" value="15381" />
<option scope="source" name="transport_tcp_interface" value="10.29.3.0/24" />
</lbm-attributes>
<monitor-format>pb</monitor-format>
</daemon-monitor>
</um-srs>

Attention
  It is important to configure the SRS with SRS Element "<interface>", even if the SRS is running on a single-homed host (one network connection).

When the daemon monitor is enabled, the first two lbm attribute option setting are recommended for conserving resources.

# SRS Configuration Elements <-

## SRS Element "<um-srs>" <-

Container element which holds the SRS configuration. Also defines the version of the configuration format used by the file.

- Children: <daemon>, <srs>, <debug-monitor>, <daemon-monitor>

XML Attributes:

Attribute | Description | Valid Values | Default Value
--- | --- | --- | ---
version | Version number of user's configuration file. | nonEmptyString | `"1.0"`

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
...
</um-srs>

## SRS Element "<daemon-monitor>" <-

Contains elements which configure the SRS monitoring capability. This feature is used to monitor the SRS's health and performance. It can also be useful to monitor activity in the entire Topic Resolution Domain.

Note that the "topic" attribute must be supplied, otherwise no statistics will be published. Also note that if using the protobuf format, other UM components default to the topic "/29west/statistics".

See child elements for details.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <um-srs>
- Children: <ping-interval>, <publishing-interval>, <lbm-attributes>, <publish-connection-events>, <remote-snapshot-request>, <remote-config-changes-request>, <monitor-format>

XML Attributes:

Attribute | Description | Valid Values | Default Value
--- | --- | --- | ---
topic | Set the name of the topic on which the SRS publishes its daemon stats. | nonEmptyString | (no default; must be specified)

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

## SRS Element "<monitor-format>" <-

Specifies the desired format of monitoring data. For use with the Monitoring Collector Service (MCS), use the format "pb" (proto buff).

Valid values are "pb" (recommended) or "json" (deprecated). See SRS Monitoring.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <daemon-monitor>
- Default Value: json

Example: (SRS publishes monitoring stats every 10 seconds)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
...
<monitor-format>pb</monitor-format>
...
</daemon-monitor>
...
</um-srs>

## SRS Element "<remote-config-changes-request>" <-

Controls whether the SRS daemon monitor accepts Request Type: SET_PUBLISHING_INTERVAL. This allows remote monitoring applications to change operational parameters of the SRS Daemon Monitoring feature.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <daemon-monitor>

XML Attributes:

Attribute | Description | Valid Values | Default Value
--- | --- | --- | ---
allow | Enable or disable this function. | `"true"` - Enabled `"false"` - Disabled | `"false"`

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
<remote-config-changes-request allow="true"/>
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

## SRS Element "<remote-snapshot-request>" <-

Controls whether the SRS daemon monitor accepts Request Type: REPORT_MONITOR_INFO. This allows remote monitoring applications to trigger immediate publishing of monitoring data.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <daemon-monitor>

XML Attributes:

Attribute | Description | Valid Values | Default Value
--- | --- | --- | ---
allow | Enable or disable this function. | `"true"` - Enabled `"false"` - Disabled | `"false"`

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
<remote-snapshot-request allow="true"/>
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

## SRS Element "<publish-connection-events>" <-

Controls whether the SRS reports connection-oriented events from UM contexts as part of the daemon stats. See SRS Daemon Statistics for more information.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <daemon-monitor>

XML Attributes:

Attribute | Description | Valid Values | Default Value
--- | --- | --- | ---
allow | Enable or disable this function. | `"true"` - Enabled `"false"` - Disabled | `"false"`

Example: (SRS includes connection-oriented events in monitoring stats)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
<publish-connection-events allow="true"/>
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

## SRS Element "<lbm-attributes>" <-

Container element containing any number of <option> elements. Each <option> element supplies an LBM configuration option to the UM context that the SRS creates to publish daemon stats. Any number of <option> elements can be supplied in the <lbm-attributes> container element.

See SRS Daemon Statistics for more information on daemon statistics.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <daemon-monitor>
- Children: <option>

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
<lbm-attributes>
...
</lbm-attributes>
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

## SRS Element "<option>" <-

Supplies an LBM configuration option to the UM context that the SRS creates to publish daemon stats. Any number of <option> elements can be supplied in the <lbm-attributes> container element.

See the UM Configuration Guide for the full list of LBM configuration options.

See SRS Daemon Statistics for more information on daemon statistics.

- Cardinality (number of times element can be supplied): 0 .. unbounded
- Parent: <lbm-attributes>

XML Attributes:

Attribute | Description | Valid Values | Default Value
--- | --- | --- | ---
scope | Scope for the LBM configuration option being set. One of: `"context"` `"source"` `"receiver"` (The normal LBM scopes `wildcard_receiver`, `event_queue`, and `hfx` are not applicable to the SRS monitor context.) | nonEmptyString | (no default; must be specified)
name | Name of LBM configuration option being set. | nonEmptyString | (no default; must be specified)
value | Value of LBM configuration option being set. | nonEmptyString | (no default; must be specified)

Example: (SRS publishes monitoring stats using LBT-RU transport)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
<lbm-attributes>
<option scope="context" name="operational_mode" value="embedded" />
<option scope="context" name="mim_incoming_address" value="0.0.0.0" />
<option scope="context" name="transport_tcp_port_low" value="14381" />
<option scope="context" name="transport_tcp_port_high" value="15381" />
<option scope="source" name="transport_tcp_interface" value="10.29.3.0/24" />
...
</lbm-attributes>
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

The first two option settings above are recommended for conserving resources.

## SRS Element "<publishing-interval>" <-

Set how often the SRS publishes its daemon stats. See SRS Daemon Statistics for more information. The child elements set the intervals for each class of monitoring data. For any class of data omitted, the <default> element sets the interval.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <daemon-monitor>
- Children: <default>, <srs-stats>, <um-client-stats>, <connection-events>, <srs-error-stats>, <um-client-error-stats>, <config-opts>, <internal-config-opts>

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
<publishing-interval>
...
</publishing-interval>
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

## SRS Element "<internal-config-opts>" <-

Sets how often (in milliseconds) the SRS publishes certain internal configuration data. These data are primarily of interest to Informatica Support. The value zero disables publishing that class of daemon stats.

Valid range: 0, 200 .. 7776000000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <publishing-interval>
- Default Value: 10

Example: (SRS publishes monitoring stats every 10 seconds)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
<publishing-interval>
<internal-config-opts>10000</internal-config-opts>
...
</publishing-interval>
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

## SRS Element "<config-opts>" <-

Sets how often (in milliseconds) the SRS publishes its configuration data. The special value zero disables publishing that class of daemon stats.

Valid range: 0, 200 .. 7776000000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <publishing-interval>
- Default Value: Value supplied by <default>.

Example: (SRS publishes monitoring stats every 10 seconds)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
<publishing-interval>
<config-opts>10000</config-opts>
...
</publishing-interval>
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

## SRS Element "<um-client-error-stats>" <-

Sets how often (in milliseconds) the SRS publishes statistics related to internal client-facing software errors. These statistics are primarily of interest to Informatica Support. The special value zero disables publishing that class of daemon stats.

Valid range: 0, 200 .. 7776000000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <publishing-interval>
- Default Value: Value supplied by <default>.

Example: (SRS publishes monitoring stats every 10 seconds)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
<publishing-interval>
<um-client-error-stats>10000</um-client-error-stats>
...
</publishing-interval>
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

## SRS Element "<srs-error-stats>" <-

Sets how often (in milliseconds) the SRS publishes statistics related to internal SRS software errors. These statistics are primarily of interest to Informatica Support. The value zero disables publishing that class of daemon stats.

Valid values: 0, 200 - 7776000000

Valid range: 0, 200 .. 7776000000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <publishing-interval>
- Default Value: Value supplied by <default>.

Example: (SRS publishes monitoring stats every 10 seconds)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
<publishing-interval>
<srs-error-stats>10000</srs-error-stats>
...
</publishing-interval>
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

## SRS Element "<connection-events>" <-

Sets how often (in milliseconds) the SRS publishes client connect and disconnect events. The value zero disables publishing that class of daemon stats.

Valid range: 0, 200 .. 7776000000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <publishing-interval>
- Default Value: Value supplied by <default>.

Example: (SRS publishes monitoring stats every 10 seconds)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
<publishing-interval>
<connection-events>10000</connection-events>
...
</publishing-interval>
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

## SRS Element "<um-client-stats>" <-

Sets how often (in milliseconds) the SRS publishes statistics related to Topic Resolution clients. The special value zero disables publishing that class of daemon stats.

Valid range: 0, 200 .. 7776000000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <publishing-interval>
- Default Value: Value supplied by <default>.

Example: (SRS publishes monitoring stats every 10 seconds)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
<publishing-interval>
<um-client-stats>10000</um-client-stats>
...
</publishing-interval>
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

## SRS Element "<srs-stats>" <-

Sets how often (in milliseconds) the SRS publishes internal SRS operational statistics. The special value zero disables publishing that class of daemon stats.

Valid range: 0, 200 .. 7776000000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <publishing-interval>
- Default Value: Value supplied by <default>.

Example: (SRS publishes monitoring stats every 10 seconds)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
<publishing-interval>
<srs-stats>10000</srs-stats>
...
</publishing-interval>
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

## SRS Element "<default>" <-

Sets how often (in milliseconds) the SRS publishes those classes of daemon stats which are not explicitly set by other elements. The special value zero disables publishing that class of daemon stats. See SRS Element "<publishing-interval>" for the classes.

Valid range: 0, 200 .. 7776000000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <publishing-interval>
- Default Value: 0

Example: (SRS publishes monitoring stats every 10 seconds)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
<publishing-interval>
<default>10000</default>
...
</publishing-interval>
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

## SRS Element "<ping-interval>" <-

Controls the period (in milliseconds) at which SRS internal statistics are sampled and made available. The special value zero disables this sampling.

The ping-interval control is available under the <daemon-monitor> element and the <debug-monitor> element. Unless otherwise directed by Informatica Support, only the <daemon-monitor> instance is of interest to users.

Note that there can only be one ping interval across both functions. A <daemon-monitor> setting for ping-interval will override a <debug-monitor> setting.

See SRS Monitoring.

Valid range: 100 .. 3600000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <debug-monitor>, <daemon-monitor>
- Default Value: 60000 (1 minute)

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon-monitor topic="/29west/statistics">
<ping-interval>10000</ping-interval>
...
<monitor-format>pb</monitor-format>
</daemon-monitor>
...
</um-srs>

## SRS Element "<debug-monitor>" <-

Contains elements which configure the optional web-based debug monitor for the SRS. The debug monitor is primarily for use by Informatica support, and is not intended for end users. Unless otherwise instructed by Informatica support, users should not enable the debug monitor.

Omit this element to disable the debug monitor.

See Webmon Security for important security information.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <um-srs>
- Children: <interface>, <port>, <ping-interval>, <enabled>

This is NOT related to monitoring the SRS health and performance. See <daemon-monitor>.

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<debug-monitor>
...
</debug-monitor>
...
</um-srs>

## SRS Element "<enabled>" <-

Controls whether the debug monitor is active. Can be set to `true` or `false`. See <debug-monitor>.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <debug-monitor>
- Default Value: false

Example: (disable debug-monitor explicitly)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<debug-monitor>
<enabled>false</enabled>
...
</debug-monitor>
...
</um-srs>

## SRS Element "<port>" <-

Supplies network port to bind the socket required by the parent element. This is the port that a UM context should use when TCP-based TR is configured with the option resolver_service (context). The value contained within the `<port>...</port>` is an integer.

Valid range: 0 .. 65535

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <debug-monitor>, <srs>
- Default Value: 27000

Example: (UM clients use port 12000 with resolver_service (context) option)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<srs>
<port>12000</port>
...
</srs>
...
</um-srs>

## SRS Element "<interface>" <-

Specifies the network interface to bind the socket required by the parent element.

Attention
  It is important to configure the SRS with SRS Element "<interface>", even if the SRS is running on a single-homed host (one network connection).

For the <srs> element, this is the IP address that a UM context should use when TCP-based TR is configured with the option resolver_service (context). The value contained within the `<interface>...</interface>` can be a fully-qualified dotted-decimal IP address or a DNS host name.

Warning
  Unlike UM library configurations, the SRS configuration does not support CIDR specification of an IP network to match an interface by network number. This interface specification must include the host number.

For the <debug-monitor> element, this is the host for the URL that a web browser should use to display the debug monitor page.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <debug-monitor>, <srs>
- Default Value: localhost

Example: (UM clients use 10.12.34.56 with resolver_service (context) option)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<srs>
<interface>10.12.34.56</interface>
...
</srs>
...
</um-srs>

## SRS Element "<srs>" <-

Defines network and operational settings of the SRS service.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <um-srs>
- Children: <interface>, <port>, <state-lifetime>, <source-state-lifetime>, <interest-state-lifetime>, <route-state-lifetime>, <context-name-state-lifetime>, <source-leave-backoff>, <otidmap>, <topicmap>, <routemap>, <namemap>, <clientactor>, <application-id>

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<srs>
...
</srs>
...
</um-srs>

## SRS Element "<application-id>" <-

Adds an "Application ID" for SRS monitoring statistics. Used with monitoring format "pb" (proto buff).

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <srs>
- Default Value: (none)

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<srs>
<application-id>SRS1</application-id>
...
</srs>
...
</um-srs>

## SRS Element "<clientactor>" <-

This is for Informatica internal use only. Do not set unless directed to do so by Informatica Support.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <srs>
- Children: <request-stream-max-msg-count>, <record-queue-service-interval>, <batch-frame-max-record-count>, <batch-frame-max-datagram-size>

## SRS Element "<batch-frame-max-datagram-size>" <-

This is for Informatica internal use only. Do not set unless directed to do so by Informatica Support.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <clientactor>

## SRS Element "<batch-frame-max-record-count>" <-

This is for Informatica internal use only. Do not set unless directed to do so by Informatica Support.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <clientactor>

## SRS Element "<record-queue-service-interval>" <-

This is for Informatica internal use only. Do not set unless directed to do so by Informatica Support.

Valid range: 1 .. 1000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <clientactor>

## SRS Element "<request-stream-max-msg-count>" <-

This is for Informatica internal use only. Do not set unless directed to do so by Informatica Support.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <clientactor>

## SRS Element "<namemap>" <-

This is for Informatica internal use only. Do not set unless directed to do so by Informatica Support.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <srs>
- Children: <shards>

## SRS Element "<shards>" <-

This is for Informatica internal use only. Do not set unless directed to do so by Informatica Support.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <otidmap>, <topicmap>, <routemap>, <namemap>

## SRS Element "<routemap>" <-

This is for Informatica internal use only. Do not set unless directed to do so by Informatica Support.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <srs>
- Children: <shards>

## SRS Element "<topicmap>" <-

This is for Informatica internal use only. Do not set unless directed to do so by Informatica Support.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <srs>
- Children: <shards>

## SRS Element "<otidmap>" <-

This is for Informatica internal use only. Do not set unless directed to do so by Informatica Support.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <srs>
- Children: <shards>

## SRS Element "<source-leave-backoff>" <-

Set how long an SRS delays before informing receivers about certain state changes in sources. There are conditions related to sources being deleted or timing out which can cause a receiver to "flap" - repeating cycling between connect (BOS) and disconnect (EOS). These conditions are usually related connectivity problems in the network. This element can eliminate, or at least slow down the flapping.

Valid range: 0 .. 60000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <srs>
- Default Value: 500 (half sec)

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<srs>
<source-leave-backoff>1000</source-leave-backoff>
...
</srs>
...
</um-srs>

## SRS Element "<context-name-state-lifetime>" <-

Sets the value (in seconds) of a Store's context name information lifetime.

If a Store loses connection with SRS, the Context Name Information Record (CNIR) will be remembered by the SRS for a limited amount of time: the context name state lifetime. After that time expires, the SRS deletes the CNIR associated with that lost endpoint connection.

Zero is a special value which disables the timing of context name information of disconnected Stores. With zero, the CNIR of a lost Store is never deleted. This is generally not recommended as it can lead to unlimited memory growth in both the SRS and client contexts.

Note that SRS Element "<state-lifetime>" has no effect on this option.

See SRS State Lifetime for more information.

Valid range: 0 .. 20736000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <srs>
- Default Value: 86400 (24 hours)

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<srs>
<context-name-state-lifetime>120</context-name-state-lifetime>
...
</srs>
...
</um-srs>

## SRS Element "<route-state-lifetime>" <-

Sets the value (in seconds) of a DRO's routing information lifetime.

If a DRO endpoint loses connection with SRS, the Domain Information Record (DIR) and the Route Information Record (RTIR) will be remembered by the SRS for a limited amount of time: the route state lifetime. After that time expires, the SRS deletes the DIR and RTIR associated with that lost endpoint connection.

Zero is a special value which disables the timing of routing information of disconnected DROs. With zero, the DIR and RTIR of a lost DRO are never deleted. This is generally not recommended as it can lead to unlimited memory growth in both the SRS and client contexts.

Note that SRS Element "<state-lifetime>" has no effect on this option.

See SRS State Lifetime for more information.

Valid range: 0 .. 20736000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <srs>
- Default Value: 30 (seconds)

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<srs>
<route-state-lifetime>120</route-state-lifetime>
...
</srs>
...
</um-srs>

## SRS Element "<interest-state-lifetime>" <-

Sets the value (in seconds) of the client interest state lifetime.

If a client context loses connection with SRS, the topic interest of that context will be remembered by the SRS for a limited amount of time: the interest state lifetime. If the context does not re-connect within that time, the SRS deletes all of the topic interest owned by that lost context.

Zero is a special value which disables the timing of interest of disconnected contexts. With zero, the interest of a lost context is never deleted. This is generally not recommended as it can lead to unlimited memory growth in both the SRS and client contexts.

If this element is not supplied, the interest state lifetime defaults to the current value for SRS Element "<state-lifetime>".

See SRS State Lifetime for more information.

Valid range: 0 .. 20736000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <srs>
- Default Value: Current value for SRS Element "<state-lifetime>"

Example: (SRS deletes a lost context's interest after 120 seconds)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<srs>
<interest-state-lifetime>120</interest-state-lifetime>
...
</srs>
...
</um-srs>

## SRS Element "<source-state-lifetime>" <-

Sets the value (in seconds) of the client source state lifetime.

If a client context loses connection with SRS, the sources contained by that context will be remembered by the SRS for a limited amount of time: the source state lifetime. If the context does not re-connect within that time, the SRS deletes all of the sources owned by that lost context. Those deletions will be shared with all connected client contexts.

Zero is a special value which disables the timing of sources of disconnected contexts. With zero, the sources from a lost context are never deleted. This is generally not recommended as it can lead to unlimited memory growth in both the SRS and client contexts.

If this element is not supplied, the source state lifetime defaults to the current value for SRS Element "<state-lifetime>"

See SRS State Lifetime for more information.

Valid range: 0 .. 20736000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <srs>
- Default Value: Current value for SRS Element "<state-lifetime>"

Example: (SRS deletes a lost context's sources after 120 seconds)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<srs>
<source-state-lifetime>120</source-state-lifetime>
...
</srs>
...
</um-srs>

## SRS Element "<state-lifetime>" <-

Sets the default (in seconds) of the client SRS Element "<source-state-lifetime>" and SRS Element "<interest-state-lifetime>". Note that it does not affect SRS Element "<route-state-lifetime>" or SRS Element "<context-name-state-lifetime>".

See SRS State Lifetime for more information.

Valid range: 0 .. 20736000

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <srs>
- Default Value: 86400 (24 hours)

Example: (SRS deletes a lost context's sources and interest after 120 seconds)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<srs>
<state-lifetime>120</state-lifetime>
...
</srs>
...
</um-srs>

## SRS Element "<daemon>" <-

Contains elements which define logging behavior and sets a file name for the service's Process ID.

See child elements for details.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <um-srs>
- Children: <log>, <pid-file>

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon>
...
</daemon>
...
</um-srs>

## SRS Element "<pid-file>" <-

Supplies the desired name of file in which the SRS writes its Process ID (PID).

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <daemon>

Example: (SRS writes process ID to "srs_pid.txt" file)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon>
<pid-file>srs_pid.txt</pid-file>
...
</daemon>
...
</um-srs>

## SRS Element "<log>" <-

Configures SRS logging behavior. The value contained within the `<log>...</log>` is a file name, but is only used if the "type" attribute is set to "file".

When the `type` attribute is set to `"file"`, the SRS supports "rolling" the log file, which consists a series of files over time so that no one file grows too large.

- Cardinality (number of times element can be supplied): 0 .. 1
- Parent: <daemon>

XML Attributes:

Attribute | Description | Valid Values | Default Value
--- | --- | --- | ---
type | Where to write log messages. | `"file"` - Write log messages to a file. `"console"` - Write log messages to standard output. | `"console"`
frequency | Time-frame by which to roll the log file. | `"disable"` - Do not roll the log file based on time. `"daily"` - Roll the log file at midnight. `"hourly"` - Roll the log file each hour. | `"disable"`
size | Size (in MB, that is 2**20, or 1,048,576 bytes) of current log file at which it is rolled. Specify 0 to disable rolling by log file size. | positiveInteger | `"10"` (10,485,760 bytes)
max-history | Number of rolled log files at which the oldest file is deleted when the current log file is rolled. | positiveInteger | `"10"`
total-size-cap | Total disk space consumed (in MB, that is 2**20, or 1,048,576 bytes) by rolled log files at which the oldest file is deleted to make room for the next log roll. | positiveInteger | `"1000"` (1,048,576,000 bytes)
compression | Enables compression for rolled log files. | `"none"` - Do not compress log files. `"zip"` - Compress log files using "zip" format. `"gzip"` - Compress log files using "gzip" format. | `"none"`

Example 1: (write log messages to standard out)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon>
<log type="console"/>
...
</daemon>
...
</um-srs>

Example 2: (write log messages to "srs.log" file)

<?xml version="1.0" encoding="UTF-8" ?>
<um-srs version="1.0">
<daemon>
<log type="file" frequency="daily">srs.log</log>
...
</daemon>
...
</um-srs>

# SRS XSD file <-

The XSD file is used to validate the user's configuration file.

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="um-srs" type="um-srsType"/>
<!-- Custom types and restrictions -->
<xs:simpleType name="nonEmptyString">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="logTypeEnumeration">
<xs:restriction base="xs:string">
<xs:enumeration value="file"/>
<xs:enumeration value="console"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="logFrequencyEnumeration">
<xs:restriction base="xs:string">
<xs:enumeration value="disable"/>
<xs:enumeration value="daily"/>
<xs:enumeration value="hourly"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="compressionEnumeration">
<xs:restriction base="xs:string">
<xs:enumeration value="none"/>
<xs:enumeration value="zip"/>
<xs:enumeration value="gzip"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="portInteger">
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="65535"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="booleanEnumeration">
<xs:restriction base="xs:string">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
<!-- Acceptable values for publishingIntervalLong type are 0 or >= 200 -->
<xs:simpleType name="publishingIntervalLong">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:long">
<xs:pattern value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:long">
<xs:minInclusive value="200"/>
<xs:maxInclusive value="7776000000"/> <!-- 90 days in milliseconds -->
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<!-- Acceptable values for stateLifetimeInteger type are 0, ..., 20736000 -->
<xs:simpleType name="stateLifetimeInteger">
<xs:restriction base="xs:nonNegativeInteger">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="20736000"/> <!-- 240 days in seconds -->
</xs:restriction>
</xs:simpleType>
<!-- Acceptable values for sourceLeaveBackoffInteger type are 0, ..., 60000 -->
<xs:simpleType name="sourceLeaveBackoffInteger">
<xs:restriction base="xs:nonNegativeInteger">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="60000"/> <!-- 1 minute in milliseconds -->
</xs:restriction>
</xs:simpleType>
<!-- Acceptable values for recordQueueServiceIntervalInteger type are 1, ..., 1000 -->
<xs:simpleType name="recordQueueServiceIntervalInteger">
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="1000"/> <!-- 1 second in milliseconds -->
</xs:restriction>
</xs:simpleType>
<!-- Acceptable values for pingIntervalInteger type are 100, ..., 3600000 -->
<xs:simpleType name="pingIntervalInteger">
<xs:restriction base="xs:nonNegativeInteger">
<xs:minInclusive value="100"/>
<xs:maxInclusive value="3600000"/> <!-- 1 hour in milliseconds -->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="monitorFormatEnumeration">
<xs:restriction base="xs:string">
<xs:enumeration value="json"/>
<xs:enumeration value="pb"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="logType" >
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="logTypeEnumeration" name="type" use="required"/>
<xs:attribute type="logFrequencyEnumeration" name="frequency"/>
<xs:attribute type="xs:positiveInteger" name="size"/>
<xs:attribute type="xs:positiveInteger" name="max-history"/>
<xs:attribute type="xs:positiveInteger" name="total-size-cap"/>
<xs:attribute type="compressionEnumeration" name="compression"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="otidmapType">
<xs:all>
<xs:element type="xs:positiveInteger" name="shards" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
<xs:complexType name="topicmapType">
<xs:all>
<xs:element type="xs:positiveInteger" name="shards" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
<xs:complexType name="routemapType">
<xs:all>
<xs:element type="xs:positiveInteger" name="shards" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
<xs:complexType name="namemapType">
<xs:all>
<xs:element type="xs:positiveInteger" name="shards" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
<xs:complexType name="clientActorType">
<xs:all>
<xs:element type="xs:positiveInteger" name="request-stream-max-msg-count" minOccurs="0" maxOccurs="1"/>
<xs:element type="recordQueueServiceIntervalInteger" name="record-queue-service-interval" minOccurs="0" maxOccurs="1"/>
<xs:element type="xs:positiveInteger" name="batch-frame-max-record-count" minOccurs="0" maxOccurs="1"/>
<xs:element type="xs:positiveInteger" name="batch-frame-max-datagram-size" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
<xs:complexType name="daemonType" >
<xs:all>
<xs:element type="logType" name="log" minOccurs="0" maxOccurs="1"/>
<xs:element type="nonEmptyString" name="pid-file" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
<xs:complexType name="debugMonitorType">
<xs:all>
<xs:element type="nonEmptyString" name="interface" minOccurs="0" maxOccurs="1"/>
<xs:element type="portInteger" name="port" minOccurs="0" maxOccurs="1"/>
<xs:element type="pingIntervalInteger" name="ping-interval" minOccurs="0" maxOccurs="1"/>
<xs:element type="booleanEnumeration" name="enabled" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
<xs:complexType name="lbmOptionType" >
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="nonEmptyString" name="scope" use="required"/>
<xs:attribute type="nonEmptyString" name="name" use="required"/>
<xs:attribute type="nonEmptyString" name="value" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="lbmAttributesType">
<xs:sequence>
<xs:element type="lbmOptionType" name="option" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="daemonMonitorType" mixed="true">
<xs:all>
<xs:element type="pingIntervalInteger" name="ping-interval" minOccurs="0" maxOccurs="1"/>
<xs:element type="publishingIntervalType" name="publishing-interval" minOccurs="0" maxOccurs="1"/>
<xs:element type="lbmAttributesType" name="lbm-attributes" minOccurs="0" maxOccurs="1"/>
<xs:element type="allowType" name="publish-connection-events" minOccurs="0" maxOccurs="1"/>
<xs:element type="allowType" name="remote-snapshot-request" minOccurs="0" maxOccurs="1"/>
<xs:element type="allowType" name="remote-config-changes-request" minOccurs="0" maxOccurs="1"/>
<xs:element type="monitorFormatEnumeration" name="monitor-format" minOccurs="0" maxOccurs="1"/>
</xs:all>
<xs:attribute type="nonEmptyString" name="topic"/>
</xs:complexType>
<xs:complexType name="publishingIntervalType">
<xs:all>
<xs:element type="publishingIntervalLong" name="default" minOccurs="0" maxOccurs="1"/>
<xs:element type="publishingIntervalLong" name="srs-stats" minOccurs="0" maxOccurs="1"/>
<xs:element type="publishingIntervalLong" name="um-client-stats" minOccurs="0" maxOccurs="1"/>
<xs:element type="publishingIntervalLong" name="connection-events" minOccurs="0" maxOccurs="1"/>
<xs:element type="publishingIntervalLong" name="srs-error-stats" minOccurs="0" maxOccurs="1"/>
<xs:element type="publishingIntervalLong" name="um-client-error-stats" minOccurs="0" maxOccurs="1"/>
<xs:element type="publishingIntervalLong" name="config-opts" minOccurs="0" maxOccurs="1"/>
<xs:element type="publishingIntervalLong" name="internal-config-opts" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
<xs:complexType name="allowType" >
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="booleanEnumeration" name="allow" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="um-srsType">
<xs:all>
<xs:element type="daemonType" name="daemon" minOccurs="0" maxOccurs="1"/>
<xs:element type="srsType" name="srs" minOccurs="0" maxOccurs="1"/>
<xs:element type="debugMonitorType" name="debug-monitor" minOccurs="0" maxOccurs="1"/>
<xs:element type="daemonMonitorType" name="daemon-monitor" minOccurs="0" maxOccurs="1"/>
</xs:all>
<xs:attribute type="nonEmptyString" name="version"/>
</xs:complexType>
<xs:complexType name="srsType">
<xs:all>
<xs:element type="nonEmptyString" name="interface" minOccurs="0" maxOccurs="1"/>
<xs:element type="portInteger" name="port" minOccurs="0" maxOccurs="1"/>
<xs:element type="stateLifetimeInteger" name="state-lifetime" minOccurs="0" maxOccurs="1"/>
<xs:element type="stateLifetimeInteger" name="source-state-lifetime" minOccurs="0" maxOccurs="1"/>
<xs:element type="stateLifetimeInteger" name="interest-state-lifetime" minOccurs="0" maxOccurs="1"/>
<xs:element type="stateLifetimeInteger" name="route-state-lifetime" minOccurs="0" maxOccurs="1"/>
<xs:element type="stateLifetimeInteger" name="context-name-state-lifetime" minOccurs="0" maxOccurs="1"/>
<xs:element type="sourceLeaveBackoffInteger" name="source-leave-backoff" minOccurs="0" maxOccurs="1"/>
<xs:element type="otidmapType" name="otidmap" minOccurs="0" maxOccurs="1"/>
<xs:element type="topicmapType" name="topicmap" minOccurs="0" maxOccurs="1"/>
<xs:element type="routemapType" name="routemap" minOccurs="0" maxOccurs="1"/>
<xs:element type="namemapType" name="namemap" minOccurs="0" maxOccurs="1"/>
<xs:element type="clientActorType" name="clientactor" minOccurs="0" maxOccurs="1"/>
<xs:element type="nonEmptyString" name="application-id" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
</xs:schema>