malte

malte

I’m trying to use subscriptions in Absinthe, but keep getting this error when I try to start the server:

** (Mix) Could not start application pb: exited in: Pb.Application.start(:normal, [])
    ** (EXIT) an exception was raised:
        ** (FunctionClauseError) no function clause matching in Absinthe.Subscription.child_spec/1
            (absinthe) lib/absinthe/subscription.ex:43: Absinthe.Subscription.child_spec(PbWeb.Endpoint)
            (elixir) lib/supervisor.ex:624: Supervisor.init_child/1
            (elixir) lib/enum.ex:1336: Enum."-map/2-lists^map/1-0-"/2
            (elixir) lib/enum.ex:1336: Enum."-map/2-lists^map/1-0-"/2
            (elixir) lib/supervisor.ex:615: Supervisor.init/2
            (elixir) lib/supervisor.ex:564: Supervisor.start_link/2
            (kernel) application_master.erl:277: :application_master.start_it_old/4

This is in a completely vanilla app, freshly created using:

mix phx.new pb --no-html
cd pb
mix ecto.create

Then following the directions here: absinthe/guides/subscriptions.md at main · absinthe-graphql/absinthe · GitHub

I’m following the directions for 1.4.x

And then doing
iex -S mix phx.server

Does anyone know why it breaks for me?

Showing Posts 2 to 1

malte

malte OP

Actually, the supervisor(...) calls are for 1.3 from what I understand, because in 1.4 the direct call to supervisor() has been supplanted by doing Supervisor.start_link(...).

So on the page I linked above (from absinthe-graphql’s github repo), it says to add it like so:
{Absinthe.Subscription, PbWeb.Endpoint} to the children list. Doing this results in the problem I reported above.

However, doing what you suggest fixes the issue! So in case this may help others, here is what the relevant part of my application.ex looks like:

    # List all child processes to be supervised
    children = [
      # Start the Ecto repository
      Pb.Repo,
      # Start the endpoint when the application starts
      PbWeb.Endpoint,
      # Starts a worker by calling: Pb.Worker.start_link(arg)
      # {Pb.Worker, arg},
      {Absinthe.Subscription, [PbWeb.Endpoint]}
    ]

    # See https://hexdocs.pm/elixir/Supervisor.html
    # for other strategies and supported options
    opts = [strategy: :one_for_one, name: Pb.Supervisor]
    Supervisor.start_link(children, opts)
  end

Thank you very much, idiot!

idi527

idi527

:waving_hand:

Can you post your lib/application.ex here? Judging by the error alone, there is a problem at absinthe/lib/absinthe/subscription.ex at v1.4 · absinthe-graphql/absinthe · GitHub so it’d be helpful to see how you define the children for the supervisor.

According to the guide for version 1.4 it should be like this:

[
  # other children ...
  supervisor(MyAppWeb.Endpoint, []), # this line should already exist
  supervisor(Absinthe.Subscription, [MyAppWeb.Endpoint]), # add this line
  # other children ...
]

On the master branch they’ve added the child_spec approach but note that the guide doesn’t include it. I’d try something like

[
      # Start the Ecto repository
      MyAppWeb.Repo,
      # Start the endpoint when the application starts
      MyAppWeb.Endpoint,
      {Absinthe.Subscription, [MyAppWeb.Endpoint]} # <-- note this is different from the guide
    ]

since in v1.4 child_spec expects a list, not a single module atom.

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
peck
Hi everyone. My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
achenet
Hello, I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind. However, when I launch mix phx.server, I get an error...
New
bradley
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
unaware8150
Hello folks! So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
Cxx-mlr
I’m working on a small exercise involving update_in/3, and I came up with this solution: data = %{ name: "Periodic Table", category:...
New
Alvinkariuki
How Can I Optimise Compile Time Dependencies I have been building an elixir application for about 2 years now. Many modules and files ha...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews