[erlang-questions] Re: Erlang at Facebook - hibernation and gen_server

Davide Marquês nesrait@REDACTED
Mon Jul 13 06:24:10 CEST 2009


On Wed, Jul 8, 2009 at 12:16 PM, eletuchy@REDACTED <eletuchy@REDACTED>wrote:

> The incompatibility is on the client side (gen:call), not the server
> side (gen_server:handle_call). There's a receive() loop inside
> gen:call that prevents a client from hibernating between dispatching
> the $call message and getting back the gen_server:reply().
>

Thanks for the feedback! Got it! :)

It seems it's just a matter of (famous last words):
 - using erlang:send_after/3 to get the process to wake up from
   hibernation after the given Timeout;
 - hibernating the client process (with proc_lib:hibernate/3) while waiting
for the reply
 - turn the control (after waking up) to a function that's ready to handle
the reply and
   the erlang:send_after/3's timeout we had set up before hibernating.

Trying this out now... results later on. :)

Cheers,
:Davide


More information about the erlang-questions mailing list