Configuration Reference¶
Every customer-facing Flow Scheduler and high-availability setting, with where it is set, its default, what it does and whether a restart is needed.
How to read this page¶
Flow Scheduler settings are changed in MetaMiner Administrator (MMA) under Tools > FSS Configuration... > Properties. The tables show keys without their prefix; in files they are written as flowscheduler.<key>, for example flowscheduler.max.concurrent.per.env=5.
| Item | Rule |
|---|---|
| Restart | Restart the Flow Scheduler (MetaMinerFSS service) after changing any setting on this page, unless the table says No restart or MMS restart. Do this even when MMA does not show "(restart required)". |
| Scope Shared | In high availability, change it once, on the preferred node. The other nodes take the value and apply it at their next Flow Scheduler restart. MMA refuses the change on any other node. |
| Scope Per node | Set it on each node. It is never copied to other nodes. |
| Precedence | A value given as a -D Java option or in MetaMinerServer.properties overrides the value saved in MMA and stays fixed until the next restart. Keep Flow Scheduler settings in MMA. |
On a single node (no high availability) the scope column does not matter: every setting is set on that node.
The Properties tab also lists internal tuning keys that this page does not describe. Leave them at their defaults.
Service¶
| Key | Default | Where set | Effect |
|---|---|---|---|
enabled |
off | MMA Preferences > Settings > General, group Flow Scheduler, Enable Flow Scheduler (FSS) (stored in server\MetaMinerServer.properties) |
Turns the Flow Scheduler on with the next MetaMiner start. Clearing the box stops a running Flow Scheduler at once. Set on each node. |
port |
49716 |
Service configuration | Port the Flow Scheduler listens on. Do not change it without Infolytik Support. |
bind.address |
127.0.0.1 |
Per node | Address the Flow Scheduler listens on. Keep the default; only MMS on the same host needs to reach it. |
scheduler.enabled |
true |
Shared | false stops all scheduled and catch-up firing; the web interface and API keep working. |
notifications.enabled |
false |
Shared | Master switch for task notification e-mail. |
subscriptions.enabled |
true |
Shared | Master switch for flow subscriptions. |
runcommand.enabled |
true |
Shared | Queues Run Now requests in the database so any node can accept them. |
Scheduler¶
All Shared.
| Key | Default | Effect |
|---|---|---|
max.concurrent.per.env |
5 |
How many runs are submitted to one Tableau environment at the same time. Limits the submission burst, not the number of flows running on Tableau. |
schedule.sync.minutes |
5 |
How often the Admin Calendar projection is refreshed. |
auto.disable.after.failures |
5 |
Consecutive failed runs after which a task is disabled. 0 = never. |
auto.disable.count.partial.output |
false |
true counts runs where some output steps failed toward automatic disable. |
job.timeout.hours |
4 |
A run still running this long after Tableau started it is marked failed in the Flow Scheduler. Tableau is not stopped. Time in the Tableau queue is not counted. |
Startup and recovery¶
All Shared.
| Key | Default | Effect |
|---|---|---|
startup.catchup.enabled |
true |
After a Flow Scheduler start, run missed slots. |
startup.catchup.window.minutes |
60 |
Oldest missed slot that startup catch-up still runs (one per task). |
mms.retry.window.minutes |
60 |
How long a scheduled run waits for an unreachable MMS before it is recorded as failed to start. |
mms.retry.backoff.initial.seconds |
30 |
First wait between MMS retries for a chain step. |
mms.retry.backoff.max.seconds |
300 |
Longest wait between MMS retries for a chain step. |
tableau.availability.gate.enabled |
true |
Hold scheduled runs while Tableau Server is down instead of failing them. |
tableau.availability.check.seconds |
30 |
How often a down environment with held runs is checked. |
recovery.window.hours |
4 |
A held or missed run is started only if the next scheduled run is more than this far away; otherwise it is skipped. |
Run tracking¶
All Shared.
| Key | Default | Effect |
|---|---|---|
tableau.repo.direct |
true |
Read run status from the Tableau repository when the environment has a repository connection configured in MMA. |
vizportal.adopt.window.sec.default |
600 |
How long the Flow Scheduler looks for the Tableau job after submitting a flow. Range 120-1800. |
vizportal.adopt.window.sec.<envId> |
not set | Same as above for one environment. No restart. |
vizportal.status.poll.sec |
10 |
How often each running job is polled. |
vizportal.lostvisibility.timeout.sec |
1800 |
After this long without seeing a tracked job, the run is marked LOST_VISIBILITY. |
vizportal.lostvisibility.disable_threshold |
10 |
Consecutive LOST_VISIBILITY runs after which a task is disabled. 0 = never. Counted separately from auto.disable.after.failures. |
Notifications¶
| Key | Default | Scope | Effect |
|---|---|---|---|
notifications.delivery.enabled |
true |
Shared | false pauses sending; queued e-mails wait. Also pauses subscription e-mail. |
notifications.dispatch.throttle.window.minutes |
5 |
Shared | Repeats of the same event for the same run within this window send one e-mail. |
notifications.subject.prefix |
[FlowScheduler] |
Shared | Text in front of every subject. |
notifications.fss.external.url |
empty | Per node | Public address of the web interface, used for links in e-mails. Empty = no links. In high availability, use the load balancer address. |
notifications.smtp.config.cache.minutes |
5 |
Shared | How long the SMTP settings read from MMS are kept. |
notifications.smtp.send.deadline.ms |
30000 |
Shared | Longest time for one SMTP transaction. |
notifications.smtp.connect-timeout.ms |
10000 |
Shared | SMTP connect timeout. |
notifications.smtp.read-timeout.ms |
15000 |
Shared | SMTP read timeout. |
notifications.smtp.write-timeout.ms |
15000 |
Shared | SMTP write timeout. |
notifications.sweeper.interval.seconds |
5 |
Shared | How often queued e-mails are sent. |
notifications.delivery.pool.size |
4 |
Shared | Parallel SMTP senders. |
env.failure.notify.throttle.sec |
21600 |
Shared | Minimum time between admin alerts about the same environment's Tableau back end (6 hours). |
The SMTP server, port, sender and login come from MMA Preferences > Settings > Email. To trust a mail server certificate that Java does not trust, the Java option -Dflowscheduler.notifications.smtp.ssl.trust=<smtp-host> can be added to the Flow Scheduler service; ask Infolytik Support, because the service configuration must not be edited without them.
Subscriptions¶
All Shared.
| Key | Default | Effect |
|---|---|---|
subscriptions.attachment.enabled |
true |
Service-wide switch for data attachments. Each environment also has its own switch. |
subscriptions.attachment.max.bytes |
26214400 (25 MB) |
Largest attachment. The smaller of this and the environment's limit applies. |
subscriptions.attachment.review.threshold.bytes |
5242880 (5 MB) |
Larger outputs are sent as a link plus a note instead of an attachment. |
subscriptions.group.expansion.max |
500 |
Most members one Tableau group expands to. |
subscriptions.group.cache.ttl.seconds |
300 |
How long group membership is cached. 0 = no cache. |
subscriptions.suspension.history.count |
5 |
Failures listed in a suspension notice. |
notifications.mms.output.read-timeout.ms |
45000 |
How long the Flow Scheduler waits for output data before sending without it. |
Run Now¶
All Shared.
| Key | Default | Effect |
|---|---|---|
runcommand.claim.interval.seconds |
3 |
How often queued Run Now requests are picked up. |
runcommand.max.attempts |
3 |
Retries of a Run Now request after a temporary failure. |
runcommand.retention.days |
7 |
How long finished Run Now requests are kept. |
Retention¶
All Shared.
| Key | Default | Effect |
|---|---|---|
runs.retention.enabled |
false |
Turns on the automatic purge of old run history and e-mail records. Off = history is kept indefinitely. |
runs.retention.days |
180 |
Finished runs older than this are purged. |
runs.retention.batch.size |
10000 |
Rows deleted per batch. |
runs.retention.max.backup.age.days |
14 |
A purge runs only while a full backup of the leader node newer than this exists. |
notifications.retention.days |
180 |
E-mail records older than this are purged. 0 = keep. |
Backup¶
All Per node: each node backs itself up and its backup settings are never copied to other nodes. See Backup and Restore.
| Key | Default | Effect |
|---|---|---|
backup.enabled |
false |
Turns on the scheduled backup of the Flow Scheduler database schema and this node's configuration files. |
backup.cron |
0 0 22 ? * SAT |
When the scheduled backup runs (Quartz cron; Saturday 22:00). |
backup.dir |
backups |
Backup folder. Relative paths are under the server folder; an absolute path or a UNC share is allowed. |
backup.db.dump.scope |
all-nodes |
all-nodes = every node dumps the database. leader-only = only the leader does; a standby writes a configuration-only backup. |
backup.retention |
8 |
Backups kept per node. 0 = unlimited. |
backup.timeout.minutes |
60 |
A backup running longer fails. |
backup.pgtools.dir |
empty | Folder of the PostgreSQL client tools (pg_dump, pg_restore): the tools root or its bin folder. Needed when the database runs on a PostgreSQL version newer than the shipped tools. |
backup.include.keyfile |
true |
Include the key needed to restore an encrypted configuration. It is written only when a restrictive folder ACL can be set. |
backup.keyfile.allow.unverified.acl |
false |
true writes the key even when the folder ACL cannot be verified (for example on some UNC shares). |
Calendar and load¶
All Shared.
| Key | Default | Effect |
|---|---|---|
calendar.window.days |
45 |
How far ahead the Admin Calendar projects firings. |
delay.heatmap.lookback.days |
90 |
History used for the wait heatmap. |
calendar.queue.delay.fudge.seconds |
300 |
Padding for Tableau queue delay in the Calendar. |
loadmon.enabled |
true |
Turns on the Admin Load panel. |
loadmon.window.default.min |
720 |
Default Load window (12 hours). |
loadmon.retention.days |
45 |
Days of load history kept. |
loadmon.capacity.display.enabled |
false |
true shows backgrounder capacity figures and the capacity override on the Load panel. |
Display¶
All Shared. No restart: e-mails use the new value from the next one sent, the web interface on the next page load.
| Key | Default | Effect |
|---|---|---|
ui.app.title |
Flow Scheduler |
Heading of the web interface. |
ui.browser.title |
MetaMiner - Flow Scheduler |
Browser tab title. |
email.app.name |
MetaMiner Flow Scheduler |
Product name in e-mails. |
ui.column.labels |
empty | Renames column headers: Current=New pairs separated by ;. |
ui.theme.tableau |
true |
Tableau-style look; false = classic look. |
High availability¶
Set ha.lease.enabled and mms.url.local on each node in MMA. Change every other setting once, on the preferred node. Do not put these keys in MetaMinerServer.properties. Steps: Set Up High Availability.
| Key | Default | Scope | Effect |
|---|---|---|---|
ha.lease.enabled |
false |
Set on each node | Turns on leader and standby mode. Off = the node does everything (single-node behaviour). |
ha.node.id |
host name | Per node | This node's name on HA / Nodes and in events. Must be unique per node. |
mms.url.local |
not set (this node's MMS) | Per node | Address of this node's own MMS. |
ha.lease.ttl.seconds |
30 |
Shared | How long the lease stays valid without renewal; sets the takeover time after a crash. Range 5-300. |
ha.heartbeat.seconds |
10 |
Shared | How often the leader renews the lease. Keep it well below the TTL. |
ha.status.heartbeat.seconds |
10 |
Shared | How often each node reports its status. |
ha.leader.mms.failover.enabled |
true |
Shared | The leader hands over when its own MMS is down. |
ha.leader.mms.grace.seconds |
30 |
Shared | How long the leader's MMS must be down before it hands over. |
ha.preferred.failback.enabled |
true |
Shared | Move leadership back to the preferred (starred) node. Has no effect until a node is starred. |
ha.preferred.stable.seconds |
60 |
Shared | How long the preferred node must be healthy before failback. |
ha.alert.email.enabled |
true |
Shared | E-mail on cluster events. |
ha.alert.email.to |
not set | Shared | Comma-separated alert recipients. Blank = the support recipients in the MMA e-mail settings. |
ha.alert.email.events |
BECAME_LEADER,NODE_OFFLINE,LEADER_MMS_DOWN |
Shared | Events that send an alert. Others: BECAME_STANDBY, HANDOVER_REQUESTED, NODE_ONLINE. |
ha.alert.email.throttle.seconds |
60 |
Shared | Repeat alerts for the same node and event within this window are suppressed. |
config.sync.enabled |
true |
Per node | Shares settings between nodes once a preferred node is starred. Off = this node neither sends nor takes shared settings. |
config.sync.interval.seconds |
30 |
Per node | How often this node looks for settings changed on the preferred node. |
credsync.enabled |
true |
Per node | A Tableau credential change made through the credentials API on one node is applied on this node too. |
credsync.interval.seconds |
5 |
Shared | How often a node looks for credential changes made on another node. |
credsync.delivery.ttl.hours |
24 |
Shared | How long a credential change waits for a node that is down. A node back within this time applies it; after that, call the API on that node. See Tableau Credentials API. |
MetaMiner Server settings¶
These are read by MMS, not by the Flow Scheduler. Set them in server\MetaMinerServer.properties on each MMS node, then restart MMS (MMS restart).
| Key | Default | Effect |
|---|---|---|
flowscheduler.redirect.root |
not set | true sends / to /flowscheduler/. |
flowscheduler.auth.pat.enabled |
false |
Offers Personal Access Token sign-in. See Sign-In Options. |
flowscheduler.show.all.flows.enabled |
false |
Shows the Show all control, which switches between all flows and only the flows you may run. |
flowscheduler.output.vds.max.answer.mb |
300 |
Largest predicted export size (MB) for flow output read from Tableau Server versions before 2026.1. See Subscriptions and Output. |
mms.credentials.cluster.sync |
true |
A Tableau credential change made through the credentials API reaches every node. false = only the node called is changed. |
mms.credentials.cluster.wait.seconds |
30 |
How long a credentials API call waits for the other nodes to report. |
The REST API authorization mode (mms.api.auth, shown in MMA as Local only or API clients) is set in MMA and is described on Authorization Modes.