<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Feb 7, 2015 at 7:45 PM, Roberto Ostinelli <span dir="ltr"><<a href="mailto:roberto@widetag.com" target="_blank">roberto@widetag.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Dear list,<div>What best practice do you have when you have a release and want to insure a node has a properly initialised mnesia scheme?</div></div></blockquote></div><div class="gmail_extra"> <br></div></div><div class="gmail_extra">Provide a pre-initialized database with your release. Don't attempt "figuring out" if there is no database and then create it on demand. It just leads to misery.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Your system proper only operates if there is a database. The End. When the release initially boots, there is a complete database, with a complete schema, ready to run, so the nodes can start working immediately. Some times, you will me using a method, where there is a file named FALLBACK.BUP. This is a "fallback" file, which will "restore" the database once the system is booted. This is also how `mnesia:create_schema/2` works, incidentally :P</div><div class="gmail_extra"><br></div><div class="gmail_extra">The beauty of this way is that your system is always in a state where it is "catching up" from a known good state. And you don't have to handle the special case of "initializing", which is completely perpendicular to your normal operation.<br><br clear="all"><div>Unfortunately, creation of Mnesia databases is not an idempotent operation.</div><div><br></div>-- <br><div class="gmail_signature">J.</div>
</div></div>