nautechsystems/nautilus_trader · error · anyhow::Error
Failed to determine ts_init range for {feather_path}: {e}
Error message
Failed to determine ts_init range for {feather_path}: {e} What it means
Wrapper in convert_feather_batches_to_parquet: computing the ts_init min/max range over the record batch failed (schema/type issue in the converted Feather data), and the error is re-wrapped with the offending Feather path for diagnosis.
Source
Thrown at crates/persistence/src/backend/catalog.rs:3992
&self,
data_name: &str,
feather_path: &str,
batches: Vec<RecordBatch>,
use_ts_event_for_ts_init: bool,
) -> anyhow::Result<()> {
let Some(batch) = Self::apply_stream_conversion_transforms(
batches,
use_ts_event_for_ts_init,
)
.map_err(|e| {
anyhow::anyhow!("Failed to apply stream conversion transforms for {feather_path}: {e}")
})?
else {
return Ok(());
};
let (start_ts, end_ts) = Self::ts_init_range(&batch).map_err(|e| {
anyhow::anyhow!("Failed to determine ts_init range for {feather_path}: {e}")
})?;
let identifier = Self::identifier_from_batch_or_path(&batch, data_name, feather_path);
let directory = if let Some(type_name) = data_name.strip_prefix("custom/") {
self.make_path_custom_data(type_name, identifier.as_deref())?
} else {
self.make_path(data_name, identifier.as_deref())?
};
let filename = timestamps_to_filename(UnixNanos::from(start_ts), UnixNanos::from(end_ts));
let path = PathBuf::from(format!("{directory}/{filename}"));
let object_path = self.to_object_path(&path.to_string_lossy())?;
let file_exists = self.execute_async(async {
let exists = self.object_store.head(&object_path).await.is_ok();
Ok::<_, anyhow::Error>(exists)
})?;
if file_exists {
log::info!("File {} already exists, skipping write", path.display());View on GitHub (pinned to 18893faf8b)
Solutions
- Verify the Feather file at the reported path is readable and was produced by a compatible NautilusTrader writer
- Check the batch schema has a valid ts_init column with the expected integer/timestamp type
- Re-export or re-convert the source data and retry the stream conversion
- Upgrade or align the persistence backend version if the batch schema is from an older data format
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at crates/persistence/src/backend/catalog.rs:3992 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/862dc8e1b0123ab3.
Report an issue: GitHub.