risingwavelabs/risingwave · error
delete file {} missing referenced_data_file
Error message
delete file {} missing referenced_data_file What it means
During delete-file partition backfill, the coordinator builds a map from each delete file to the data file it references. Each Iceberg delete file produced by the pk-index position-delete merger must carry a `referenced_data_file` property naming the data file it belongs to. If a delete file lacks that property, `pending_delete_files_by_referenced` cannot determine which partition to backfill it into and throws this error naming the offending file path.
Source
Thrown at src/meta/src/manager/iceberg_pk_index_sink/coordinator.rs:315
delete_files: serialized_delete_files,
overwrite_files: merged.overwrite_files,
};
// `add_data_files` order in `commit_one_epoch` is data files followed by
// delete files; keep that order here.
let mut materialized_add_files = data_files;
materialized_add_files.extend(delete_files);
Ok((merged, Some(materialized_add_files)))
}
}
pub fn pending_delete_files_by_referenced(
delete_files: &mut [DataFile],
) -> Result<HashMap<String, &mut DataFile>> {
let mut pending: HashMap<String, &mut DataFile> = HashMap::with_capacity(delete_files.len());
for f in delete_files.iter_mut() {
let referenced = f.referenced_data_file().ok_or_else(|| {
anyhow::anyhow!("delete file {} missing referenced_data_file", f.file_path())
})?;
if pending.contains_key(&referenced) {
anyhow::bail!(
"duplicate referenced data file {referenced} across pk-index delete files"
);
}
pending.insert(referenced, f);
}
Ok(pending)
}
/// Scan the table's current-snapshot data manifests, resolving pending delete-file
/// partitions as their referenced data files are found. Stops as soon as every pending
/// delete file has been resolved. Data-file references not present in the snapshot are
/// left in `pending` for the caller to report.
async fn probe_committed_data_files(
table: &Table,
pending: &mut HashMap<String, &mut DataFile>,View on GitHub (pinned to 6469eb736d)
Solutions
- Fix or re-run the upstream writer (PositionDeleteMerger) so every delete file is created with the `referenced-data-file` property populated.
- Check the RisingWave version that produced the pending sink-state rows; upgrade/restart the meta node so both writer and coordinator versions match.
- If a bad row is already persisted, delete/clean the sink state for the affected epoch and let the epoch re-commit from the writers' reports.
Example fix
// before: delete file created without reference DataFile::PositionDeletesBuilder::new(...).build()?; // after builder.set_referenced_data_file(data_file_path.to_string()); let df = builder.build()?;
Defensive patterns
Strategy: validation
Validate before calling
for f in delete_files {
anyhow::ensure!(f.referenced_data_file().is_some(), "delete file {} missing referenced_data_file", f.file_path());
} Type guard
fn has_referenced_data_file(f: &DataFile) -> bool { f.referenced_data_file().is_some() } Prevention
- Always set `referenced-data-file` when building position-delete files in the writer.
- Add a unit test asserting every serialized delete file round-trips with its reference intact.
- Pin writer and meta node versions together to avoid old-format pending rows.
When it happens
Trigger: A SerializedDataFile for a delete file was persisted/decoded without the `referenced-data-file` property set (e.g. writer bug, older wire format, hand-edited metadata), then passed into `backfill_delete_file_partitions` during pre-commit or recovery.
Common situations: Recovering a sink whose pending rows were written by an older RisingWave version that did not stamp `referenced_data_file`; a connector/writer bug that dropped the property during serialization; manually repaired Iceberg metadata tables.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- pk-index sink pending row at epoch {} missing metadata blob
- duplicate referenced data file {referenced} across pk-index
- no reports to aggregate for iceberg pk-index sink coordinato
- iceberg pk-index sink report missing metadata in aggregate_r
- compaction resolver sink {} task {} missing resolver task in
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/afd5a81526656f0e.
Report an issue: GitHub.