nautechsystems/nautilus_trader · error
catalog replay loading for {data_cls} is not supported
Error message
catalog replay loading for {data_cls} is not supported What it means
load_slice in the catalog replay loader dispatches on the data class (data_cls) and only supports the implemented catalog record types; any other class string hits the catch-all and bails. It means replay from catalog for that data type is not implemented.
Source
Thrown at crates/event_store/src/replay/catalog.rs:108
start,
end,
None,
files,
false,
)?,
)),
"bars" => Ok(catalog_replay_records(
self.catalog.query_typed_data::<Bar>(
identifiers,
start,
end,
None,
files,
false,
)?,
)),
data_cls => {
anyhow::bail!("catalog replay loading for {data_cls} is not supported")
}
}
}
}
fn catalog_replay_records<T>(records: Vec<T>) -> Vec<CatalogReplayRecord>
where
T: Into<CatalogReplayData>,
{
records
.into_iter()
.map(Into::into)
.map(CatalogReplayRecord::from_data)
.collect()
}
#[cfg(test)]
mod tests {View on GitHub (pinned to 18893faf8b)
Solutions
- Use one of the supported catalog replay data classes for replay
- Implement a match arm in load_slice for the needed data class (read files via the existing catalog helpers and map through catalog_replay_records)
- Fix the data_cls string in your replay config to the exact supported name
Example fix
// before
replay.load_slice("MyQuotes", start, end, ...)?
// after
// implement:
data_cls @ "MyQuotes" => Ok(catalog_replay_records(read_myquotes_files(files)?)),
// or use a supported class:
replay.load_slice("QuoteTick", start, end, ...)? Defensive patterns
Strategy: try-catch
Validate before calling
const SUPPORTED: &[&str] = &["QuoteTick", "TradeTick", "Bar", ...];
assert!(SUPPORTED.contains(&data_cls), "catalog replay unsupported for {data_cls}"); Try / catch
match load_slice(data_cls, ...) {
Err(e) if e.to_string().contains("is not supported") => eprintln!("fallback: replay {data_cls} via raw reader"),
other => other?,
} Prevention
- Check the supported data-class list in the replay catalog loader before configuring replay
- Keep writer and loader class registries in sync when adding data types
- Validate data_cls strings in config at startup
When it happens
Trigger: Requesting a catalog replay load_slice with a data_cls for which no match arm exists (an unimplemented/unsupported data class), e.g. a newer data type not yet wired into the replay loader.
Common situations: Running replay with a data type the event store's catalog loader doesn't cover; upgrading the writer to produce a new catalog class while the replay loader lags behind; typo'd data class string in configuration.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- catalog marker join plan failed for {data_cls}: {error}
- catalog marker join load failed for {data_cls}: {error}
- Binance Futures does not support second-level kline interval
- Binance Futures does not support {a:?} aggregation
- BitMEX does not support {}-{:?}-{:?} bars
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/d640259b0869f334.
Report an issue: GitHub.