MemPalace/mempalace · error · ValueError

Sidecar has BLOB-typed seq_id for {segment_id}; refusing to

Error message

Sidecar has BLOB-typed seq_id for {segment_id}; refusing to use it. Pass a sidecar that was already migrated to INTEGER rows.

What it means

Error "Sidecar has BLOB-typed seq_id for {segment_id}; refusing to use it. Pass a sidecar that was already migrated to INTEGER rows." thrown in MemPalace/mempalace.

Source

Thrown at mempalace/repair.py:2243

        return int.from_bytes(val, "big")
    return int(val)


def _read_sidecar_seq_ids(sidecar_path: str) -> dict[str, int]:
    """Load ``{segment_id: seq_id}`` from a sidecar DB's ``max_seq_id`` table.

    Rejects sidecar files whose ``max_seq_id.seq_id`` is itself BLOB-typed
    — a sidecar that old predates chromadb's type normalisation and is not
    a trustworthy restoration source.
    """
    if not os.path.isfile(sidecar_path):
        raise FileNotFoundError(f"Sidecar database not found: {sidecar_path}")
    out: dict[str, int] = {}
    with sqlite3.connect(sidecar_path) as conn:
        rows = conn.execute("SELECT segment_id, seq_id, typeof(seq_id) FROM max_seq_id").fetchall()
    for segment_id, seq_id, kind in rows:
        if kind == "blob":
            raise ValueError(
                f"Sidecar has BLOB-typed seq_id for {segment_id}; refusing to use it. "
                "Pass a sidecar that was already migrated to INTEGER rows."
            )
        out[str(segment_id)] = int(seq_id)
    return out


def repair_max_seq_id(
    palace_path: str,
    *,
    segment: Optional[str] = None,
    from_sidecar: Optional[str] = None,
    threshold: int = MAX_SEQ_ID_SANITY_THRESHOLD,
    backup: bool = True,
    dry_run: bool = False,
    assume_yes: bool = False,
) -> dict:
    """Un-poison ``max_seq_id`` rows corrupted by ``_fix_blob_seq_ids`` misfire.

View on GitHub (pinned to 06cb6987f0)

Solutions

  1. Pass a sidecar already migrated to INTEGER seq_id rows

When it happens

Trigger: Thrown at mempalace/repair.py:2243 when the library encounters an invalid state.

Common situations: Sidecar still has legacy BLOB-typed seq_id values.


AI-assisted analysis of MemPalace/mempalace@06cb6987f0 (2026-08-15). Data as JSON: /api/errors/ddd3b4a8b6419091. Report an issue: GitHub.