[erlang-questions] Best approach to creating a process/connection pool

Andrew Berman <>
Thu Aug 4 18:35:47 CEST 2011


Thanks Tim.  So it looks like they are using erlang:monitor and
demonitor, so is that the best approach in an OTP application?  How
does it figure into the supervision tree?



On Thu, Aug 4, 2011 at 3:22 AM, Tim Watson <> wrote:
> Take a look at the sources for http://zotonic.com/ as they use a
> decent connection pool.
>
> On 4 August 2011 08:01, Andrew Berman <> wrote:
>> I'm fairly new to Erlang and I am trying to write a process pool which
>> essentially is a connection pool to a database.  I have designed the
>> application like this:  The main pool gen_server has a queue of PIDs
>> of gen_fsm's.  Each gen_fsm calls spawn_links a 3rd party gen_server and carries
>> the state of the connection.  So the 3rd party gen_server and the
>> gen_fsm should always live and die together.  I currently have set it
>> up such that gen_fsm calls proc_lib:spawn_link() to start the 3rd
>> party gen_server, but I'm wondering how this factors into the
>> supervision tree.  I currently have two supervisors:
>>
>> Sup1 -> one_for_all -> 2 children: pool gen_server and Sup2
>> Sup2 -> simple_one_for_one -> 1 child: gen_fsm
>>
>> So my question is: is it ok to use spawn_link instead of somehow
>> trying to put the 3rd party gen_server into the supervision tree?  If
>> it should go into the supervision tree, how would I organize the tree
>> then such that the gen_fsm and 3rd party gen_server are reliant on
>> each other?
>>
>> Thanks for any help!
>> _______________________________________________
>> erlang-questions mailing list
>> 
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>



More information about the erlang-questions mailing list