我有一个设置,我有四个正在运行的服务器实例,每个服务器框有两个实例。我的服务器涉及大量传递匿名函数并在不同的线程上运行它们(可能在不同的服务器上)。
今天我重新加载了代码,其中涉及更改其中一个实例上的一些静态函数的内容(计划按顺序执行每个实例)。在运行我的重新加载时,我遇到了大量的badfun
错误。那个盒子上的另一个实例也开始吐出类似的错误。另一个盒子上的两个实例我们似乎没有受到影响。
我发现这篇文章: http ://www.javalimit.com/2010/05/passing-funs-to-other-erlang-nodes.html 这似乎暗示这些错误的原因是匿名函数有不同的版本在两个节点之间,因此它坏了。但是,在测试中我无法重现此错误。此外,我之前已经多次重新加载代码而没有看到类似的内容。然而,这是我第一次为每个盒子重新加载两个实例(以前是每个盒子一个实例)。有没有人知道为什么会发生这种情况,以及如何防止它(不杀死所有东西并重新启动它,这是我必须做的)。