Adding NimblePool as a supervisor child
Opened this issue · 5 comments
The README states that the following should work:
children = [
{GenMagic.Pool.NimblePool, pool_name: MyApp.GenMagicPool, pool_size: 2}
]
opts = [strategy: :one_for_one, name: MyApp.Supervisor]
Supervisor.start_link(children, opts)
But Supervisor
runs child_spec/1
on its children, giving me this error:
** (Mix) Could not start application gen_magic_test: exited in: GenMagicTest.Application.start(:normal, [])
** (EXIT) an exception was raised:
** (ArgumentError) The module GenMagic.Pool.NimblePool was given as a child to a supervisor
but it does not implement child_spec/1.
I'm happy to provide a PR. I think there are at least possible 2 solutions:
- The
Pool
behaviour requireschild_spec/1
. - The README is updated to include the child spec:
%{
id: GenMagic.Pool.NimblePool,
start: {GenMagic.Pool.NimblePool, :start_link, [[pool_name: MyApp.GenMagicPool, pool_size: 2]]}
}
Hi @maartenJacobs the NimblePool implementation has no child spec, the Poolboy implementation has it, so the README is wrong. I’ll look into it however would suggest using Poolboy for now.
@maartenJacobs Please test feature/pool-test latest @ f81bb82 and advise, reference the relevant test files for example use cases.
@evadne I think you should write @maartenJacobs a cheque for £1 ;-)
Yes comparing you to Knuth - the reference https://en.wikipedia.org/wiki/Knuth_reward_check
@maartenJacobs Please test feature/pool-test latest @ f81bb82 and advise, reference the relevant test files for example use cases.
@evadne @ [f81bb82] works as expected 🙌 The pool size default works as well.
The pool size default works as well.
@maartenJacobs will we be using a pool size of 2 ;-)