Phoenix long poll error: ArgumentError{message: "unknown registry: nil"}

I’m seeing an error in my Phoenix dev environment that I’m a bit stuck on debugging. I’ve narrowed the cause down to MyApp_Web.Endpoint.ex and the long polling setting:

defmodule MyAppWeb.Endpoint do
  ...

  @session_options [
    store: :cookie,
    key: "_myapp_key",
    signing_salt: "<random string generated by Phoenix",
    same_site: "Lax"
  ]

  socket "/live", Phoenix.LiveView.Socket,
    websocket: [connect_info: [session: @session_options]],
    longpoll: [connect_info: [session: @session_options]]
end

The error is:

[info] CONNECTED TO Phoenix.LiveView.Socket in 18µs
  Transport: :longpoll
  Serializer: Phoenix.Socket.V2.JSONSerializer
  Parameters: %{"_csrf_token" => "<redacted>", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:4000/assets/app.css", "1" => "http://localhost:4000/assets/app.js"}, "vsn" => "2.0.0"}
[error] ** (CaseClauseError) no case clause matching: {:error, {%ArgumentError{message: "unknown registry: nil"}, [{Registry, :info!, 1, [file: ~c"lib/registry.ex", line: 1391]}, {Registry, :register, 3, [file: ~c"lib/registry.ex", line: 1007]}, {Phoenix.PubSub, :subscribe, 3, [file: ~c"lib/phoenix/pubsub.ex", line: 121]}, {Phoenix.Transports.LongPoll.Server, :init, 1, [file: ~c"lib/phoenix/transports/long_poll_server.ex", line: 36]}, {:gen_server, :init_it, 2, [file: ~c"gen_server.erl", line: 2229]}, {:gen_server, :init_it, 6, [file: ~c"gen_server.erl", line: 2184]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]}]}}
    (phoenix 1.7.14) lib/phoenix/transports/long_poll.ex:145: Phoenix.Transports.LongPoll.new_session/4
    (myapp 0.1.0) lib/myapp_web/endpoint.ex:1: myappWeb.Endpoint.do_socket_dispatch/2
    (myapp 0.1.0) lib/myapp_web/endpoint.ex:1: myappWeb.Endpoint.plug_builder_call/2
    (myapp 0.1.0) deps/plug/lib/plug/debugger.ex:136: myappWeb.Endpoint."call (overridable 3)"/2
    (myapp 0.1.0) lib/myapp_web/endpoint.ex:1: myappWeb.Endpoint.call/2
    (phoenix 1.7.14) lib/phoenix/endpoint/sync_code_reload_plug.ex:22: Phoenix.Endpoint.SyncCodeReloadPlug.do_call/4
    (bandit 1.6.0) lib/bandit/pipeline.ex:127: Bandit.Pipeline.call_plug!/2
    (bandit 1.6.0) lib/bandit/pipeline.ex:36: Bandit.Pipeline.run/4
    (bandit 1.6.0) lib/bandit/http1/handler.ex:12: Bandit.HTTP1.Handler.handle_data/3
    (bandit 1.6.0) lib/bandit/delegating_handler.ex:18: Bandit.DelegatingHandler.handle_data/3
    (bandit 1.6.0) <folder>/myapp/deps/thousand_island/lib/thousand_island/handler.ex:417: Bandit.DelegatingHandler.handle_continue/2
    (stdlib 6.1.2) gen_server.erl:2335: :gen_server.try_handle_continue/3
    (stdlib 6.1.2) gen_server.erl:2244: :gen_server.loop/7
    (stdlib 6.1.2) proc_lib.erl:329: :proc_lib.init_p_do_apply/3

The actual error is "unknown registry: nil" - what could cause this? No difference when adding Phoenix.PubSub, name: MyApp.PubSub} to MyApp.Application.ex.

Solved, looks like I was missing:

config :myapp, MyAppWeb.Endpoint, pub_sub: MyApp.PubSub
1 Like