Skip to content

After upgrading to 2025.4.0, can no longer run Dagster development server #655

@eswolinsky3241

Description

@eswolinsky3241

We use VS Code to develop with Dagster, and specifically use a VS Code launch configuration to start Dagster's local development web server and step debug through code. After the most recent debugpy update, the web server is unable to start listening for requests. However, if we run the command manually in our shell, the server starts without issues. Similarly, downgrading to the previous debugpy version (2025.0.1) fixes the issue.

Here is our .vscode/launch.json file:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Dagster Web Server",
            "type": "debugpy",
            "request": "launch",
            "module": "dagster",
            "cwd": "/workspace",
            "args": [
                "dev"
            ],
            "serverReadyAction": {
                "pattern": "Serving dagster-webserver on http://127.0.0.1:([0-9]+)",
                "action": "openExternally",
                "uriFormat": "http://localhost:%s"
            }
        }
    ]
}

And here is the error we're seeing:

ethan@salmon-tarantula-95-copy-copy:/workspace/data-pipelines-general (main)$  /usr/bin/env /usr/local/bin/python /home/ethan/.vscode-server/extensions/ms-python.debugpy-2025.4.0-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher 52929 -- -m dagster dev 
2025-03-06 22:25:43 +0000 - dagster.code_server - INFO - Starting Dagster code proxy server for module dagster_project in process 2148
2025-03-06 22:25:49 +0000 - dagster.code_server - INFO - Starting Dagster code server for module dagster_project in process 2196

2025-03-06 22:26:10 +0000 - dagster.builtin - INFO - Running dbt command: `dbt parse --quiet --target dev`.
INFO:dagster.builtin:Running dbt command: `dbt parse --quiet --target dev`.
2025-03-06 22:26:25 +0000 - dagster.builtin - INFO - Finished dbt command: `dbt parse --quiet --target dev`.
INFO:dagster.builtin:Finished dbt command: `dbt parse --quiet --target dev`.
2025-03-06 22:26:34 +0000 - dagster.code_server - INFO - Started Dagster code server for module dagster_project in process 2196
INFO:dagster.code_server:Started Dagster code server for module dagster_project in process 2196
2025-03-06 22:26:34 +0000 - dagster.code_server - INFO - Started Dagster code proxy server for module dagster_project in process 2148
2025-03-06 22:26:34 +0000 - dagster.code_server - INFO - Stopping server once all current RPC calls terminate or 60 seconds pass
2025-03-06 22:26:34 +0000 - dagster.code_server - INFO - Stopping server once all current RPC calls terminate or 60 seconds pass
INFO:dagster.code_server:Stopping server once all current RPC calls terminate or 60 seconds pass
2025-03-06 22:26:34 +0000 - dagster.code_server - INFO - Shutting down Dagster code server for module dagster_project in process 2196
INFO:dagster.code_server:Shutting down Dagster code server for module dagster_project in process 2196
2025-03-06 22:26:36 +0000 - dagster.code_server - INFO - Shutting down Dagster code proxy server for module dagster_project in process 2148
2025-03-06 22:26:37 +0000 - dagster - WARNING - /home/ethan/.local/lib/python3.10/site-packages/dagster/_core/workspace/context.py:799: UserWarning: Error loading repository location data_pipelines_general:Exception: gRPC server exited with return code 0 while starting up with the command: "/usr/local/bin/python -m dagster code-server start --socket /tmp/tmp5n9xzg2x --heartbeat --heartbeat-timeout 45 --fixed-server-id 7bb4839b-d2ee-45ce-b106-9e9e6b6d521d --log-level INFO --inject-env-vars-from-instance --instance-ref {"__class__": "InstanceRef", "compute_logs_data": {"__class__": "ConfigurableClassData", "class_name": "LocalComputeLogManager", "config_yaml": "base_dir: /home/ethan/dagster_home/storage\n", "module_name": "dagster.core.storage.local_compute_log_manager"}, "custom_instance_class_data": null, "event_storage_data": {"__class__": "ConfigurableClassData", "class_name": "SqliteEventLogStorage", "config_yaml": "base_dir: /home/ethan/dagster_home/history/runs/\n", "module_name": "dagster.core.storage.event_log"}, "local_artifact_storage_data": {"__class__": "ConfigurableClassData", "class_name": "LocalArtifactStorage", "config_yaml": "base_dir: /home/ethan/dagster_home\n", "module_name": "dagster.core.storage.root"}, "run_coordinator_data": {"__class__": "ConfigurableClassData", "class_name": "QueuedRunCoordinator", "config_yaml": "max_concurrent_runs: 2\n", "module_name": "dagster.core.run_coordinator"}, "run_launcher_data": {"__class__": "ConfigurableClassData", "class_name": "DefaultRunLauncher", "config_yaml": "{}\n", "module_name": "dagster"}, "run_storage_data": {"__class__": "ConfigurableClassData", "class_name": "SqliteRunStorage", "config_yaml": "base_dir: /home/ethan/dagster_home/history/\n", "module_name": "dagster.core.storage.runs"}, "schedule_storage_data": {"__class__": "ConfigurableClassData", "class_name": "SqliteScheduleStorage", "config_yaml": "base_dir: /home/ethan/dagster_home/schedules\n", "module_name": "dagster.core.storage.schedules"}, "scheduler_data": {"__class__": "ConfigurableClassData", "class_name": "DagsterDaemonScheduler", "config_yaml": "{}\n", "module_name": "dagster.core.scheduler"}, "secrets_loader_data": null, "settings": {}, "storage_data": {"__class__": "ConfigurableClassData", "class_name": "DagsterSqliteStorage", "config_yaml": "base_dir: /home/ethan/dagster_home\n", "module_name": "dagster.core.storage.sqlite_storage"}} --location-name data_pipelines_general -m dagster_project -d /workspace/data-pipelines-general"

