cjbottaro

cjbottaro

NimblePool + Redix - why do all Redix pooling libraries use Poolboy instead?

I love NimblePool and use it frequently. I’m curious why all Redix pooling libraries use Poolboy instead.

From the NimblePool docs…

you can act directly on the resource, avoiding the data copying, but you need to keep the state of the resource in sync with the process

I take that to mean that you have to make sure the resource is in a good state before returning it via checkout. Which is fine; NimblePool has callbacks to ensure your resource is good before handing them out. I.e. if a Redix process is dead, you can use a NimblePool callback to create a new one.

NimblePool may not be a good option to manage processes.

Why? I understand that the pool itself can become a bottleneck, but that’s easily handled by having multiple pools and randomly selecting one to use.

Thanks for the help.

Most Liked

josevalim

josevalim

Creator of Elixir

Great question! Answer added to the README:

NimblePool may not be a good option to manage processes. After all, the goal of NimblePool is to avoid creating processes for resources. If you already have a process, using a process-based pool such as poolboy will provide a better abstraction.

dimitarvp

dimitarvp

Can somebody give me an example how exactly is NimblePool an actual pool? I’ve read part of its source code and it looks to do exactly the opposite of a pool to me – namely it serializes access to single state / resource.

:thinking:

Where Next?

Popular in Questions Top

ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New

Other popular topics Top

ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
WestKeys
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New

We're in Beta

About us Mission Statement