Long gen_server init question (not about order of messages :)
Stanislav Ledenev <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.general |
|---|---|
| Message-ID | <CAOkK=A+L9STy6LVCJ2wz=ONTvyOiwNRk3PhhR-TEce_0nvytOg@mail.gmail.com> |
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?