## TL;DR
Force a cache invalidation for the affected charts first, then check the cache timeout settings on the charts and the instance. Preset, built on Apache Superset, caches chart results aggressively, and a long cache timeout or a cache key that ignores a filter change leaves viewers seeing an old result set while the database already holds new rows. A forced refresh proves the cache is the layer at fault.

```text
Preset chart cache stale: dashboard shows old data refresh failed error fix
```

## Use this when
- The database shows new rows but the dashboard keeps showing the previous result.
- A manual force refresh on one chart fixes that chart while others stay stale.
- The staleness window matches a round cache timeout such as an hour or a day.

## Not for this skill when
- A direct query in SQL Lab also returns old data. The problem is upstream of the cache, in the data pipeline.
- The chart errors instead of showing old data. That is a query or permission failure, not caching.

## Steps
1. Open the stale chart and check its result information for a cached timestamp, then run a force refresh. Verify: the chart updates to current data after the forced refresh
2. Review the cache timeout set on the chart and any instance level default that overrides it. Verify: the effective timeout is identified and matches the observed staleness window
3. Lower the timeout for fast changing dashboards or disable caching on the charts that must always be live. Verify: the saved chart settings show the new timeout
4. Check whether a dashboard filter change produces a different result or the same cached one, and correct any cache key behaviour your deployment controls. Verify: two different filter selections return their own correct results
5. Confirm the dataset itself refreshes its metadata and that scheduled cache warmers, if used, are running. Verify: the dataset last refreshed time is current
6. Reload the full dashboard as a viewer after the cache window passes and confirm all charts agree with a SQL Lab check. Verify: chart values match a direct query for the same filters

## Why it happens
Caching trades freshness for speed, and the trade is invisible until someone compares the dashboard with the source. The failure is rarely that caching exists, it is that the timeout was never chosen deliberately for the data in question. Setting freshness expectations per dashboard, and exposing the result timestamp to viewers, keeps the trade honest.

Preset and Superset separate the dataset query from the chart result cache. Dashboards can therefore be fast and wrong at the same time, serving a stored result until its cache entry expires or is invalidated. Cache behaviour also interacts with the dashboard filter state, so a result cached under one common filter set can be what every viewer sees. The chart data panel shows whether a result came from the cache and when it was generated.

Field notes for Superset and Preset specifically. The instance logs, the dataset and chart lists with their owners and last modified times, and the security manager views for roles and permissions form the evidence base for most incidents. Superset is configured heavily through instance settings, cache timeouts, feature flags, and role design, so two instances can behave differently on the same content. Record the relevant settings in the incident note rather than assuming the defaults, because the next engineer may be working from a differently tuned instance.

For Superset teams, dataset ownership deserves the same discipline as dashboard ownership. Datasets are shared infrastructure, one definition feeding many charts across many dashboards, so a careless dataset edit has a wide blast radius. Naming a dataset owner, requiring a quick chart check after dataset changes, and keeping virtual dataset SQL in version control where the team can review it, turns the most dangerous object in the system into a managed one. Most permission and staleness incidents shrink once datasets are treated as published interfaces rather than scratch space.
## Variants and edge cases
### Preset chart cache stale force refresh fix
The force refresh phrasing for the immediate repair.
### Superset dashboard shows old data cache timeout setting
The settings variant naming the timeout control.
### Preset dashboard not updating database has new rows
The comparison phrasing starting from the database check.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_oGU1MA65FButlkGJtU3LYQ
