<div dir="ltr">It's unclear to me how the how the persistence layer is supposed to ensure consistency, especially in the face of concurrent updates.<div><br></div><div>Rather, from a quick read, it would seem as if the behavior is undefined in such scenarios.</div><div><br></div><div>In the persistence example, the plugin is given only a subtree, but the top-level function returns the whole updated tree. Thus, even if the update is protected by a transaction, it's only each individual subtree modification that's protected - not the whole tree, and not even the whole update operation; if another process is modifying another subtree, it would seem as if the trees held by the processes could become inconsistent, including data loss.</div><div><br></div><div>(This raises the question whether the use of transactions is even constructive in general, given that they are still costly. At the very least, the EEP should address concurrency aspects.)</div><div><br></div><div>More generally, the API is modeled after gb_trees, which is a functional API. Adding persistence introduces side-effects, bringing the API into a whole new realm. My feeling is that the mismatch is not easily resolved.</div><div><br></div><div>BR,</div><div>Ulf W</div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-01-10 11:03 GMT+01:00 Raimo Niskanen <span dir="ltr"><<a href="mailto:raimo+eeps@erix.ericsson.se" target="_blank">raimo+eeps@erix.ericsson.se</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
    <a href="http://erlang.org/eeps/eep-0046.html" rel="noreferrer" target="_blank">http://erlang.org/eeps/eep-<wbr>0046.html</a><br>
    <a href="https://github.com/erlang/eep/blob/master/eeps/eep-0046.md" rel="noreferrer" target="_blank">https://github.com/erlang/eep/<wbr>blob/master/eeps/eep-0046.md</a><br>
<br>
It should show up shortly on <a href="http://www.erlang.org" rel="noreferrer" target="_blank">www.erlang.org</a> also.  I will chase someone<br>
responsible if not.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
<br>
/ Raimo Niskanen, Erlang/OTP, Ericsson AB<br>
______________________________<wbr>_________________<br>
eeps mailing list<br>
<a href="mailto:eeps@erlang.org">eeps@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/eeps" rel="noreferrer" target="_blank">http://erlang.org/mailman/<wbr>listinfo/eeps</a><br>
</font></span></blockquote></div><br></div>