Background Updates API

This API allows a server administrator to manage the background updates being run against the database.

Status

This API gets the current status of the background updates.

The API is:

GET /_synapse/admin/v1/background_updates/status

Returning:

{
    "enabled": true,
    "current_updates": {
        "<db_name>": {
            "name": "<background_update_name>",
            "total_item_count": 50,
            "total_duration_ms": 10000.0,
            "average_items_per_ms": 2.2,
        },
    }
}

enabled whether the background updates are enabled or disabled.

db_name the database name (usually Synapse is configured with a single database named 'master').

For each update:

name the name of the update. total_item_count total number of "items" processed (the meaning of 'items' depends on the update in question). total_duration_ms how long the background process has been running, not including time spent sleeping. average_items_per_ms how many items are processed per millisecond based on an exponential average.

Enabled

This API allows pausing background updates.

Background updates should not be paused for significant periods of time, as this can affect the performance of Synapse.

Note: This won't persist over restarts.

Note: This won't cancel any update query that is currently running. This is usually fine since most queries are short lived, except for CREATE INDEX background updates which won't be cancelled once started.

The API is:

POST /_synapse/admin/v1/background_updates/enabled

with the following body:

{
    "enabled": false
}

enabled sets whether the background updates are enabled or disabled.

The API returns the enabled param.

{
    "enabled": false
}

There is also a GET version which returns the enabled state.

Run

This API schedules a specific background update to run. The job starts immediately after calling the API.

The API is:

POST /_synapse/admin/v1/background_updates/start_job

with the following body:

{
    "job_name": "populate_stats_process_rooms"
}

The following JSON body parameters are available:

  • job_name - A string which job to run. Valid values are:
    • populate_stats_process_rooms - Recalculate the stats for all rooms.
    • regenerate_directory - Recalculate the user directory if it is stale or out of sync.