Skip to content
Snippets Groups Projects
background_updates.md 1.84 KiB
Newer Older
  • Learn to ignore specific revisions
  • # 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:
    
    ```json
    {
        "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 allow 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:
    
    ```json
    {
        "enabled": false
    }
    ```
    
    `enabled` sets whether the background updates are enabled or disabled.
    
    The API returns the `enabled` param.
    
    ```json
    {
        "enabled": false
    }
    ```
    
    There is also a `GET` version which returns the `enabled` state.