Skip to content

protobuf runtime issue: google.protobuf.runtime_version.VersionError #33978

Description

@jieyu-lin

What's the issue?

When running new build code location with dagster version 1.12.22 in kubernetes, it raises error with following:

protobuf runtime issue: google.protobuf.runtime_version.VersionError. Detected incompatible Protobuf Gencode/Runtime versions when loading grpc_health/v1/health.pr. gencode 7.35.0 runtime 6.33.6. Runtime version cannot be older than the linked gencode version. See Protobuf version guarantees at https://protobuf.dev/support/cross-version-runtime-guarantee.

Then, all code locations remain in state CrashBackoff all the time, and keep restarting.

Image

What did you expect to happen?

dependencies = [
    "dagster>=1.12,<1.13",
    "dagster-webserver>=1.12,<1.13",
    "dagster-postgres>=0.28,<0.29",
    "dagster-aws>=0.28,<0.29",
    "dagster-graphql>=1.12,<1.13",
    "dagster-slack>=0.28,<0.29",
    "dagster-duckdb>=0.28,<0.29",
]

When uv sync those dependencies, we can build image accordingly. But when runtime, it start failure. Based on code base review, I can get following conclusion:

  1. protobuf==6.33.6 satisfies Dagster’s protobuf<7
  2. grpcio-health-checking==1.82.0 is allowed by Dagster’s >=1.44.0 floor
  3. But the 1.82 wheel embeds gencode 7.35.0 while runtime is 6.33.6 → exact error

Dagster imports grpc_health at code-server startup and pins protobuf <7 but does not cap grpcio-health-checking / grpcio. After grpc 1.82.0 (2026-07-06), fresh installs can resolve a broken combo.

This issue can be simply resolved by adding constraint-dependencies like:

[tool.uv]
constraint-dependencies = [
    "grpcio-health-checking<1.82",
    "grpcio<1.82",
]

Or directly add to dependencies:

dependencies = [
    "dagster>=1.12,<1.13",
    "dagster-webserver>=1.12,<1.13",
    "dagster-postgres>=0.28,<0.29",
    "dagster-aws>=0.28,<0.29",
    "dagster-graphql>=1.12,<1.13",
    "dagster-slack>=0.28,<0.29",
    "dagster-duckdb>=0.28,<0.29",
    "grpcio-health-checking<1.82",
    "grpcio<1.82",
]

But still require caps added into code base to prevent inconsistency.

How to reproduce?

Try to spin up code location with following example pyproject.toml dependencies and start in kubernetes with 1.12.22 version

[project]
dependencies = [
    "dagster>=1.12,<1.13",
    "dagster-webserver>=1.12,<1.13",
    "dagster-postgres>=0.28,<0.29",
    "dagster-aws>=0.28,<0.29",
    "dagster-graphql>=1.12,<1.13",
    "dagster-slack>=0.28,<0.29",
    "dagster-duckdb>=0.28,<0.29",
]

Dagster version

1.12.22

Deployment type

Dagster Helm chart

Deployment details

Simply build docker image by python:3.12-slim, and install pyproject.toml through uv venv and uv sync --refresh. After that, we spin up a dagster/dagster-celery-k8s with version 1.12.22 to connect this code location via new build image, simulate in my kubernetes using rancher-desktop

Additional information

No response

Message from the maintainers

Impacted by this issue? Give it a 👍! We factor engagement into prioritization.

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions