<div dir="ltr">Hi José,<br><div class="gmail_quote"><div dir="ltr"><div><div><div><div><span><span dir="ltr" name="José"><br></span></span></div><span><span dir="ltr" name="José">I add a proxy process to handle the issue (<a href="https://github.com/yunba/eredis_pool/blob/master/src/eredis_proxy.erl" target="_blank">https://github.com/yunba/eredis_pool/blob/master/src/eredis_proxy.erl</a>), but wired if connect redis timeout, proxy process sometimes will be shutdown although I set trap_exit = true.<br><br></span></span></div><span><span dir="ltr" name="José">I test it , find all connections timeout when multi client call connnect simulataneous, after eredis_client exit info received, eredis_proxy will be shutdown. I have totally no idea about it. <br><br></span></span></div><div><span><span dir="ltr" name="José">Did I miss something?<br></span></span></div><div><span><span dir="ltr" name="José"><br></span></span></div><span><span dir="ltr" name="José">Thanks,<br></span></span></div><span><span dir="ltr" name="José">Linbo<br></span></span></div><div class=""><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">2015-04-14 19:01 GMT+08:00 linbo liao <span dir="ltr"><<a href="mailto:llbgurs@gmail.com" target="_blank">llbgurs@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Thanks, looks a nice way to solve the issue, I will create a proxy worker to have a try.<br></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">2015-04-14 16:49 GMT+08:00 José Valim <span dir="ltr"><<a href="mailto:jose.valim@plataformatec.com.br" target="_blank">jose.valim@plataformatec.com.br</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">You don't need to modify eredis per se. You can create a worker that is between poolboy and eredis that tracks the connected/disconnected semantics as Devin described. Unfortunately I don't know of any sample Erlang code but, if you don't mind, here is a similar solution using redo written in Elixir:<div><div><br></div><div><a href="https://github.com/phoenixframework/phoenix/blob/master/lib/phoenix/pubsub/redis_conn.ex" target="_blank">https://github.com/phoenixframework/phoenix/blob/master/lib/phoenix/pubsub/redis_conn.ex</a><br></div><div><br></div><div>To use it, you checkout the worker above from the pool, ask the redis connection to the worker and do the operations you want to in the connection as usual.</div></div><div><br></div><div>As a note, I did find it a bit weird that eredis handles disconnects automatically but it does not handle the case where it can't connect to Redis on start_link. It would be handful if they supported lazy connections (i.e. don't connect on start_link but on first command). They already have all the code to handle this, it is just a matter of supporting it on start_link too.<br></div></div><div class="gmail_extra"><br clear="all"><div><div><div><br></div><div><br></div><div><span style="font-size:13px"><div><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse"><b>José Valim</b></span></div><div><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse"><div><span style="font-family:verdana,sans-serif;font-size:x-small"><a href="http://www.plataformatec.com.br/" style="color:rgb(42,93,176)" target="_blank">www.plataformatec.com.br</a></span></div><div><span style="font-family:verdana,sans-serif;font-size:x-small">Skype: jv.ptec</span></div><div><span style="font-family:verdana,sans-serif;font-size:x-small">Founder and Lead Developer</span></div></span></div></span></div></div></div>
<br><div class="gmail_quote"><div><div>On Tue, Apr 14, 2015 at 10:26 AM, linbo liao <span dir="ltr"><<a href="mailto:llbgurs@gmail.com" target="_blank">llbgurs@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div><div dir="ltr"><div><div><div><div>Hi,<br><br></div>I open an issue for poolboy (<a href="https://github.com/devinus/poolboy/issues/72" target="_blank">https://github.com/devinus/poolboy/issues/72</a>), but looks author doesn't think this is an issue.<br><br></div><div>Looks like to solve this issue have two ways:<br><br></div><div>1. Modify eredis client,  start_link still return ok when connect failed, and when use it should check eredis socket alive or not<br><br></div><div>2. Modify poolboy library, protected all logic when call new_worker failed.<br></div><div><br></div>But it require change ereids or poolboy code, I was wondering to know anyone hit this issue, how to resolve it?<br><br></div>Thanks,<br></div>Linbo<br></div>
<br></div></div>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></div><br></div>