The Maintenance Window
Infohub's built-in nightly maintenance — exactly what runs, in what order, the properties that govern it, and what to do when it fails.
Every night, Infohub stops itself and services its own database. Sites see the symptoms — engines down at 19:00, a burst of index activity, values pausing — without documentation of what is actually happening. This is what runs, verbatim from the platform's maintenance implementation.
What happens, in order#
At the configured hour (or on demand), the Platform coordinates a full stop: engines, message engines, integration engines, servers, data sources, notification servers, and consumers are all stopped — on every platform in the instance, the parent waiting for children to confirm. Then, with the system quiesced, it runs:
- Backup — the built-in database backup
- Update transition times
- Purge — value retention, per interval
- Reindex — fragmentation-driven index maintenance
- Update statistics
- Update freeze points
…then everything restarts. Each step's duration is recorded, which is what the maintenance activity you can observe is reporting.
Two operational consequences fall straight out of the design:
- Maintenance is a nightly outage by design. Collection pauses; late-night data arrives afterwards via refresh offsets. Schedule it accordingly (
MaintenanceTime), and never during a shift handover that reads live dashboards. - A failed step delays everything behind it. The classic morning-backlog pattern — "metrics behind every morning, caught up by noon" — is very often a reindex that runs long or fails, nightly.
The properties that govern it#
All are system properties (Flow Config → System):
| Property | Governs |
|---|---|
MaintenanceTime |
The hour maintenance runs |
MaintenanceRequest |
A one-off "run maintenance now/at time X" request |
MaintenanceTimeout |
Command timeout for the steps (minutes) |
Backup |
Whether the backup step runs |
Purge / PurgeAge / PurgeSize |
Whether/what the purge step removes |
PurgeMinutely … PurgeYearly |
Retention per interval type |
LockPurgeAge |
Retention of stale locks |
MediumFragmentationAction / HighFragmentationAction |
REORGANIZE/REBUILD per fragmentation band |
Statistics |
Whether statistics update runs |
The purge step obeys these properties without judgement. Per-interval purge ages apply to stored values. Two things to verify before enabling or tightening them: that your database backup retention outlives the purge ages (a purged value older than your oldest backup is gone absolutely), and that manually entered values in the affected ranges are accounted for — purge does not distinguish irreplaceable data. See Backup and Recovery.
Freeze points move here#
Step 6 is worth pausing on: maintenance advances freeze points. The freeze behaviour described in Interval Types and Time Schemes is not only a manual setting — the window maintains it. If old periods "stopped updating on their own", this is where it happened, by design.
When maintenance does not run#
The trigger condition is simple — last run before today, current hour past MaintenanceTime — but the coordination can fail: if not all platforms confirm shutdown, the run logs a warning and proceeds regardless; if the platform process was down across the window, the run happens when it next checks. Diagnosis order:
- Did it start? The engines-stopping activity at
MaintenanceTimeis visible in the Monitor and logs. No stop → check the property's value and that the Platform (Bootstrap) was actually up at that hour. - Did a step hang? A step exceeding
MaintenanceTimeoutfails that step; the durations recorded per step identify which. - Visibility changed after upgrade? Sites report seeing less step-by-step detail in newer versions' logs — the steps still run; confirm by duration records rather than by narrative log lines.
To force a run for testing, set MaintenanceRequest rather than waiting for the hour.
Index rebuild failures#
The reindex step reads each index's fragmentation and applies the configured action per band. Failures cluster in three causes:
- Time: rebuilding large value-table indexes inside the window on a big instance simply takes longer than the timeout. Options: raise
MaintenanceTimeout, setHighFragmentationActiontoREORGANIZE(resumable, lighter, less thorough), or move heavy index work to a DBA-run job outside Infohub and let Infohub's step handle the remainder. - Space: a REBUILD needs working space; a nearly-full data volume fails it nightly.
- Contention: something else scheduled in the same window (DBA jobs, backups at the SQL level). Coordinate — a site whose DBA policy owns maintenance should disable the overlapping Infohub steps (
Backupoff where the DBA backs up; keep whose-job-is-it explicit).
One site failing nightly while a smaller one succeeds is almost always the time cause — the difference is data volume, not configuration.
Division of labour with your DBA#
The window overlaps ordinary DBA work, and doubled maintenance is worse than either alone:
| Task | Infohub's step | Keep both? |
|---|---|---|
| Backup | Yes (Backup) |
No — pick one owner |
| Index maintenance | Yes | No — pick one; if the DBA owns it, tune Infohub's actions down |
| Statistics | Yes | No |
| Integrity checks (CHECKDB) | No | DBA must schedule — Infohub never does this |
See Database Maintenance for the DBA-side practice.