influxdata/influxdb · error · ProtoV1ParquetFileError
Error converting object_store_id
Error message
Error converting object_store_id: {0} What it means
ProtoV1ParquetFileError::ObjectStoreId is raised when the object_store_id field of a proto v1 ParquetFile cannot be parsed as a valid UUID during conversion to the native ParquetFile type (the uuid::Error is wrapped).
Solutions
- Correct the object_store_id in the proto to a valid canonical UUID string
- Re-write the ParquetFile record with the proper object store UUID from the object store registry
- Add validation at write time so only parseable UUIDs are persisted
Example fix
// before (proto) object_store_id: "store-123" // after object_store_id: "f47ac10b-58cc-4372-a567-0e02b2c3d479"
Defensive patterns
Strategy: validation
Validate before calling
fn object_store_id_ok(s: &str) -> bool {
uuid::Uuid::parse_str(s).is_ok()
} Try / catch
let pf = ParquetFile::try_from(proto).map_err(|e| match e {
ProtoV1ParquetFileError::ObjectStoreId(src) => anyhow!("bad object_store_id: {}", src),
other => anyhow!(other),
})?; Prevention
- Persist object_store_id only as canonical UUID strings
- Validate UUIDs at proto-construction time, not just at read time
- Use typed Uuid values throughout instead of free-form strings
When it happens
Trigger: Converting a v1 ParquetFile proto whose object_store_id is not a well-formed UUID — empty string, wrong format, or invalid characters.
Common situations: Catalog records corrupted or hand-edited with invalid UUIDs; protos from tools writing ids in a non-canonical format; failed migrations that left placeholder values in object_store_id.
Understand the failure class
Background: "invalid id" errors: invalid identifier format — why libraries reject IDs before lookup, and how to fix them — this error's family across 37 libraries.
Related errors
- Error converting max_columns_per_table
- Error converting max_tables
- Error converting partition_hash_id
- catalog update error
- column id in series key should be valid
AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19).
Data as JSON: /api/errors/72111da633556d61.
Report an issue: GitHub.
Appendix: source
Thrown at core/data_types/src/lib.rs:1265
row_count: v.row_count,
compaction_level: v.compaction_level as i32,
created_at: v.created_at.get(),
column_set: v.column_set.iter().map(|v| v.get()).collect(),
max_l0_created_at: v.max_l0_created_at.get(),
source: ParquetFileSource::to_proto(v.source),
}
}
}
/// Errors converting from a catalog proto v1 ParquetFile to [`ParquetFile`].
#[derive(Debug, Error)]
pub enum ProtoV1ParquetFileError {
/// invalid partition hash id
#[error("Error converting partition_hash_id: {0}")]
PartitionHashId(#[from] PartitionHashIdError),
/// invalid object store it
#[error("Error converting object_store_id: {0}")]
ObjectStoreId(#[from] uuid::Error),
/// invalid compaction level
#[error("Error converting compaction level")]
CompactionLevel,
}
impl TryFrom<catalog_proto::ParquetFile> for ParquetFile {
type Error = ProtoV1ParquetFileError;
fn try_from(v: catalog_proto::ParquetFile) -> Result<Self, Self::Error> {
Ok(Self {
id: ParquetFileId::new(v.id),
namespace_id: NamespaceId::new(v.namespace_id),
table_id: TableId::new(v.table_id),
partition_id: PartitionId::new(v.partition_id),
partition_hash_id: v.partition_hash_id[..].try_into()?,
object_store_id: ObjectStoreId::from_str(&v.object_store_id)?,View on GitHub (pinned to 06200ef96b)