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

Stanislav Ledenev s.ledenev@REDACTED
Sat May 15 20:55:17 CEST 2021

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
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/761fc1c1/attachment.htm>

More information about the erlang-questions mailing list