记一次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啦。
检查代码,各个方面都没有问题,最后在自己试验中,发现了问题,如下
很明显,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啦。
相关文章推荐
- 记一次线上分布式redis服务BUG发现与修复过程
- 记一次系统稳定性问题的分析处理过程(因CallContext使用不当而造成bug)
- 记一次系统不能正常加载的修复过程
- 记一次centos 6 x64位系统修复过程
- erlang关闭一个socket进入死循环的bug修复过程
- 记录一次celery+rabbitmq的bug修复过程
- sql2java:一次外科手术式的bug修复过程
- 记一次安卓BUG修复的过程
- 一次windows server 2003系统修复过程
- 一次项目开发过程中遇到的问题--错误的表单校验导致我的整个系统宕机
- 长时间latch free等待——记一次系统异常的诊断过程
- openx开源广告系统修复中文乱码bug问题
- [正式发布]库存管理系统v1.1!修复大量BUG,以及UI显示!
- Ubuntu U盘启动盘修复更新后无法启动系统的bug
- 一次系统修复小记
- Erlang服务器内存耗尽bug跟踪过程
- 长时间latch free等待——记一次系统异常的诊断过程
- Suse 11 下一次文件系统修复的案例
- 分批载入:载入XML数与图片数不相同(一次载入25个xml图片地址,点击下一页载入5张图片)(存在BUG,未修复)
- 速达DMS分布式管理系统Interbase数据库修复成功