[erlang-questions] (no subject)

Khitai Pang <>
Tue Mar 15 10:33:35 CET 2016


sorry for the untitled email

On 2016/3/15 17:31, Khitai Pang wrote:
> I have been trying to use gproc with 
> https://github.com/garret-smith/gen_leader_revival.  I found that 
> registering a name which is already registered will destroy the 
> existing registration of the name, and a remote node is unaware of 
> this.  See the following steps:
>
>
> Register node1 shell as global name 'abcde' on node1, the name is 
> visable on node2 and sending messages from node2 shell to 'abcde' 
> works fine:
>
> (node1)1> gproc:reg({n, g, abcde}).
> true
> (node1)2> gproc:where({n, g, abcde}).
> <0.229.0>
>
> (node2)1> gproc:where({n, g, abcde}).
> <8049.229.0>
> (node2)2> gproc:send({n, g, abcde}, hello).
> hello
>
> (node1)3> flush().
> Shell got hello
> ok
>
>
> Now on node1 shell register with the name again, it removes the 
> existing registration:
>
> (node1)4> gproc:reg({n, g, abcde}).
> ** exception error: bad argument
>      in function  gproc:reg/1
>         called as gproc:reg({n,g,abcde})
> (node1)5> gproc:where({n, g, abcde}).
> undefined
>
>
> But on node2 the shell still gets <8049.229.0>:
>
> (node2)3> gproc:where({n, g, abcde}).
> <8049.229.0>
>
>
> And sending message from node2 shell to 'abcde' still works 'fine', 
> but the node1 shell doesn't get any message:
>
> (node2)4> gproc:send({n, g, abcde}, hello).
> hello
>
> (node1)6> flush().
> ok
>
>
> Now if I register node1 shell as {n, g, abcde} again, everything works 
> fine again:
>
> (node1)7> gproc:reg({n, g, abcde}).
> true
>
> (node2)5> gproc:where({n, g, abcde}).
> <8049.268.0>
> (node2)6> gproc:send({n, g, abcde}, hello).
> hello
>
> (node1) 8> flush().
> Shell got hello
> ok
>
>
> This doesn't look right to me.
> 1) When registering with a name already registered, why doesn't gproc 
> return something like {error, already_registered}?
> 2) After the registration is removed, why does a remove node still 
> sees the non-existent registration?
>
>
> Thanks
> Khitai
>
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20160315/9238a37d/attachment.html>


More information about the erlang-questions mailing list