MemPalace/mempalace · error · BackendClosedError

PgVectorCollection has been closed

Error message

PgVectorCollection has been closed

What it means

Error "PgVectorCollection has been closed" thrown in MemPalace/mempalace.

Source

Thrown at mempalace/backends/pgvector.py:848

        client: _PgVectorClient,
        config: _PgVectorConfig,
        palace: PalaceRef,
        collection_name: str,
        table: str,
    ):
        self._backend = backend
        self._client = client
        self._config = config
        self._palace = palace
        self._collection_name = collection_name
        self._table = table
        self._lock = threading.RLock()
        self._closed = False
        self._known_dimension: Optional[int] = None

    def _ensure_open(self) -> None:
        if self._closed or self._backend._closed:
            raise BackendClosedError("PgVectorCollection has been closed")

    def _table_exists(self) -> bool:
        return self._client.table_exists(self._table)

    def _marker_exists(self) -> bool:
        return self._backend._marker_exists(self._palace)

    def get_stored_embedder_identity(self):
        return self._backend._get_embedder_identity(self._palace, self._collection_name)

    def set_embedder_identity(self, identity) -> None:
        # Sidecar-backed (see PgVectorBackend), so this records even on a
        # brand-new palace whose mismatch marker doesn't exist yet.
        self._backend._set_embedder_identity(self._palace, self._collection_name, identity)

    def _ensure_table(self, dimension: int) -> None:
        if dimension <= 0:
            raise ValueError("embedding dimension must be positive")

View on GitHub (pinned to 06cb6987f0)

Solutions

  1. Do not use the collection after close(); re-open it via the backend

When it happens

Trigger: Thrown at mempalace/backends/pgvector.py:848 when the library encounters an invalid state.

Common situations: Collection handle was closed and then reused.


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