<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Hi Francesco,</div><div><br><blockquote type="cite">OK, let's say that I have node A, B, and C, in a cluster. A goes down,<br>and C gets removed from the cluster. So B now has [A, B] in the schema<br>as cluster nodes. A's data still has [A, B, C] as cluster nodes, and<br>if we start A again, that will be propagated to B. That's what I meant<br>with "pollute".<br></blockquote><div><br></div><div>This scenario is impossible. I will rewrite it as follows, depending on your definition of "remove". One correct interpretation would be:</div></div><div><br></div><div>1. A,B & C are in the cluster</div><div>2. A goes down</div><div>3. C is turned off and the schema is destroyed on C (instead of your term "removed")</div><div>4. So B has [A,B,C] in the schema (and so does A)</div><div>5. A is started again.</div><div>6. A copies the data from B because it knows it was down and B has the latest data </div><div><br></div><div>Another correct sequence would be:</div><div><br></div><div><div>1. A,B & C are in the cluster</div><div>2. A goes down</div><div>3. Someone tries to remove C from the cluster via API call. Mnesia will refuse to do this, because A is down.</div><div><br></div><div><blockquote type="cite">A's data still has [A, B, C] as cluster nodes, and<br>if we start A again, that will be propagated to B. </blockquote></div><div><br></div><div>This is the bit that happen unless you had partitioning/netsplit. A knows that B was online when it went down. B knows that A went down. When A starts up again, they communicate and figure this out. Then A replaces all its copies of non-local/shared data from the current data at B.</div><div><br></div></div><div><div style="border-collapse: separate; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; font-style: normal; font-variant: normal; font-weight: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="color: rgb(0, 0, 0); font-family: 'Courier New'; font-size: medium; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Courier New'; font-size: medium; letter-spacing: normal; line-height: normal; border-collapse: separate; font-style: normal; font-variant: normal; font-weight: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><p style="font-family: Arial; font-size: 11px; line-height: 1.4em; margin-top: 10px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; letter-spacing: 1px; color: rgb(0, 105, 141); font-weight: bold; "><span class="Apple-style-span" style="font-weight: normal; ">Rudolph van Graan</span></p></div></div></span><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Courier New'; letter-spacing: normal; line-height: normal; font-size: 11px; "><a><font class="Apple-style-span" color="#00698D" face="Arial"><span class="Apple-style-span" style="letter-spacing: 1px; line-height: 15px; "><font class="Apple-style-span" size="2"><span class="Apple-style-span" style="font-size: 10px; "></span></font></span></font></a><font class="Apple-style-span" color="#00698D" face="Arial"><font class="Apple-style-span" size="2"><div><a><span class="Apple-style-span" style="font-size: 11px; "></span></a><a><font class="Apple-style-span" color="#00698D" face="Arial"><span class="Apple-style-span" style="letter-spacing: 1px; line-height: 15px; "><font class="Apple-style-span" size="2"><span class="Apple-style-span" style="font-size: 10px; "><br></span></font></span></font></a></div></font></font></span></div></span></div><span class="Apple-style-span" style="font-family: Arial; font-size: small; ">Please have a look at my blogs:</span><span class="Apple-style-span" style="orphans: 2; text-align: -webkit-auto; text-indent: 0px; widows: 2; -webkit-text-decorations-in-effect: none; "><div style="border-collapse: separate; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; font-style: normal; "><span class="Apple-style-span" style="border-collapse: separate; font-variant: normal; font-weight: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-style: normal; "><div style="font-family: 'Courier New'; font-size: medium; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="font-family: 'Courier New'; letter-spacing: normal; line-height: normal; font-size: 11px; "><font class="Apple-style-span" face="Arial"><font class="Apple-style-span" size="2"><br></font></font></span></div></span><span class="Apple-style-span" style="font-family: Arial; font-size: small; ">- <a href="http://randomlondonview.blogspot.co.uk/">Random Views of London</a> -- A photographer's interpretation of London</span></div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><font class="Apple-style-span" face="Arial" size="2">  </font><font class="Apple-style-span" face="Arial" size="1"><a href="http://randomlondonview.blogspot.co.uk/">http://randomlondonview.blogspot.co.uk/</a></font></div></span></div><div apple-content-edited="true"><br></div><br><div><div>On 3 Jul 2012, at 13:12, Francesco Mazzoli wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Hi Rudolph,<br>At Tue, 03 Jul 2012 12:31:11 +0100,<br>Rudolph van Graan wrote:<br><blockquote type="cite">You have to set things up so that you have other replicas of those<br></blockquote><blockquote type="cite">tables on other nodes.<br></blockquote><br>Well, some data is inherently "local" and not relevant to the other<br>nodes, that have similar local tables.<br><br><blockquote type="cite">This is not how mnesia works. The list of nodes in the distributed<br></blockquote><blockquote type="cite">database is static, i.e. all the nodes have the same list. This is<br></blockquote><blockquote type="cite">why all of them needs to be online when you add or remove nodes.<br></blockquote><br>I understand this, but I still want to know if it's possible to<br>recover from that situation more or less gracefully.<br><br><blockquote type="cite">The only problem that you need to solve is dealing with partitioning<br></blockquote><blockquote type="cite">(i.e. splits) and you have two sets of data on two different<br></blockquote><blockquote type="cite">segments. It is not possible for a node to "pollute" other nodes.<br></blockquote><br>OK, let's say that I have node A, B, and C, in a cluster. A goes down,<br>and C gets removed from the cluster. So B now has [A, B] in the schema<br>as cluster nodes. A's data still has [A, B, C] as cluster nodes, and<br>if we start A again, that will be propagated to B. That's what I meant<br>with "pollute".<br><br><blockquote type="cite">So "... offline node still thinks it is clustered..." - it doesn't<br></blockquote><blockquote type="cite">just think so, it has been configured so when you added it into the<br></blockquote><blockquote type="cite">cluster. It will stay part of the cluster until you remove it.<br></blockquote><br>...but to remove it I have to bring it online, and if the other online<br>nodes have a different configuration, things get ugly.<br><br>--<br>Francesco * Often in error, never in doubt<br></div></blockquote></div><br></body></html>