Long gen_server init question (not about order of messages :)

Leonard B leonard.boyce@REDACTED
Sun May 16 01:50:18 CEST 2021


Why not notify mod_api from mod_func once it's initialized. If you wanted
mod_func initialization to be non-blocking you could use handle_continue.

Kind regards,
Leonard


On Sat, May 15, 2021, 14:55 Stanislav Ledenev <s.ledenev@REDACTED> wrote:

> Hi!
> Need advice from an experienced community about synchronizing long
> initializing gen_server with other parts of application.
>
> Let's say we have 4 gen_servers:
> * mod_api       - accept requests;
> * mod_func      - real job;
> * mod_x, mod_y  - users of mod_func.
>
> mod_api accepts requests and transforms them to calls to mod_x, mod_y.
> mod_func is crucial for the application but it needs a time consuming
> procedure
> of initialization. IRL it is some cryptography related stuff.
> While mod_func is in the initialization state, mod_api must return
> 'not_ready' for all requests.
> While mod_func initializing it is not available for any requests.
>
> I was thinking about options of notification mechanism implementation and
> see two of them:
> 1. Some kind of polling from mod_api to mod_func with gen_server:call with
> timeout: mod_api after initialization begin send_after loop with timeout
> call to mod_func;
> 2. gen_event based solution. Run up gen_event and wait for notification
> about readiness of mod_func.
>
> Am I missing something? Are there any better solutions for such a task?
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20210515/30afece8/attachment.htm>


More information about the erlang-questions mailing list