mlflow/mlflow · error · NotImplementedError

{self.__class__.__name__} does not support list_webhooks

Error message

{self.__class__.__name__} does not support list_webhooks

What it means

list_webhooks is declared in AbstractStore but only implemented by webhooks-capable backends; elsewhere it raises NotImplementedError naming the store class. The message identifies which backend lacks the feature.

Source

Thrown at mlflow/store/model_registry/abstract_store.py:1233

        """
        raise NotImplementedError(f"{self.__class__.__name__} does not support get_webhook")

    def list_webhooks(
        self,
        max_results: int | None = None,
        page_token: str | None = None,
    ) -> PagedList[Webhook]:
        """
        List webhooks in the backend store.

        Args:
            max_results: Maximum number of webhooks to return.
            page_token: Token specifying the next page of results.

        Returns:
            A :py:class:`mlflow.store.entities.paged_list.PagedList` of Webhook objects.
        """
        raise NotImplementedError(f"{self.__class__.__name__} does not support list_webhooks")

    def list_webhooks_by_event(
        self,
        event: WebhookEvent,
        max_results: int | None = None,
        page_token: str | None = None,
    ) -> PagedList[Webhook]:
        """
        List webhooks filtered by event type.

        Args:
            event: The webhook event to filter by.
            max_results: Maximum number of webhooks to return.
            page_token: Token specifying the next page of results.

        Returns:
            A :py:class:`mlflow.store.entities.paged_list.PagedList` of Webhook objects
            that are subscribed to the specified event.

View on GitHub (pinned to 6a27f2decc)

Solutions

  1. Use a webhooks-capable registry backend
  2. Upgrade MLflow server to a version supporting webhooks
  3. Feature-detect with try/except NotImplementedError before listing
  4. Implement list_webhooks in your custom store subclass

Example fix

// before
for wh in client.list_webhooks():
    ...
// after
try:
    for wh in client.list_webhooks():
        ...
except NotImplementedError:
    logger.warning("Webhooks unsupported by this backend")
Defensive patterns

Strategy: try-catch

Type guard

def supports_webhooks(store) -> bool:
    return type(store).list_webhooks is not AbstractStore.list_webhooks

Try / catch

try:
    hooks = client.list_webhooks()
except NotImplementedError:
    hooks = []  # no webhook support in this backend

Prevention

When it happens

Trigger: Calling MlflowClient.list_webhooks(...) (or list_webhooks_by_event) against a registry store without webhook support, such as the local SQLAlchemy/file store or a minimal custom subclass.

Common situations: Local development against a file-based registry while production uses Databricks, older servers without the webhook endpoint, or feature-detection code that assumes list_webhooks always exists.

Related errors


AI-assisted analysis of mlflow/mlflow@6a27f2decc (2026-08-29). Data as JSON: /api/errors/712c02b7f67c8d7d. Report an issue: GitHub.