Вчера наткнулся на неожиданное поведение сервиса wb-rules. Повисал так, что даже restart не помогал - он висел висел, убивал сервис по таймауту, снова запускал - и тот снова зависал. Выяснил путем экспериментов, что проблема во вложенном вызове defineRule. При этом я заливал по ssh старую версию проблемного js файла, перезагружал сервис, и все работало нормально:
defineRule(when: <condition>
then: function(newValue){
...
defuleRule(...); // вот после этой строчки все виснет намертво.
};)
Нашел воркэраунд:
defineRule(
when: ...
then: function(newValue){
...
setTimeout{function() { defuleRule(...); }, 0); // так не виснет
};)
В документации про это ограничение ни слова. Ну и конечно хотелось бы максимум увидеть ексепшен, а не получить зависание целого сервиса… Воспроизвести проблему довольно легко, наверняка и правка будет простой. Если нужно, могу скинуть свой скрипт целиком.