influxdata/influxdb · error · ParquetFileProtoError

invalid object store ID

Error message

invalid object store ID: {0}

What it means

Thrown when deserialising a protobuf-encoded ParquetFile (v1 catalog proto): a string field expected to identify an object store ID failed TryInto conversion into the strongly-typed ID. It is a generic validation guard on the inbound proto payload — the faulting input is the raw object-store ID string carried in the message; a proto serialized by a different or corrupted catalog version produces this error. Wrap around the decode of the ParquetFile proto, not around storage access.

Solutions

  1. Verify the catalog file or RPC payload is not truncated or corrupted
  2. Check that the writer and reader use compatible versions of the catalog proto schema
  3. Recover the object store ID from a known-good catalog snapshot or replica
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at core/data_types/src/lib.rs:1309 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19). Data as JSON: /api/errors/4fe08a2bcb13f996. Report an issue: GitHub.

Appendix: source

Thrown at core/data_types/src/lib.rs:1309

                .try_into()
                .map_err(|_| ProtoV1ParquetFileError::CompactionLevel)?,
            created_at: Timestamp::new(v.created_at),
            column_set: ColumnSet::new(v.column_set.into_iter().map(ColumnId::new)),
            max_l0_created_at: Timestamp::new(v.max_l0_created_at),
            source: ParquetFileSource::from_proto(v.source),
        })
    }
}

/// Errors deserialising a protobuf serialised [`ParquetFile`].
#[derive(Debug, Error)]
pub enum ParquetFileProtoError {
    /// The proto type does not contain a partition ID.
    #[error("no partition id specified for parquet file")]
    NoPartitionId,

    /// The specified object store UUID is invalid.
    #[error("invalid object store ID: {0}")]
    InvalidObjectStoreId(uuid::Error),

    /// The specified compaction level value is invalid.
    #[error(transparent)]
    InvalidCompactionLevel(#[from] CompactionLevelProtoError),
}

/// Value for a `parquet_file` record's `max_l0_created_at` field. If `MaxL0CreatedAt::Computed`,
/// the value came from the computation of the maximum of the `created_at` attributes of the source
/// files compacted into this file. If `MaxL0CreatedAt::SameAsCreatedAt`, this file was not created
/// from other files (that is, it was created via ingest) and its `max_l0_created_at` field should
/// be set to the same value for `created_at` that the catalog will assign.
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum MaxL0CreatedAt {
    /// Value computed from max of source files' `created_at`
    Computed(Timestamp),

    /// No source files; this file was created by ingest (regular or bulk); use `created_at`

View on GitHub (pinned to 06200ef96b)