> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cube.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Refreshing pre-aggregations

> Refresh worker responsibilities, key environment variables for scheduled builds, and troubleshooting when refresh intervals fall behind.

*Pre-aggregation refresh* is the process of building pre-aggregations and updating
them with new data. Pre-aggregation refresh is the responsibility of the *refresh
worker*.

## Configuration

You can use the following environment variables to configure the refresh worker
behavior:

* [`CUBEJS_REFRESH_WORKER`](/reference/configuration/environment-variables#cubejs_refresh_worker) (see also [`CUBEJS_PRE_AGGREGATIONS_BUILDER`](/reference/configuration/environment-variables#cubejs_pre_aggregations_builder))
* [`CUBEJS_PRE_AGGREGATIONS_SCHEMA`](/reference/configuration/environment-variables#cubejs_pre_aggregations_schema)
* [`CUBEJS_SCHEDULED_REFRESH_TIMEZONES`](/reference/configuration/environment-variables#cubejs_scheduled_refresh_timezones)
* [`CUBEJS_DB_QUERY_TIMEOUT`](/reference/configuration/environment-variables#cubejs_db_query_timeout)
* [`CUBEJS_REFRESH_WORKER_CONCURRENCY`](/reference/configuration/environment-variables#cubejs_refresh_worker_concurrency) (see also [`CUBEJS_CONCURRENCY`](/reference/configuration/environment-variables#cubejs_concurrency))
* [`CUBEJS_SCHEDULED_REFRESH_QUERIES_PER_APP_ID`](/reference/configuration/environment-variables#cubejs_scheduled_refresh_queries_per_app_id)
* [`CUBEJS_DROP_PRE_AGG_WITHOUT_TOUCH`](/reference/configuration/environment-variables#cubejs_drop_pre_agg_without_touch)
* [`CUBEJS_PRE_AGGREGATIONS_BACKOFF_MAX_TIME`](/reference/configuration/environment-variables#cubejs_pre_aggregations_backoff_max_time)

## Pre-aggregation data source

By default, each data source builds and stores its pre-aggregations using its own
connection. You can instead point a data source's pre-aggregations at a dedicated
connection by adding a `PRE_AGGREGATIONS` segment to its environment variables. When
set, that source's pre-aggregations are built on and read from the dedicated
connection rather than the source's own.

Use the `CUBEJS_PRE_AGGREGATIONS_DB_*` variables for the default data source, and the
`CUBEJS_DS_<NAME>_PRE_AGGREGATIONS_DB_*` variables for a [named data
source][ref-multiple-data-sources]:

```dotenv theme={"dark"}
# Default data source
CUBEJS_DB_TYPE=postgres
CUBEJS_DB_HOST=localhost

# Dedicated pre-aggregation data source for the default data source
CUBEJS_PRE_AGGREGATIONS_DB_TYPE=postgres
CUBEJS_PRE_AGGREGATIONS_DB_HOST=preagg-host

# A named data source and its dedicated pre-aggregation data source
CUBEJS_DATASOURCES=default,analytics
CUBEJS_DS_ANALYTICS_DB_TYPE=postgres
CUBEJS_DS_ANALYTICS_DB_HOST=remotehost
CUBEJS_DS_ANALYTICS_PRE_AGGREGATIONS_DB_TYPE=postgres
CUBEJS_DS_ANALYTICS_PRE_AGGREGATIONS_DB_HOST=analytics-preagg-host
```

The `PRE_AGGREGATIONS` variant supports the same connection variables as the regular
`CUBEJS_DB_*` / `CUBEJS_DS_<NAME>_DB_*` data source variables (for example `_DB_TYPE`,
`_DB_HOST`, `_DB_PORT`, `_DB_USER`, `_DB_PASS`, and `_DB_SSL`).

## Troubleshooting

### `Refresh scheduler interval error`

Sometimes, you might come across the following error:

```json theme={"dark"}
{
  "message": "Refresh Scheduler Interval Error",
  "error": "Previous interval #2 was not finished with 60000 interval"
}
```

It indicates that your refresh worker is overloaded. You probably have a lot of
[tenants][ref-multitenancy], a lot of [pre-aggregations][ref-preaggs] to refresh,
or both.

If you're using [multitenancy][ref-multitenancy], you'd need to deploy several Cube
clusters (each one per a reduced set of tenants) so there will be multiple refresh
workers which will work only on a subset of your tenants.

If you're using Cube Cloud, you can use a [Multi-cluster deployment][ref-production-multi-cluster]
that would automatically do this for you.

[ref-multitenancy]: /embedding/multitenancy

[ref-preaggs]: /docs/pre-aggregations/using-pre-aggregations

[ref-production-multi-cluster]: /admin/deployment/deployment-types#multi-cluster

[ref-multiple-data-sources]: /admin/connect-to-data/multiple-data-sources
