Master: ecmwf.properties¶
The Master's ecmwf.properties controls scheduling, database access, public services, operational events and shared infrastructure. This reference includes options read by the implementation even when they are absent from the shipped file.
Other services have separate references: Monitor and Data Mover.
Identity extensions¶
[AuthenticationExtension] class and [UserDirectoryExtension] class select trusted Master identity providers. A blank authentication class automatically selects the bundled ECMWF TOTP adapter when [TOTP] active=true; otherwise it preserves local WebUser password authentication. A nonblank class selects the configured provider. Set [AuthenticationExtension] required=yes to fail Master startup if no authentication provider is configured; it defaults to no. Provider-specific options belong in the same section. Configuration is read at startup and requires a restart; a configured provider that cannot start fails Master startup. See Identity extensions for installation, lifecycle and authentication precedence.
The optional ECaccess directory extension uses host and port in [UserDirectoryExtension] and requires explicit bounded [RMIClientSocketFactory] connection/read timeouts. It does not provide password/passcode authentication.
[RemoteServiceExtensions] explicitly maps service IDs to provider configuration sections. It defaults to no registrations. See Remote service extensions and the optional ECaccess transfer module.
[InteractiveLoginExtension] class independently enables browser-based Monitor login. It defaults to blank. [InteractiveLoginMapping] maps local WebUser IDs to JSON objects containing the verified external issuer and subject. See OpenID Connect login for the bundled provider, full configuration and account requirements.
File location and configuration layers¶
The source template is etc/master/conf/ecmwf.properties. RPM installations place it in /usr/local/ecpds/master/conf/ecmwf.properties. The launcher selects the file with the ecmwf.properties JVM property; container mounts can change where its contents are stored.
Use /etc/ecpds/master.cnf or the container/service environment for launcher settings such as addresses, ports, database connection details and secrets. The launcher translates supported variables into the JVM properties referenced by the template. Arbitrary environment variables do not automatically become ecmwf.properties options.
The final directive:
loads a local override file from the launcher's master.etc directory if it exists and is readable. Despite the leading #, #include is an active configuration directive, not an ordinary comment. It must start at the beginning of the line. The supplied service layout uses a separate directory for this file, normally /etc/ecpds/master; do not point an include back to the file containing it. An unreadable or missing include produces a warning.
An override contains only the sections and values to change, for example:
Restart the affected service after changing configuration unless a feature's documentation explicitly describes runtime reload support. Many values are cached when classes or services initialize. #reload "Group" permits the configuration loader to reload that group, but does not make every consumer apply a changed value dynamically.
Syntax and defaults¶
Optional Master-only SNMP location collection uses [PhysicalLocation], [PhysicalLocationSystems], [PhysicalLocationMachine.ID] and [PhysicalLocationProfile.ID]. It is off by default and uses the physical-location tables included in the installation schema. See Physical system locations for target mappings, protected credential files, limits and RMI/display behavior.
| Syntax | Meaning |
|---|---|
[Group] followed by key=value | A case-sensitive section and option name. |
# text | A comment, except recognized directives such as #include, #reload and #property. |
${master.data} | A JVM system property supplied by the launcher. |
${Login[hostName]} | Another option in this configuration. |
${fully.qualified.Class.method()} | A supported static-method substitution used by the templates. |
yes / no, true / false | Boolean values. |
30s, 5m, 24h, 7d | Explicit durations for duration-reading options; ISO-8601 durations are also accepted. |
Duration units depend on the reader
Options read as durations treat a bare configured number as hours, not milliseconds. Plain integer options may instead use milliseconds, seconds, minutes, bytes or counts. For example, [Monitor] delay=120 means 120 hours, while [SocketConfig] connectTimeOut=30000 means 30 seconds. Duration defaults passed by the Java implementation are milliseconds; the tables below label these separately from configured values.
The catalogue distinguishes code fallback (what a particular reader uses when the option is absent) from shipped value (what the template explicitly sets). They are not necessarily equal. Removing a setting can therefore change behaviour. A dash in the shipped column means it is not assigned in the template. null means that reader supplies no value, not that the option is safe to omit. An empty list and an empty string are shown explicitly.
Context-dependent Java expressions are retained rather than replaced by a guessed constant. Where readers use different fallbacks, they appear on separate rows with links to their source. File-content options interpret the configured value as a path, but their fallback is content. Shipped credentials are not reproduced here.
Entries marked template entry have no direct literal reader in the reviewed sources. They may be consumed through substitutions or retained for compatibility; their presence alone is not evidence of an active runtime switch. Named-socket and open-map readers are documented separately.
Operational guidance¶
- Enable native log export, journaling and tracing independently; see Event Logging. Only the Master needs Collector connectivity and OpenTelemetry connection settings.
[StoragePolicy] enabled=yescan enforce existing policies immediately. Read Storage Lifecycle Policies before enabling it.- Scheduler switches in
[Server]enable workers;[Scheduler]configures their cadence, concurrency and watchdogs. Increasing concurrency also increases database, memory and Mover load. - Repository
*Sizesettings select storage-worker thread counts, not queue capacities or records per batch. Do not use them as retention limits. - Keep RMI and callback interfaces on trusted networks. Public service bind addresses and advertised addresses serve different purposes.
- Protect credentials and keystores with restrictive file permissions.
trustAllCerts,checkCertificates=noand plaintext proxy connections weaken transport protection; shipped values are not security recommendations.
Option catalogue¶
The following sections cover literal property readers, shared infrastructure, named socket overrides and dynamic option families in the OpenECPDS sources. Shared components only use their options when instantiated; listing a component does not enable it. Host, destination, user and transfer-module property families are linked below rather than conflated with service switches.
[API]¶
Template-defined configuration; see the reader links for its consuming component.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
api | No direct literal reader; template entry | Protected value/reference | Template:129 |
[CallBack]¶
Exported callback endpoint. serverFactory and clientFactory are Java socket-factory classes. This section also accepts the named socket overrides described below.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
clientFactory | null (no reader fallback) | ecmwf.common.rmi.RMIClientSocketFactory | CallBackObject:150 |
keepAlive | Inherits [SocketConfig] keepAlive | yes | Template:261 |
listenAddress | Inherits [SocketConfig] listenAddress | ${Login[internalAddress]} | Template:256 |
port | 9000 | ${Ports[callBack]} | CallBackObject:54 |
publicAddress | Inherits [SocketConfig] publicAddress | ${Login[internalAddress]} | Template:257 |
serverFactory | null (no reader fallback) | ecmwf.common.rmi.RMIServerSocketFactory | CallBackObject:116 |
[Command]¶
External helper commands. ecauth overrides the token-generation executable; sh selects the ECios shell command.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
ecauth | Cnf.at("Server", "ecauth", Cnf.at("ECauthSession", "cmd")) | - | ECauthTokenGenerator:46 |
sh | null (no reader fallback) | - | ForkECios:169 |
[DataBase]¶
Database broker and JDBC configuration. initSleep is seconds; purge is hours and maxTransferLife is days. fetchSize is rows; retry delays are milliseconds. Broker-specific flags only apply to that broker. The shipped Hibernate broker deliberately differs from the generic broker fallback.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
alias | null (no reader fallback) | ${database.alias} | ECaccessServer:165 |
alias | System.getProperty("database.alias", "") | ${database.alias} | ManagementImpl:3326 |
backup | No direct literal reader; template entry | ${master.conf}/backup.sql | Template:228 |
brokerFactory | ecmwf.common.database.BrokerFactoryOJB | ecmwf.common.database.BrokerFactoryHibernate | ECaccessServer:163 |
debugCache | false | - | BrokerHibernate:110 |
debugFrequency | 10000 | - | BrokerHibernate:116 |
debugPool | false | - | BrokerHibernate:113 |
debugSql | false | no | ECaccessServer:167 |
driver | null (no reader fallback) | org.mariadb.jdbc.Driver | ECaccessServer:164 |
emulateCalcFoundRows | "hsqldb".equalsIgnoreCase(Cnf.at("DataBase", "subProtocol", "")) | - | DBResultSet:55 |
enableStreamingFetch | true | no | BrokerHibernate:95 |
fetchSize | 500 | - | BrokerHibernate:92 |
initCount | 1 | - | ECaccessServer:146 |
initSleep | 30 | - | ECaccessServer:147 |
logEvents | true | yes | ECaccessServer:167 |
maxIdentityCount | 7 | 7 | MasterServer:2049 |
maxTransferLife | 210 | 210 | MasterServer:2050 |
password | null (no reader fallback) | Protected value/reference | ECaccessServer:165 |
protocol | null (no reader fallback) | jdbc | ECaccessServer:164 |
purge | 360 | 360 | ECaccessServer:215 |
repository | null (no reader fallback) | ${master.conf}/sql | ECaccessServer:166 |
retryTransactionCount | 2 | - | BrokerHibernate:104 |
retryTransactionDelay | 1000 | - | BrokerHibernate:107 |
server | null (no reader fallback) | - | ECaccessServer:166 |
setAutoCommit | false | - | BrokerHibernate:98 |
setReadOnly | false | - | BrokerHibernate:101 |
subProtocol | Empty string | mariadb | DBResultSet:56 |
subProtocol | null (no reader fallback) | mariadb | ECaccessServer:164 |
user | null (no reader fallback) | master | ECaccessServer:165 |
[ECaccessScheduler]¶
Shared scheduler's minimum wait duration.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
minimumWait | 1000 ms (duration fallback) | - | ECaccessScheduler:59 |
[ECauthModule]¶
ECauth connection and host-list cache. Durations control connection timeout, refresh polling, refresh frequency and cached-entry lifetime. Credentials here identify the ECauth service account.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
connectionTimeout | 10000 ms (duration fallback) | - | Tools:163; Tools:253; Tools:359 |
[ECauthSession]¶
Legacy fallback command for ECauth token generation; [Command] ecauth and [Server] ecauth take precedence.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
cmd | null (no reader fallback) | - | ECauthTokenGenerator:47 |
[ECios]¶
ECios helper start/kill socket timeouts, in milliseconds. Also accepts named socket overrides.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
killSoTimeout | 15000 | - | ForkECios:258 |
startSoTimeout | 15000 | - | ForkECios:179 |
[ECpdsBase]¶
Database-facing cache refresh pause and expiry durations.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
cachePause | 5000 ms (duration fallback) | - | ECpdsBase:71 |
cacheTimeout | 60000 ms (duration fallback) | - | ECpdsBase:68 |
[ECpdsClient]¶
ECpds socket-client read timeout in milliseconds. This is distinct from the server-side plugin timeout.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
soTimeOut | 60000 | - | ECpdsClient:95 |
[ECpdsPlugin]¶
Master ECpds listener and request-processing behaviour. checkPort requires a privileged client source port when enabled. SocketSoTimeout applies to accepted request sockets in milliseconds. resetDataTransferSchedulesByGroup resets schedules on group completion. The section also accepts named socket options.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
SocketSoTimeout | 60000 | - | ECpdsPlugin:608 |
checkPort | true | no | ECpdsPlugin:764 |
defaultApplication | pgen | - | ECpdsPlugin:154 |
failOnDestinationNotFound | true | - | MasterServer:14111; ECpdsPlugin:1966; ECpdsPlugin:2088 |
forceStandby | false | - | ECpdsPlugin:136 |
host | Cnf.at("Login", "hostName", "localhost") | - | ECpdsClient:83 |
ignoreMissingScheduleTime | true | - | ECpdsPlugin:1654 |
listenAddress | Inherits [SocketConfig] listenAddress | ${Login[externalAddress]} | Template:318 |
maxSourceNameLength | 255 | - | ECpdsPlugin:151 |
port | Cnf.at("Ports", "ecpds", 6640) | ${Ports[ecpds]} | ECpdsClient:86 |
port | null (no reader fallback) | ${Ports[ecpds]} | ECpdsPlugin:466 |
resetDataTransferSchedulesByGroup | false | yes | ECpdsPlugin:157 |
soTimeOut | Inherits [SocketConfig] soTimeOut | 600000 | Template:320 |
transferGroup | null (no reader fallback) | - | ECpdsPlugin:293 |
waitForInitialWait | 25000 ms (duration fallback) | - | ECpdsPlugin:147 |
waitForRefreshInterval | 15000 ms (duration fallback) | - | ECpdsPlugin:143 |
waitForReloadInterval | 5000 ms (duration fallback) | - | ECpdsPlugin:139 |
[ECproxyPlugin]¶
Mover ECproxy data listener and repository. Explicit TCP options override the accepted socket's existing values. Buffer sizes are bytes; socket timeouts are milliseconds. Also accepts named socket settings.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
repository | /tmp | - | RegularFile:102 |
[ExecModule]¶
Defaults for the executable transfer module. script runs after file reception; dir falls back to the transfer directory. synchronous waits for command completion, returnCode is its accepted exit status, and usePipe supplies arguments on standard input. mkdirs creates parent directories and usetmp stages reception in a temporary file. Empty prefix and suffix select an effective .tmp suffix.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
args | Empty string | - | ExecModule:121 |
dir | dir | - | ExecModule:117 |
mkdirs | true | - | ExecModule:122 |
prefix | Empty string | - | ExecModule:124 |
returnCode | 0 | - | ExecModule:120 |
script | System.getProperty("ecmwf.dir", "../..") + "/gateway/bin/ectrans" | - | ExecModule:112 |
suffix | Empty string | - | ExecModule:125 |
synchronous | true | - | ExecModule:118 |
usePipe | false | - | ExecModule:119 |
usetmp | true | - | ExecModule:123 |
[ExecutorManager]¶
Opt-in virtual-thread execution for the shared executor. This is not a general scheduler concurrency limit.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
allowVirtualThread | false | - | ExecutorManager:79 |
[FTPActiveSocket]¶
FTP server active-data sockets. Accepts every named socket option below, in addition to these direct readers.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
reuseAddress | true | yes | DataSocket:165 |
soTimeOut | Inherits [SocketConfig] soTimeOut | 7200000 | Template:364 |
[FTPPassiveSocket]¶
FTP server passive-data sockets. boundAddress controls the address used for passive binding. Also accepts named socket settings, including local-port ranges.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
backLog | 1 | - | DataSocket:80 |
boundAddress | boundAddress | - | DataSocket:99 |
maxPrivilegedPort | Inherits [SocketConfig] maxPrivilegedPort | 60000 | Template:359 |
minPrivilegedPort | Inherits [SocketConfig] minPrivilegedPort | 50000 | Template:358 |
privilegedLocalPort | Inherits [SocketConfig] privilegedLocalPort | yes | Template:357 |
soTimeOut | Inherits [SocketConfig] soTimeOut | 300000 | Template:360 |
[Filter]¶
Streaming compression/decompression command definitions. The four fly.* keys are read by the stream manager. The template also retains pre.out.* definitions, but the current source has no direct reader for those entries.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
fly.in.lbzip2 | Empty command list | - | StreamManagerImp:234 |
fly.in.zstd | Empty command list | - | StreamManagerImp:242 |
fly.out.lbzip2 | Empty command list | - | StreamManagerImp:136 |
fly.out.zstd | Empty command list | - | StreamManagerImp:144 |
[FtpDomainList]¶
Virtual FTP/SFTP domain mappings; arbitrary domain names are supported. * is the fallback. Domain mappings select backing filesystem/domain implementations, not network listener addresses.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
* | null (no reader fallback) | * | DOMAIN:47; MinaFileSystemAccessor:781 |
attachments | No mapping; uses * fallback | attachments: | Template:347 |
countries | No mapping; uses * fallback | countries: | Template:349 |
data | No mapping; uses * fallback | data: | Template:351 |
destinations | No mapping; uses * fallback | destinations: | Template:348 |
hosts | No mapping; uses * fallback | hosts: | Template:350 |
types | No mapping; uses * fallback | types: | Template:352 |
[FtpModuleList]¶
FTP extension-module lists. Keys select extensions; * supplies the default list. Values are comma-separated module definitions consumed by the FTP utility.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
* | Empty list | - | Util:217 |
[FtpPlugin]¶
FTP control listener and behaviour. welcome, browser and help are file paths; tail is response text. passive, rest and extended affect FTP features. hidden is a list of hidden virtual domains. alwaysCheckOnRETR requests retrieval-time checks. The section also accepts named socket options.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
alwaysCheckOnRETR | false | - | RETR:165 |
browser | browser.ftp | ${master.conf}/ftp/browser.txt | PASS:165 |
dataTimeOut | No direct literal reader; template entry | 600000 | Template:334 |
ext | Empty list | Empty string | Util:317 |
extended | false | no | FEAT:49 |
extended | true | no | FtpPlugin:284 |
help | help.ftp | ${master.conf}/ftp/help.txt | HELP:57 |
hidden | Empty list | Empty string | DOMAIN:53 |
listenAddress | Inherits [SocketConfig] listenAddress | ${Login[externalAddress]} | Template:331 |
passive | true | yes | CurrentContext:150 |
port | 21 | ${Ports[ftp]} | DataSocket:129 |
port | null (no reader fallback) | ${Ports[ftp]} | FtpPlugin:129 |
rest | true | - | FEAT:50; FtpPlugin:288 |
soTimeOut | Inherits [SocketConfig] soTimeOut | 600000 | Template:333 |
tail | Direct comments to ecaccess@ecmwf.int | FTP Admin Interface | ALIAS:86; CHMOD:90; DOMAIN:89; UMASK:69 |
welcome | welcome.ftp | ${master.conf}/ftp/welcome.txt | PASS:166 |
[GeoIP]¶
Template-defined configuration; see the reader links for its consuming component.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
forced.136.156 | No direct literal reader; template entry | 44.520320,11.360250,Europe,IT,Bologna | Template:369 |
[IO]¶
Local repository I/O implementation. byteBufferSizeInMb sets the buffer size in MiB; pool idle age is seconds. Direct buffers and pooling only apply when the byte-buffer path is used. channelForce, channelForceMetadata and fdSync govern persistence/sync behaviour; changing them trades durability and performance.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
byteBufferDirect | true | - | RegularFile:76 |
byteBufferPool | true | - | RegularFile:70 |
byteBufferPoolMaxIdleSec | 60 | - | RegularFile:86 |
byteBufferSizeInMb | 1 | - | RegularFile:79 |
byteBufferUse | true | - | RegularFile:73 |
channelForce | true | - | RegularFile:67 |
channelForceMetadata | true | - | RegularFile:82 |
fdSync | true | - | RegularFile:64 |
[InterruptibleRMIServerSideSocket]¶
Cleanup interval for server-side interruptible RMI socket state, in minutes.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
cleanupIntervalInMinutes | 5 | - | InterruptibleRMIServerSocket:355 |
[InterruptibleRMISocket]¶
Interruptible RMI stream-buffer pooling. Buffer size is bytes and buffer TTL is minutes.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
bufferSize | 65536 | - | InterruptibleRMISocket:160 |
bufferTTLInMinutes | 5 | - | InterruptibleRMISocket:164 |
usePooledBufferedStreams | true | - | InterruptibleRMISocket:65 |
[Login]¶
Component identity, registration credential and addresses. root defaults to the hostname in normal service readers. Several utility readers use their own hostname/service fallback, so removing identity settings is not recommended. External/internal addresses are primarily consumed through template references and named socket sections.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
externalAddress | No direct literal reader; template entry | ${Login[hostName]} | Template:19 |
hostName | InetAddress.getLocalHost().getHostName() | ${ecmwf.common.ecaccess.ECaccessInit.getHostName()} | ECaccessScheduler:336; PluginContainer:149 |
hostName | role | ${ecmwf.common.ecaccess.ECaccessInit.getHostName()} | TransferTracing:105 |
hostName | null (no reader fallback) | ${ecmwf.common.ecaccess.ECaccessInit.getHostName()} | MasterServer:7603 |
hostName | master | ${ecmwf.common.ecaccess.ECaccessInit.getHostName()} | OperationalEvents:94; OperationalEvents:121 |
hostName | localhost | ${ecmwf.common.ecaccess.ECaccessInit.getHostName()} | ECpdsClient:83 |
internalAddress | No direct literal reader; template entry | ${master.internalAddress} | Template:22 |
password | null (no reader fallback) | Protected value/reference | MasterServer:7623 |
root | Cnf.at("Login", "hostName", role) | - | TransferTracing:105 |
root | Cnf.at("Login", "hostName") | - | MasterServer:7603 |
root | Cnf.at("Login", "hostName", "master") | - | OperationalEvents:94; OperationalEvents:121 |
service | Cnf.at("Login", "hostName", InetAddress.getLocalHost().getHostName()) | - | ECaccessScheduler:336; PluginContainer:149 |
[LoginManagement]¶
Failed-login throttling and ban tracking. active enables enforcement; max is consecutive failures. timer, wait and the login-path delay are seconds. The cleanup thread also reads delay as a raw millisecond polling interval with a different fallback; both readers are shown. whitelist bypasses these checks for matching entries.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
active | false | - | LoginManagement:52 |
delay | 4 | - | LoginManagement:75 |
delay | 600000 | - | LoginManagement:288 |
max | 20 | - | LoginManagement:70 |
timer | 3600 | - | LoginManagement:58 |
wait | 300 | - | LoginManagement:78 |
whitelist | Empty list | - | LoginManagement:64 |
[Mail]¶
SMTP and optional mail-store configuration. host/user are the legacy shared defaults; smtpHost overrides the outgoing host. starttls, tls and auth affect transport/authentication. Store settings apply only to mail retrieval. Keep passwords in protected local configuration.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
auth | true | - | MailMBean:286 |
debug | false | - | MailMBean:280 |
defaultFrom | mailUser | - | MailMBean:445 |
folderName | INBOX | - | MailMBean:277 |
host | Empty string | ${mail.host} | MailMBean:272 |
password | Empty string | - | MailMBean:276 |
port | 25 | - | MailMBean:284 |
smtpHost | defaultHost | - | MailMBean:273 |
starttls | true | - | MailMBean:285 |
storeHost | Empty string | - | MailMBean:274 |
storePort | -1 | - | MailMBean:302 |
storeType | Empty string | - | MailMBean:279 |
tls | true | - | MailMBean:314 |
user | Empty string | ${mail.user} | MailMBean:275 |
[Master]¶
Whether Master registration updates a Mover's ECproxy address and port.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
updateECproxyAddressAndPort | false | - | MasterServer:4621 |
[MetaData]¶
Metadata reload duration and notification recipient when contact information is missing.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
missingContactsMail | Empty string | ${metadata.missingContactsMail} | ManagementImpl:186 |
reload | 86400000 ms (duration fallback) | 24h | ManagementImpl:130 |
[Monitor]¶
External service-status integration, independent of the web monitoring UI. activated enables it, debug logs submissions and dontSend suppresses delivery. delay is a duration: the template's bare 120 means 120 hours, whereas the code fallback is five minutes.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
activated | false | no | MonitorManager:72 |
debug | false | no | MonitorManager:78 |
delay | 300000 ms (duration fallback) | 120 | MonitorManager:75 |
dontSend | false | no | MonitorManager:81 |
[NetworkWeather]¶
Network Weather admission/control limits. Values are counts except maxConfigurationBytes and maxControlResponseBytes, which are bytes. The Monitor controls activation; these settings bound accepted work rather than enabling probes.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
maxCandidates | 500 | 500 | WeatherLimits:22 |
maxConfigurationBytes | 49152 | 49152 | WeatherLimits:23 |
maxControlResponseBytes | 65536 | - | WeatherLimits:35 |
maxHostChoices | 5000 | 5000 | WeatherLimits:22 |
maxProbePolicies | 50 | 50 | WeatherLimits:22 |
maxSelectedPaths | 50 | 50 | WeatherLimits:21 |
maxSources | 20 | 20 | WeatherLimits:21 |
[OpenTelemetry]¶
Master-only log, metric and trace SDK defaults. Metric intervals/timeouts and log/trace schedule delays are milliseconds; queue/batch limits count records or spans, and sample ratio is 0-1. Standard JVM/environment SDK settings override these defaults. With log journaling enabled, log queue/batch values govern only in-memory fail-open delivery, not the database backlog.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
logsMaxExportBatchSize | 512 | 512 | OperationalEvents:104 |
logsMaxQueueSize | 2048 | 2048 | OperationalEvents:103 |
logsScheduleDelayMillis | 1000 | 1000 | OperationalEvents:105 |
metricsEnabled | false | no | TransferMetrics:67 |
metricsExportIntervalMillis | 60000 | 60000 | TransferMetrics:74 |
metricsExportTimeoutMillis | 30000 | 30000 | TransferMetrics:75 |
tracesEnabled | false | no | TransferTracing:84 |
tracesMaxExportBatchSize | 512 | 512 | TransferTracing:95 |
tracesMaxQueueSize | 2048 | 2048 | TransferTracing:94 |
tracesSampleRatio | 0.01 | 0.01 | TransferTracing:93 |
tracesScheduleDelayMillis | 1000 | 1000 | TransferTracing:96 |
[OperationalEvents]¶
Independent Splunk-file and native OpenTelemetry event outputs. Journaling persists events before OTLP delivery; install the journal schema before enabling it. journalOwner must remain stable and distinguish independent Masters.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
journalCriticalOldestAgeMillis | 1800000 | 1800000 | OperationalEvents |
journalCriticalPendingCount | 10000 | 10000 | OperationalEvents |
journalEnabled | false | no | OperationalEvents:88 |
journalOwner | Cnf.at("Login", "root", Cnf.at("Login", "hostName", "master")) | - | OperationalEvents:93 |
journalWarningOldestAgeMillis | 300000 | 300000 | OperationalEvents |
journalWarningPendingCount | 1000 | 1000 | OperationalEvents |
openTelemetryEnabled | false | no | OperationalEvents:85 |
splunkEnabled | true | yes | OperationalEvents:84 |
The warning and critical thresholds are positive values, and each warning value must be lower than its corresponding critical value. They are loaded at Master startup. Reaching either the pending-count or oldest-admission-age threshold raises the corresponding alert on the journal page.
[Operator]¶
Transfer-operation message template. $destination[...], $dataFile[...] and related placeholders are expanded from transfer context.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
template | null (no reader fallback) | $destination[name]: $dataFile[metaTime]-$dataFile[metaStream]($dataFile[timeStep]) -> $dataTransfer[target]($dataFile[formatSize]) $system[message] on $transferMethod[name]://$host[login]@$host[host]($host[nickname];$host[networkCode]) $dataTransfer[comment] | TransferScheduler:3222 |
[OpsViewManager]¶
OpsView publication endpoints, credentials, filters and TLS verification. URLs default relative to url; filter names differ by acquisition/dissemination/other roles. trustAllCerts=true skips certificate validation.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
acquisitionFilterName | ECPDS_Acquisition | - | OpsViewManager:120 |
activated | true | ${opsview.activated} | OpsViewManager:81 |
disseminationFilterName | ECPDS_Dissemination | - | OpsViewManager:116 |
filterName | No direct literal reader; template entry | ECPDS_Destinations | Template:303 |
options | Empty string | - | OpsViewManager:84 |
otherFilterName | ECPDS_Other | - | OpsViewManager:124 |
password | Empty string | Protected value/reference | OpsViewManager:113 |
trustAllCerts | true | yes | OpsViewManager:146; OpsViewManager:224 |
url | https://localhost/passive:1443 | - | OpsViewManager:87 |
urlDetail | URL + "/rest/detail" | https://${opsview.host}/rest/detail | OpsViewManager:107 |
urlHost | URL + "/rest/config/host" | https://${opsview.host}/rest/config/host | OpsViewManager:93 |
urlLogin | URL + "/rest/login" | https://${opsview.host}/rest/login | OpsViewManager:90 |
urlNotes | URL + "/rest/notes/service" | - | OpsViewManager:101 |
urlReload | URL + "/rest/reload" | https://${opsview.host}/rest/reload | OpsViewManager:104 |
user | Empty string | grid-apiconfig | OpsViewManager:110 |
[Other]¶
Shared utilities. buffer is an I/O buffer size in bytes; ticketWaitDuration is a raw millisecond timeout. ecauthTokenCache enables token caching. dontCheckIp bypasses the provider's client-address check during subscription. tmp is retained in templates; the launcher separately sets the JVM temporary directory.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
buffer | 65536 | 131072 | CurrentContext:132; ECpdsPlugin:3141 |
dontCheckIp | false | yes | ECaccessProvider:292 |
ecauthTokenCache | true | - | ECauthTokenManager:52 |
ticketWaitDuration | 120000 | - | AttachmentAccessImpl:348 |
tmp | No direct literal reader; template entry | ${master.tmp} | Template:375 |
trace | false | - | MonitorCall:50 |
[PluginList]¶
Template-defined configuration; see the reader links for its consuming component.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
ecpds | No plugin definition | ecmwf.ecpds.master.plugin.ecpds.ECpdsPlugin@${master.lib}/plugin/ecpds.jar,maxConnections=1000,inverseResolution=no | Template:37 |
ftp | No plugin definition | ecmwf.common.ftpd.FtpPlugin@${master.lib}/plugin/ftp.jar,maxConnections=50,inverseResolution=no | Template:38 |
[Ports]¶
Template port substitutions. Most keys are only referenced by listener sections and therefore have no independent code default. ecpds also has a direct client-reader fallback.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
callBack | No direct literal reader; template entry | ${port.callback} | Template:28 |
ecpds | 6640 | ${port.ecpds} | ECpdsClient:86 |
ftp | No direct literal reader; template entry | ${port.ftp} | Template:27 |
[ProxySocket]¶
Proxy data/control socket settings. plainText chooses non-TLS transport and otherwise depends on the connection's addresses. host/port select the control endpoint; dataHost/dataPort can select the data endpoint separately. cipherSuites is the TLS suite list. Also accepts named socket options.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
cipherSuites | Empty list | SSL_RSA_WITH_NULL_MD5 | ProxySocket:396 |
cipherSuites | null (no reader fallback) | SSL_RSA_WITH_NULL_MD5 | ProxySocket:400 |
dataHost | Cnf.at("ProxySocket", "host", socketConfig.getPublicAddress()) | - | ProxySocket:485; ProxySocket:567 |
dataHost | null (no reader fallback) | - | ProxySocket:487; ProxySocket:569 |
dataPort | Cnf.at("ProxySocket", "port", 646) | - | ProxySocket:486; ProxySocket:568 |
host | localName | ${Login[hostName]} | ProxySocket:156 |
host | socketConfig.getPublicAddress() | ${Login[hostName]} | ProxySocket:206; ProxySocket:485; ProxySocket:518; ProxySocket:567; ProxySocket:602; ProxySocket:679; ProxySocket:729 |
plainText | localAddress.equals(definedAddress) | - | ProxySocket:163 |
port | 646 | - | ProxySocket:207; ProxySocket:486; ProxySocket:519; ProxySocket:568; ProxySocket:603; ProxySocket:680; ProxySocket:730 |
[RMIClientSocketFactory]¶
Template-defined configuration; see the reader links for its consuming component.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
interruptible | Inherits [SocketConfig] interruptible | yes | Template:274 |
keepAlive | Inherits [SocketConfig] keepAlive | yes | Template:275 |
listenAddress | Inherits [SocketConfig] listenAddress | ${Login[internalAddress]} | Template:272 |
publicAddress | Inherits [SocketConfig] publicAddress | ${Login[internalAddress]} | Template:273 |
[RMIServerSocketFactory]¶
Template-defined configuration; see the reader links for its consuming component.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
interruptible | Inherits [SocketConfig] interruptible | yes | Template:267 |
keepAlive | Inherits [SocketConfig] keepAlive | yes | Template:268 |
listenAddress | Inherits [SocketConfig] listenAddress | ${Login[internalAddress]} | Template:265 |
publicAddress | Inherits [SocketConfig] publicAddress | ${Login[internalAddress]} | Template:266 |
[RequestParser]¶
Optional parser-backed ECpds ingestion. parserDir holds parser files; requestSize is parser worker count, requestDelay is milliseconds and maxAuthorisedSize bounds pending requests. logRequests controls request logging, not operational-event platform selection.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
clean | true | - | ECpdsPlugin:382 |
lastTimeStamp | -1 | - | ECpdsPlugin:381 |
logRequests | false | yes | ECpdsPlugin:133 |
maxAuthorisedSize | 1000 | - | ECpdsParser:338 |
parserDir | null (no reader fallback) | - | ECpdsPlugin:379 |
ratio | 1 | - | ECpdsPlugin:381 |
requestDelay | 1000 | - | ECpdsParser:336 |
requestSize | 25 | - | ECpdsParser:335 |
useParser | false | no | ECpdsPlugin:380 |
[ResourceTracker]¶
Shared runtime-resource diagnostics. defaultDebugFrequency counts resource-close events between debug reports; it is not a time interval.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
defaultDebugFrequency | 10000 | - | ResourceTracker:45 |
enabled | true | - | ResourceTracker:42 |
[Scheduler]¶
Worker cadence, concurrency and watchdogs. *JammedTimeout, maximumDuration* and timeOut* read durations; a negative timeout leaves that execution limit unset. *TimeRanges accepts configured execution windows. max*Threads values are concurrency counts; cacheRatio scales prefetch. The legacy purgeDataBase/updateECUsers intervals are hours, with optional clock-time lists.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
acquisitionScheduler | 1000 ms (duration fallback) | 1s | MasterServer:11417 |
acquisitionSchedulerJammedTimeout | 600000 ms (duration fallback) | 10m | MasterServer:11418 |
acquisitionSchedulerTimeRanges | Empty list | - | MasterServer:11419 |
backupScheduler | 5000 ms (duration fallback) | 1m | MasterServer:10548 |
backupSchedulerJammedTimeout | 600000 ms (duration fallback) | 10m | MasterServer:10549 |
backupSchedulerTimeRanges | Empty list | - | MasterServer:10550 |
cacheRatio | 40 | 80 | MasterServer:13024 |
dataTransferCheck | 300000 ms (duration fallback) | 5m | MasterServer:9390 |
dataTransferCheckJammedTimeout | 600000 ms (duration fallback) | 30m | MasterServer:9391 |
dataTransferCheckTimeRanges | Empty list | - | MasterServer:9392 |
debug | false | - | MasterServer:10912; MasterServer:13230 |
destinationThread | 1000 ms (duration fallback) | 1s | TransferScheduler:3042 |
destinationThreadJammedTimeout | 300000 ms (duration fallback) | 5m | TransferScheduler:3043 |
downloadScheduler | 1000 ms (duration fallback) | 1s | MasterServer:13261 |
downloadSchedulerJammedTimeout | 600000 ms (duration fallback) | 10m | MasterServer:13262 |
downloadSchedulerTimeRanges | Empty list | - | MasterServer:13263 |
eventScheduler | 5000 ms (duration fallback) | 1s | MasterServer:8205 |
eventSchedulerJammedTimeout | 600000 ms (duration fallback) | 10m | MasterServer:8206 |
eventSchedulerTimeRanges | Empty list | - | MasterServer:8207 |
eventScriptFile | Empty string | ${master.etc}/event.js | MasterServer:796; MasterServer:8375 |
exportDataBase | No direct literal reader; template entry | 0 | Template:221 |
failOnMissingSourceFile | false | - | MasterServer:14222 |
filterScheduler | 5000 ms (duration fallback) | 1s | MasterServer:9450 |
filterSchedulerJammedTimeout | 300000 ms (duration fallback) | 5m | MasterServer:9451 |
filterSchedulerTimeRanges | Empty list | - | MasterServer:9452 |
hostCheckScheduler | 300000 ms (duration fallback) | 5m | MasterServer:9132 |
hostCheckSchedulerJammedTimeout | 1800000 ms (duration fallback) | 30m | MasterServer:9133 |
hostCheckSchedulerTimeRanges | Empty list | - | MasterServer:9134 |
interruptSlowAcquisitionThread | true | yes | MasterServer:11395 |
interruptSlowDownloadThread | No direct literal reader; template entry | yes | Template:191 |
maxAcquisitionThreads | 100 | 140 | MasterServer:11388 |
maxBackupThreads | 15 | 15 | MasterServer:10529 |
maxDownloadThreads | 60 | ${retrieval.maxPoolSize} | MasterServer:13224 |
maxEventThreads | 200 | 50 | MasterServer:8186 |
maxFilterThreads | 15 | 100 | MasterServer:9431 |
maxPresetPerDestination | 60 | - | MasterServer:13125 |
maxProxyThreads | 15 | 150 | MasterServer:10909 |
maxPurgeThreads | 50 | 250 | MasterServer:10245 |
maxReplicateThreads | 200 | 200 | MasterServer:9818 |
maxReplicateThreadsPerMover | 10 | 15 | MasterServer:9821 |
maximumDurationAcquisitionThread | 600000 ms (duration fallback) | 10m | MasterServer:11391 |
maximumDurationDownloadThread | No direct literal reader; template entry | 25m | Template:188 |
minimumDurationDownloadThread | No direct literal reader; template entry | 5m | Template:189 |
minimumRateDownloadThread | No direct literal reader; template entry | 2359296 | Template:190 |
moverAvailabilityScheduler | 60000 ms (duration fallback) | - | MasterServer:9042 |
moverAvailabilitySchedulerJammedTimeout | 300000 ms (duration fallback) | - | MasterServer:9044 |
portalBytesScheduler | 30000 ms (duration fallback) | - | MasterServer:8950 |
portalBytesSchedulerJammedTimeout | 300000 ms (duration fallback) | - | MasterServer:8951 |
portalTrafficScheduler | 60000 ms (duration fallback) | - | MasterServer:8915 |
portalTrafficSchedulerJammedTimeout | 300000 ms (duration fallback) | - | MasterServer:8916 |
processChecksum | true | - | MasterServer:13233 |
proxyScheduler | 5000 ms (duration fallback) | - | MasterServer:10931 |
proxySchedulerJammedTimeout | 600000 ms (duration fallback) | - | MasterServer:10932 |
proxySchedulerTimeRanges | Empty list | - | MasterServer:10933 |
purgeDataBase | 24 | 24 | ECaccessServer:207 |
purgeDataBaseTime | Empty list | 00:15:00 | ECaccessServer:205 |
purgeScheduler | 5000 ms (duration fallback) | 1s | MasterServer:10264 |
purgeSchedulerJammedTimeout | 600000 ms (duration fallback) | - | MasterServer:10265 |
purgeSchedulerTimeRanges | Empty list | - | MasterServer:10266 |
removeExpiredDataTransfers | No direct literal reader; template entry | 1 | Template:215 |
removeExpiredRoots | No direct literal reader; template entry | 1 | Template:216 |
replicateScheduler | 5000 ms (duration fallback) | 1s | MasterServer:9840 |
replicateSchedulerJammedTimeout | 600000 ms (duration fallback) | 10m | MasterServer:9841 |
replicateSchedulerTimeRanges | Empty list | - | MasterServer:9842 |
timeOutBackupThread | -1 ms (duration fallback) | 20m | MasterServer:10526 |
timeOutEventThread | -1 ms (duration fallback) | 5m | MasterServer:8183 |
timeOutFilterThread | -1 ms (duration fallback) | - | MasterServer:9428 |
timeOutProxyThread | -1 ms (duration fallback) | - | MasterServer:10906 |
timeOutPurgeThread | -1 ms (duration fallback) | - | MasterServer:10242 |
timeOutReplicateThread | -1 ms (duration fallback) | 20m | MasterServer:9815 |
transferScheduler | 2000 ms (duration fallback) | 1s | TransferScheduler:174 |
transferSchedulerJammedTimeout | 300000 ms (duration fallback) | 5m | TransferScheduler:175 |
transferSchedulerTimeRanges | Empty list | - | TransferScheduler:176 |
updateECUsers | 24 | 24 | ECaccessServer:203 |
updateECUsersTime | Empty list | 00:15:00 | ECaccessServer:201 |
[ScriptManager]¶
JavaScript/Graal engine settings. runningTimeout and longRunningTime are milliseconds. resourceLimits=0 leaves the statement limit disabled. Shared engines, compilation and virtual-thread execution are independent switches.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
allowExperimentalOptions | false | - | ScriptManager:96 |
allowVirtualThread | false | - | ScriptManager:101 |
engineCompilation | true | - | ScriptManager:98 |
longRunningTime | 1000 | - | ScriptManager:79 |
resourceLimits | 0 | - | ScriptManager:95 |
runningTimeout | 10000 | - | ScriptManager:76 |
useSharedEngine | true | - | ScriptManager:95 |
warnVirtualThreadSupport | false | - | ScriptManager:97 |
[Security]¶
Authentication, secret protection, socket TLS and optional HTTPS store defaults. SSL store readers can fall back to JVM javax.net.ssl.* properties; HTTPS has its own fallback path. JCE settings protect stored secrets and are not HTTPS cipher settings. checkCertificates=no disables certificate checks. See the TLS and control-channel guides before changing these values.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
JCEAlias | SecretWriting.class.getName() | - | SecretWriting:96 |
JCECipherAlgorithm | DES/ECB/PKCS5Padding | - | SecretWriting:151 |
JCEKeyStore | null (no reader fallback) | - | SecretWriting:95 |
JCEKeyStoreAlgorithm | DES | - | SecretWriting:166 |
JCEKeyStorePassword | null (no reader fallback) | - | SecretWriting:94 |
JCEKeyStoreSize | -1 | - | SecretWriting:170 |
JCEKeyStoreType | JCEKS | - | SecretWriting:97 |
SSLKeyStore | System.getProperty("javax.net.ssl.keyStore") | ${master.etc}/ecpds-master.pfx | SSLSocketFactory:64 |
SSLKeyStoreAlgorithm | System.getProperty("sun.SSL.keymanager.type", "SunX509") | - | SSLSocketFactory:76 |
SSLKeyStorePassword | System.getProperty("javax.net.ssl.keyStorePassword") | Protected value/reference | SSLSocketFactory:68 |
SSLKeyStoreType | System.getProperty("javax.net.ssl.keyStoreType", "PKCS12") | - | SSLSocketFactory:72 |
SSLTrustStore | System.getProperty("javax.net.ssl.trustStore", KEY_STORE_PATH) | - | SSLSocketFactory:80 |
SSLTrustStoreAlgorithm | System.getProperty("sun.SSL.trustmanager.type", KEY_STORE_ALGORITHM) | - | SSLSocketFactory:92 |
SSLTrustStorePassword | System.getProperty("javax.net.ssl.trustStorePassword", KEY_STORE_PASSWORD) | - | SSLSocketFactory:84 |
SSLTrustStoreType | System.getProperty("javax.net.ssl.trustStoreType", KEY_STORE_TYPE) | - | SSLSocketFactory:88 |
SSLVersion | TLSv1.3 | - | SSLSocketFactory:61 |
check | false | - | ECaccessServer:188 |
checkCertificates | true | - | SSLSocketFactory:373 |
cliSharedSecret | Empty string | Protected value/reference | SimplePlugin:62; ProxySocket:82; ECpdsClient:98 |
ejbPassword | No direct literal reader; template entry | Protected value/reference | Template:249 |
ejbUser | No direct literal reader; template entry | ${Login[hostName]} | Template:248 |
jaasModule | No direct literal reader; template entry | ecmwf | Template:247 |
[Server]¶
Per-process service switches and local paths. Master readers enable schedulers/repositories; Mover readers enable its own repositories/accounting. dontRecord* suppresses management-action history, not native telemetry globally. Globe cache settings belong to the Monitor. providerMBeanTimeout is milliseconds; topology probe timeout is a duration.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
acqDownloadScheduler | true | - | MasterServer:1010 |
acquisitionScheduler | true | yes | MasterServer:996 |
allowPasswordOn | "(" + getRoot() + "\|" + Format.getHostAddress(getRoot()) + ")" | - | MasterServer:808 |
anonymousPass | anonymous | - | MasterServer:7239 |
anonymousUser | anonymous | - | MasterServer:6287; MasterServer:7040; MasterServer:7217; MasterServer:7238 |
anonymousUser | "anonymous".equals(user) | - | MasterServer:7308 |
attachments | /tmp/ecpds-attachments | ${master.data}/attachments | AttachmentAccessImpl:57; ManagementImpl:126 |
backupScheduler | true | yes | MasterServer:982 |
checkFileName | ecpds.tst | - | MasterServer:9135 |
containersToNotify | "ECpdsMonitor/" + getRoot() | ECpdsMonitor/(.*) | MasterServer:804 |
dataTransferCheck | true | - | MasterServer:948 |
defaultTransferGroup | null (no reader fallback) | internet | DataBaseImpl:2288; TransferServerProvider:1249 |
dissDownloadScheduler | true | - | MasterServer:1017 |
dontRecordActions | "output", "report" | output,report | MasterServer:7113 |
dontRecordTransferActions | true | yes | MasterServer:7112 |
downloadScheduler | No direct literal reader; template entry | yes | Template:102 |
ecauth | Cnf.at("ECauthSession", "cmd") | ecauth | ECauthTokenGenerator:47 |
email | Empty string | Empty string | MasterServer:7063 |
eventRepository | true | yes | MasterServer:910 |
eventScheduler | true | yes | MasterServer:914 |
filterScheduler | true | yes | MasterServer:1024 |
geoip2DataFile | null (no reader fallback) | ${master.conf}/GeoLite2-City.mmdb | GeoIP2Helper:81 |
groupNameTranslationList | Empty list | - | MasterServer:6849 |
historyRepository | true | yes | MasterServer:903 |
hostCheckScheduler | true | no | MasterServer:940 |
hostoutputs | null (no reader fallback) | ${master.data}/hostoutputs | MasterServer:299 |
liveTransferMonitoringForceEnabled | false | - | MasterServer:874 |
mailRepository | true | ${mail.activated} | MasterServer:925 |
mailSubjectTag | getRoot() | - | MasterServer:826; ECpdsPlugin:176 |
maxIncomingConnections | 10 | - | ECtransOptions:1750 |
monitoring | Empty string | https://${Login[hostName]} | MasterServer:7001 |
monitoringTaskScheduler | No direct literal reader; template entry | no | Template:115 |
moverAvailabilityScheduler | true | - | MasterServer:1049 |
notificationRepository | true | yes | MasterServer:933 |
notifyLocalContainer | true | no | MasterServer:799 |
portalBytesScheduler | true | - | MasterServer:1038 |
portalTrafficScheduler | true | - | MasterServer:1031 |
providerMBeanTimeout | 120000 | 180000 | ECaccessProvider:550 |
proxyHostRepository | true | - | MasterServer:896 |
proxyScheduler | true | - | MasterServer:989 |
purgeScheduler | true | - | MasterServer:1003 |
replicateScheduler | true | yes | MasterServer:975 |
sendMailNotificationsForTransfers | true | - | MasterServer:822 |
systemTopologyProbeTimeout | 3000 ms (duration fallback) | - | ManagementImpl:147 |
testPhrase | Test transfer file | - | MasterServer:9136 |
ticketRepository | true | yes | MasterServer:882 |
transferRepository | true | yes | MasterServer:889 |
transferScheduler | true | yes | MasterServer:875 |
useDataProxy | No direct literal reader; template entry | no | Template:122 |
[SessionCache]¶
Shared session cache logging and minimum pause (milliseconds). Debug frequency is a diagnostic event-count interval.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
activityLogger | true | - | SessionCache:84 |
debug | false | - | SessionCache:90 |
debugFrequency | 1000000 | - | SessionCache:81 |
minimumPause | 15000 | - | SessionCache:87 |
[SocketConfig]¶
Defaults for sockets. Buffers are bytes (-1 leaves OS defaults), timeouts are milliseconds, backlog is pending connections, and keepAlive is TCP keepalive rather than application connection pooling. Named socket sections override these values; see the complete named-option list below.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
backLog | 100 | 10000 | SocketConfig:158 |
connectTimeOut | 15000 | 30000 | SocketConfig:155 |
host | null (no reader fallback) | - | SocketConfig:173 |
interruptible | false | no | SocketConfig:170 |
keepAlive | null (no reader fallback) | yes | SocketConfig:161 |
listenAddress | null (no reader fallback) | ${Login[externalAddress]} | SocketConfig:140 |
maxPrivilegedPort | 1023 | - | SocketConfig:89 |
minPrivilegedPort | 500 | - | SocketConfig:86 |
port | -1 | - | SocketConfig:176 |
privilegedLocalPort | false | - | SocketConfig:137 |
publicAddress | null (no reader fallback) | ${Login[externalAddress]} | SocketConfig:143 |
receiveBufferSize | -1 | -1 | SocketConfig:146 |
reuseAddress | null (no reader fallback) | - | SocketConfig:167 |
sendBufferSize | -1 | -1 | SocketConfig:149 |
serverPort | 0 | - | SocketConfig:179 |
soTimeOut | 86400000 | 86400000 | SocketConfig:152 |
tcpNoDelay | null (no reader fallback) | - | SocketConfig:164 |
trace | true | no | SocketConfig:131 |
[SshPlugin]¶
SSH/SFTP listener and server identity. keyPairsDir stores host keys, banner is a file path and softwareVersion is the advertised server string. maxConcurrentSessions=0 means unlimited. hidden controls virtual-domain visibility.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
hidden | Empty list | - | MinaFileSystemAccessor:783; MinaFileSystemAccessor:1069 |
[StoragePolicy]¶
Storage lifecycle worker. batchSize counts files, maxRelatedTransfers bounds related records and other timing settings are durations. enabled is opt-in; existing ENFORCE policies take effect when enabled. See the lifecycle policy guide before activation.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
batchSize | 100 | 100 | StorageLifecycleScheduler:121 |
enabled | false | no | StorageLifecycleScheduler:86 |
interval | 30000 ms (duration fallback) | 30s | StorageLifecycleScheduler:80 |
jammedTimeout | 600000 ms (duration fallback) | - | StorageLifecycleScheduler:81 |
maxRelatedTransfers | 10000 | 10000 | StorageLifecycleScheduler:170 |
maxUsageAge | 120000 ms (duration fallback) | - | MasterServer:3552 |
stepBudget | 10000 ms (duration fallback) | 10s | StorageLifecycleScheduler:128 |
timeRanges | Empty list | - | StorageLifecycleScheduler:82 |
[StorageRepository]¶
Asynchronous persistence. *Size means storage-worker thread count, not queue capacity or batch size. *Delay, idle waits and ticket timeouts are milliseconds. *MaxAuthorisedSize caps repository entries (0 leaves the cap unset). Options only apply to repository types instantiated by this process.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
eventDelay | 30000 | 1000 | MasterServer:8095 |
eventMaxAuthorisedSize | 0 | - | MasterServer:8096 |
eventSize | 5 | 15 | MasterServer:8094 |
historyDelay | 30000 | 1000 | MasterServer:7909 |
historyMaxAuthorisedSize | 0 | - | MasterServer:7910 |
historySize | 5 | 15 | MasterServer:7908 |
notificationDelay | 1000 | 45000 | MasterServer:8806 |
notificationSize | 5 | 25 | MasterServer:8805 |
providerDelay | 30000 | 1000 | ECaccessProvider:509 |
providerSize | 0 | 5 | ECaccessProvider:508 |
proxyHostDelay | 15000 | - | MasterServer:8657 |
proxyHostSize | 2 | - | MasterServer:8656 |
storageRepositoryDelay | 3600000 | 45000 | StorageRepository:159 |
storageThreadDelay | 15000 | 45000 | StorageThread:126 |
ticketDelay | 60000 | 45000 | TicketRepository:61 |
ticketSize | 0 | 1 | TicketRepository:60 |
ticketTimeOut | 18000000 | - | TicketRepository:62 |
ticketTimeOutAfterCompletion | 180000 | - | TicketRepository:63 |
transferDelay | 250 | 1000 | MasterServer:7761 |
transferSize | 5 | 25 | MasterServer:7760 |
[StreamPlug]¶
Shared stream-copy buffer size in bytes.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
buffSize | 65536 | - | StreamPlugThread:60 |
[TOTP]¶
OTP authentication provider configuration, including token endpoint, separate password/passcode client credentials, grant type and expected HTTP status. active=false disables this provider path; the login-form selector does not enable it.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
active | false | - | TOTP:51 |
clientIdForPasscode | null (no reader fallback) | - | TOTP:63 |
clientIdForPassword | null (no reader fallback) | - | TOTP:57 |
clientSecretForPasscode | null (no reader fallback) | - | TOTP:66 |
clientSecretForPassword | null (no reader fallback) | - | TOTP:60 |
expectedStatus | 200 | - | TOTP:72 |
grantType | password | - | TOTP:69 |
url | null (no reader fallback) | - | TOTP:54 |
[ThreadService]¶
Shared thread runtime. Virtual threads are opt-in; debugThreadLocal enables thread-local diagnostics.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
allowVirtualThread | false | - | ThreadService:66 |
debugThreadLocal | false | - | ThreadService:69 |
[TransferScheduler]¶
Destination-dispatch concurrency and monitoring cache. poolSize=0 means unlimited destinations; queueSize is the pending-transfer fetch limit. delay is milliseconds, monitoringTimeout minutes and subscription frequency a duration.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
delay | 1000 | - | TransferScheduler:2143 |
monitoringCache | true | yes | TransferScheduler:2781 |
monitoringSubscribeFrequency | 600000 ms (duration fallback) | - | TransferScheduler:2958 |
monitoringTimeout | 10 | 10 | TransferScheduler:2811 |
poolSize | 400 | 0 | TransferScheduler:149 |
queueSize | 20 | 55 | TransferScheduler:152 |
[TransferServerProvider]¶
Mover-selection heuristics and usage updates. Update frequency is seconds; CV threshold and file-size penalty are dimensionless factors. Debug output helps inspect allocation decisions.
| Option | Code fallback when absent | Shipped value | Reader |
|---|---|---|---|
cvThreshold | 0.03 | - | TransferServerProvider:1433 |
debug | false | - | TransferServerProvider:2108 |
fileSizePenaltyFactor | 1.0 | - | TransferServerProvider:1439 |
startUsageUpdater | true | - | TransferServerProvider:1465 |
usageUpdaterFreqInSec | 2 | - | TransferServerProvider:1693 |
Named socket sections¶
SocketConfig.load reads the following keys from a component's named section. Common section names for this service are CallBack, RMIServerSocketFactory, RMIClientSocketFactory, ECpdsPlugin, FtpPlugin, FTPPassiveSocket, FTPActiveSocket, ProxySocket and ManagementEXEC; transfer/helper code can also use ECauthModule, FtpPASV, FtpPORT, FtpOPEN, HTTPSocketConfig, GCSSocketConfig, S3SocketConfig, WebDavModule, JSftp, TelnetWrapper and ECios. A transfer module or plugin must actually use that socket implementation for its settings to apply; Jetty HTTP listeners and third-party transfer clients do not automatically honour every low-level socket option.
Basic options inherit the values in [SocketConfig] shown above; the advanced TCP options from tcpCongestion onward default to unset and are read from the named section, not from the global [SocketConfig] defaults. Advanced options depend on OS/socket support. Caller-supplied addresses, ports and module/Host settings may override socket defaults.
| Option(s) | Meaning |
|---|---|
listenAddress | Local bind/source address. |
publicAddress | Advertised address, distinct from the local bind address. |
receiveBufferSize, sendBufferSize | Bytes; -1 leaves the OS default. |
soTimeOut | Read timeout in milliseconds; aliases soTimeout and timeOut are tried in that order when the preferred spelling is absent. |
connectTimeOut | Connection timeout in milliseconds. |
backLog | Pending incoming-connection queue length. |
keepAlive | TCP keepalive switch. |
tcpNoDelay | TCP_NODELAY switch. |
reuseAddress | SO_REUSEADDR switch. |
interruptible | Use the interruptible socket implementation. |
privilegedLocalPort | Allocate a local source/listening port from the configured local range. |
minPrivilegedPort, maxPrivilegedPort | Inclusive local-port range; inherited base defaults are 500 and 1023. |
trace | Socket diagnostics. |
host, port | Default remote endpoint when the caller does not supply one. |
serverPort | Local listening port; 0 requests an automatically assigned port. |
tcpCongestion | Congestion-control algorithm name. |
soMaxPacingRate | Maximum socket pacing rate, bytes/s. |
tcpMaxSegment | Maximum TCP segment size, bytes. |
tcpTimeStamp | TCP timestamps switch. |
tcpWindowClamp | TCP receive-window clamp, bytes. |
tcpKeepAliveTime | Idle time before keepalive probes, seconds. |
tcpKeepAliveInterval | Time between keepalive probes, seconds. |
tcpKeepAliveProbes | Keepalive probe count. |
tcpLingerEnable | Enable linger-on-close. |
tcpLingerTime | Linger timeout, seconds. |
tcpUserTimeout | Maximum unacknowledged-data time, milliseconds. |
tcpQuickAck | TCP quick-acknowledgement switch. |
Master-managed maps¶
These sections accept names determined by users, services or network addresses, so there is no finite list of key names:
| Section / key pattern | Default when absent | Meaning |
|---|---|---|
[API] <clientId> | Empty definition | Startup API client provisioning: secret:service-name-regex. Treat values as credentials, not public examples. |
[Services] <serviceName> | Service unavailable | External execution endpoint in host:port form. Uses [ManagementEXEC] socket settings. |
[Restricted] <user> | No configured root restriction | Comma-separated regular expressions matched against the connecting root's resolved hostname. |
[Roots] <user> | Empty value | Static authentication credential for that user; not a filesystem-root path. Keep this secret. |
[NetworkWeatherRelay] <sourceId> | No approved relay mapping | Active Proxy Host ID approved to relay that Network Weather source. |
[GeoIP] forced.<address-or-prefix> | Normal GeoIP resolution | Forced latitude,longitude,region,country,city for matching addresses. |
[DestinationTypes] <position>.<id>.<category> | Built-in Destination types | Additional Destination type labels, in position.id.category=label form. |
Forced GeoIP entries are checked before database lookup. Local/private addresses otherwise skip GeoIP lookup; this does not prevent name resolution. See Live Earth monitoring.
FTP mapping and per-user families¶
| Section / key pattern | Default when absent | Meaning |
|---|---|---|
[FtpPlugin] restrict.<user> | No prefix restriction | Require the client's textual IP address to start with the configured prefix. This is not CIDR syntax. |
[FtpAliases] <domain> | Empty list | Alias list for the selected virtual domain. |
[FtpDomainList] <domain> | No mapping; * is the fallback | Virtual domain to backing-domain mapping. |
[FtpModuleList] <extension> | Default * module list | Extension-specific FTP module definitions. |
[Filter] pre.out.<name> | No direct reader in current sources | Retained template definitions for file-to-file filter commands using $1 and $2 paths. |
[Filter] fly.out.lbzip2, fly.in.lbzip2, fly.out.zstd, fly.in.zstd | No configured command | Streaming compression/decompression commands. |
Streaming filter executables must be installed on the machine executing them. Adding a definition does not apply it to every transfer; the current stream manager selects the named lbzip2 or zstd command when using that format.
Plugin and module families¶
[PluginList] is an open map of plugin names to definitions:
The library path and per-plugin options depend on the plugin. Server plugins support maxConnections and inverseResolution; deleting or adding a plugin definition changes which services start. These are options inside the value, not new top-level ecmwf.properties groups. See Plugin Infrastructure.
[ECtrans] is an open family of global transfer-option defaults, with keys module.option (for example, ftp.passive). Its option set is defined by ECtransOptions and the selected module, not a fixed list of literal Cnf keys. Entity/transfer setup values can override these defaults. The complete option/default references are:
- ECtrans common options and the protocol pages under Transfer Modules.
- Host options, Destination options, Web User options and Data User options.
These entity options are not interchangeable with service sections. Some options are only meaningful for a particular module or execution role.