<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Sun, May 3, 2015 at 6:12 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 is (or are) the expected outcome(s) of a race condition during mnesia dirty writes on a table of type `set`?</div></div></blockquote><div><br></div><div>The lower bound is "whatever ETS gives you" which means that writes to a row is atomic, on a single node. The last writer wins. If two nodes writes to the same record at the same time, I'm not sure you have any guarantees about what you read on other nodes.</div><div><br></div><div>In other words, I wouldn't expect any guarantee, in particular writing {K, V1} on node1 and {K, V2} on node2 could result in write order {K, V1} -> {K, V2} on one node and {K, V2} -> {K, V1} on another node. If you want that guarantee, you should run a transaction.</div><div><br></div><div>The problem can often be avoided because if you know a priori that your key K is under your sole responsibility, then a dirty_write is safe insofar noone else can change it, and you control the writing order, which means everyone eventually ends up with the same value.</div><div><br></div><div>-- </div><div>J.<br></div></div>
</div></div>