<div dir="ltr">Very informative. Thanks. <div><br></div><div>Having no experience with either gproc or pg2, I am trying to decide on which one to use. So far I am only working with a single node, but still I need to understand how things would work when I have to distribute them, and what will have to be changed.</div>
<div><br></div><div>If I use pg2, then to broadcast a message I need to manually iterate over the list returned from pg2::get_members. Is it a viable alternative to gproc::send? I assume it creates a copy of each item. what if I have many items?</div>
<div><br></div><div>Konstantin</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/11/13 Christopher Meiklejohn <span dir="ltr"><<a href="mailto:cmeiklejohn@basho.com" target="_blank">cmeiklejohn@basho.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Wednesday, November 13, 2013 at 12:19 AM, Barco You wrote:<br>
> Why don't you use gproc?<br>
<br>
</div>Last time I checked, gproc isn’t super reliable under failure conditions in global distribution mode.<br>
<br>
Garret and Ulf have discussed it on erlang-questions [1], section 10 of Ulf’s Erlang Workshop paper [2] covers quite a bit about it, and I’ve also written about it [3].<br>
<br>
[1] <a href="http://erlang.org/pipermail/erlang-questions/2012-July/067749.html" target="_blank">http://erlang.org/pipermail/erlang-questions/2012-July/067749.html</a><br>
[2] <a href="http://svn.ulf.wiger.net/gproc/doc/erlang07-wiger.pdf" target="_blank">http://svn.ulf.wiger.net/gproc/doc/erlang07-wiger.pdf</a><br>
[3] <a href="http://christophermeiklejohn.com/erlang/2013/06/05/erlang-gproc-failure-semantics.html" target="_blank">http://christophermeiklejohn.com/erlang/2013/06/05/erlang-gproc-failure-semantics.html</a><br>
<br>
- Chris<br>
<div><div class="h5"><br>
> On Wed, Nov 13, 2013 at 2:38 AM, akonsu <<a href="mailto:akonsu@gmail.com">akonsu@gmail.com</a> (mailto:<a href="mailto:akonsu@gmail.com">akonsu@gmail.com</a>)> wrote:<br>
> > I have a pubsub system which has a single publisher process that maintains all its subscriber processes' Pid's in an ETS table.<br>
> ><br>
> > The publisher monitors its subscribers and when the publisher receives DOWN message, it removes the subscriber Pid from the table.<br>
> ><br>
> > The table entries are tuples of the form {MonitorRef, SubscriberPid}, and the MonitorRef is used as the key.<br>
> ><br>
> > Now I would like to make sure that if the publisher dies, and gets restarted by its supervisor, the subscriber table is preserved. So I created a process that creates the ETS table, sets the table's heir to self(), and then gives away the table to the publisher.<br>

> ><br>
> > The problem is that I do not know how to handle transfer of the table from the heir to the publisher:<br>
> ><br>
> > when publisher receives the table, the table contains a list of tuples {MonitorRef, SubscriberPid}, but the MonitorRefs were created by the previous publisher instance, so when the new publisher receives ETS_TRANSFER it needs to monitor all these SubscriberPids again.<br>

> ><br>
> > what is the best way to do it? Loop over all ETS entries, attach a monitor to each and reenter the new MonitorRefs into the table? This might be slow, no? Maybe my architecture can be improved? Any advice?<br>
> ><br>
> > thanks<br>
> > Konstantin<br>
> ><br>
> ><br>
> > _______________________________________________<br>
> > erlang-questions mailing list<br>
</div></div>> > <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a> (mailto:<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a>)<br>
> > <a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
><br>
><br>
> _______________________________________________<br>
> erlang-questions mailing list<br>
> <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a> (mailto:<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a>)<br>
> <a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br>
<br>
<br>
</blockquote></div><br></div>