Stack Trace:
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_core/remote_representation/grpc_server_registry.py", line 190, in _get_grpc_endpoint
    server_process = GrpcServerProcess(
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_grpc/server.py", line 1537, in __init__
    self.start_server_process()
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_grpc/server.py", line 1574, in start_server_process
    server_process = open_server_process(
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_grpc/server.py", line 1438, in open_server_process
    wait_for_grpc_server(
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_grpc/server.py", line 1343, in wait_for_grpc_server
    raise Exception(

  warnings.warn(f"Error loading repository location {location_name}:{error.to_string()}")

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/local/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/home/ethan/.vscode-server/extensions/ms-python.debugpy-2025.4.0-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher/../../debugpy/__main__.py", line 71, in <module>
    cli.main()
  File "/home/ethan/.vscode-server/extensions/ms-python.debugpy-2025.4.0-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher/../../debugpy/../debugpy/server/cli.py", line 501, in main
    run()
  File "/home/ethan/.vscode-server/extensions/ms-python.debugpy-2025.4.0-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher/../../debugpy/../debugpy/server/cli.py", line 384, in run_module
    run_module_as_main(options.target, alter_argv=True)
  File "/home/ethan/.vscode-server/extensions/ms-python.debugpy-2025.4.0-linux-x64/bundled/libs/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py", line 228, in _run_module_as_main
    return _run_code(code, main_globals, None, "__main__", mod_spec)
  File "/home/ethan/.vscode-server/extensions/ms-python.debugpy-2025.4.0-linux-x64/bundled/libs/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py", line 118, in _run_code
    exec(code, run_globals)
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/__main__.py", line 3, in <module>
    main()
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_cli/__init__.py", line 50, in main
    cli(auto_envvar_prefix=ENV_PREFIX)
  File "/home/ethan/.local/lib/python3.10/site-packages/click/core.py", line 1161, in __call__
    return self.main(*args, **kwargs)
  File "/home/ethan/.local/lib/python3.10/site-packages/click/core.py", line 1082, in main
    rv = self.invoke(ctx)
  File "/home/ethan/.local/lib/python3.10/site-packages/click/core.py", line 1697, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/ethan/.local/lib/python3.10/site-packages/click/core.py", line 1443, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/ethan/.local/lib/python3.10/site-packages/click/core.py", line 788, in invoke
    return __callback(*args, **kwargs)
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_cli/dev.py", line 155, in dev_command
    with _optionally_create_temp_workspace(
  File "/usr/local/lib/python3.10/contextlib.py", line 135, in __enter__
    return next(self.gen)
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_cli/dev.py", line 266, in _optionally_create_temp_workspace
    with _temp_grpc_socket_workspace_file(context) as workspace_file:
  File "/usr/local/lib/python3.10/contextlib.py", line 135, in __enter__
    return next(self.gen)
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_cli/dev.py", line 243, in _temp_grpc_socket_workspace_file
    temp_file.write(yaml.dump({"load_from": context.get_code_server_specs()}))
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_core/workspace/context.py", line 679, in get_code_server_specs
    grpc_endpoint = self._grpc_server_registry.get_grpc_endpoint(origin)
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_core/remote_representation/grpc_server_registry.py", line 157, in get_grpc_endpoint
    return self._get_grpc_endpoint(code_location_origin)
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_core/remote_representation/grpc_server_registry.py", line 222, in _get_grpc_endpoint
    raise DagsterUserCodeProcessError(
dagster._core.errors.DagsterUserCodeProcessError: Exception: gRPC server exited with return code 0 while starting up with the command: "/usr/local/bin/python -m dagster code-server start --socket /tmp/tmp5n9xzg2x --heartbeat --heartbeat-timeout 45 --fixed-server-id 7bb4839b-d2ee-45ce-b106-9e9e6b6d521d --log-level INFO --inject-env-vars-from-instance --instance-ref {"__class__": "InstanceRef", "compute_logs_data": {"__class__": "ConfigurableClassData", "class_name": "LocalComputeLogManager", "config_yaml": "base_dir: /home/ethan/dagster_home/storage\n", "module_name": "dagster.core.storage.local_compute_log_manager"}, "custom_instance_class_data": null, "event_storage_data": {"__class__": "ConfigurableClassData", "class_name": "SqliteEventLogStorage", "config_yaml": "base_dir: /home/ethan/dagster_home/history/runs/\n", "module_name": "dagster.core.storage.event_log"}, "local_artifact_storage_data": {"__class__": "ConfigurableClassData", "class_name": "LocalArtifactStorage", "config_yaml": "base_dir: /home/ethan/dagster_home\n", "module_name": "dagster.core.storage.root"}, "run_coordinator_data": {"__class__": "ConfigurableClassData", "class_name": "QueuedRunCoordinator", "config_yaml": "max_concurrent_runs: 2\n", "module_name": "dagster.core.run_coordinator"}, "run_launcher_data": {"__class__": "ConfigurableClassData", "class_name": "DefaultRunLauncher", "config_yaml": "{}\n", "module_name": "dagster"}, "run_storage_data": {"__class__": "ConfigurableClassData", "class_name": "SqliteRunStorage", "config_yaml": "base_dir: /home/ethan/dagster_home/history/\n", "module_name": "dagster.core.storage.runs"}, "schedule_storage_data": {"__class__": "ConfigurableClassData", "class_name": "SqliteScheduleStorage", "config_yaml": "base_dir: /home/ethan/dagster_home/schedules\n", "module_name": "dagster.core.storage.schedules"}, "scheduler_data": {"__class__": "ConfigurableClassData", "class_name": "DagsterDaemonScheduler", "config_yaml": "{}\n", "module_name": "dagster.core.scheduler"}, "secrets_loader_data": null, "settings": {}, "storage_data": {"__class__": "ConfigurableClassData", "class_name": "DagsterSqliteStorage", "config_yaml": "base_dir: /home/ethan/dagster_home\n", "module_name": "dagster.core.storage.sqlite_storage"}} --location-name data_pipelines_general -m dagster_project -d /workspace/data-pipelines-general"

Stack Trace:
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_core/remote_representation/grpc_server_registry.py", line 190, in _get_grpc_endpoint
    server_process = GrpcServerProcess(
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_grpc/server.py", line 1537, in __init__
    self.start_server_process()
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_grpc/server.py", line 1574, in start_server_process
    server_process = open_server_process(
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_grpc/server.py", line 1438, in open_server_process
    wait_for_grpc_server(
  File "/home/ethan/.local/lib/python3.10/site-packages/dagster/_grpc/server.py", line 1343, in wait_for_grpc_server
    raise Exception(

Any idea what might be happening here between versions?

Metadata

Metadata

Assignees

No one assigned

    Labels

    triage-neededNeeds assignment to the proper sub-team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions