记一次erlang分布式系统的bug修复过程

    今天帮组朋友解决一个erlang分布式系统遇到的bug,大致过程是这样主节点A连接了两个次节点B和C,B把自己节点上的一个local进程PID存放到主节点A的ets表中,C节点通过远程调用得到这个PID,然后向这个PID发送消息。很简单一个过程,可是这个PID死活就是收不到这个消息。

    检查代码,各个方面都没有问题,最后在自己试验中,发现了问题,如下

    很明显,BC两个节点即使连接上了A点,但是这两个节点并没有互相连接在一起(只是有一个公共的连接节点A),当C节点向B节点的进程发送消息时,C节点首先去尝试连接B节点(至于为啥会这样,可以查看我之前写的博客http://blog.youkuaiyun.com/pyf725324/article/details/26381551),然后由于BC两节点的cookie不同,这个连接就华丽的失败了,即:** Connection attempt from disallowed node c@localhost **。

    既然这样,那解决方法也有了,设置BC节点的Cookie一致,问题就ok啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值