<div dir="ltr"><div dir="ltr">Hi Roberto,<br><br>For the smaller data updates using the gen_server:cast, which returns immediate, is an option if you do not need to check any reply values.<br>Increasing the timeout using gen_server:call/3 is another if your clients accept to be blocked for the complete time during bulk update. In that case you could consider using the gen_statem instead which has a default timeout of infinity for the call function.<br><br>I guess the aboves are not possible? so when offloading bulk write to a separate process you can maybe add some state handling in your gen_server (gen_statem) so that you process the smaller updates into an internal queue during the bulk write and postpone processing them until the write is finished. The gen_statem has postpone functions (which will still block your client) as well as insertion of internal events but I am not sure how useful they are in your case.<br><br>Mikael</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Den fre 29 nov. 2019 kl 23:47 skrev Roberto Ostinelli <<a href="mailto:ostinelli@gmail.com">ostinelli@gmail.com</a>>:<br></div><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"><div style="padding:20px 0px 0px;font-size:0.875rem;font-family:Roboto,RobotoDraft,Helvetica,Arial,sans-serif"><span style="font-family:Arial,Helvetica,sans-serif;font-size:small">All,</span><br></div><div style="font-family:Roboto,RobotoDraft,Helvetica,Arial,sans-serif;font-size:medium"><div id="gmail-m_5315098723149158396gmail-:1cr" style="font-size:0.875rem;direction:ltr;margin:8px 0px 0px;padding:0px"><div id="gmail-m_5315098723149158396gmail-:1cs" style="overflow:hidden;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:small;line-height:1.5;font-family:Arial,Helvetica,sans-serif"><div dir="ltr"><div>I have a gen_server that in periodic intervals becomes busy, eventually over 10 seconds, while writing bulk incoming data. This gen_server also receives smaller individual data updates.</div><div><br></div><div>I could offload the bulk writing routine to separate processes but the smaller individual data updates would then be processed before the bulk processing is over, hence generating an incorrect scenario where smaller more recent data gets overwritten by the bulk processing.</div><div><br></div><div>I'm trying to see how to solve the fact that all the gen_server calls during the bulk update would timeout.</div><div><br></div><div>Any ideasĀ of best practices?</div><div><br></div><div>Thank you,</div><div>r.</div></div></div></div></div></div>
</blockquote></div></div>