您的位置:首页 > 其它

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

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

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

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

    既然这样,那解决方法也有了,设置BC节点的Cookie一致,问题就ok啦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: