这似乎是持久函数框架中的一个错误。我在使用 Javascript 编排器时遇到了同样的问题,该编排器会在 subOrchestration 完成后立即退出,并且在 subOrchestration 之后不执行代码。该问题似乎源于一个错误,即如果 subOrchestration 没有定义的 instanceId,则持久函数框架无法从已保存状态检索 subOrchestration 的输出。因此,通过指定 instanceId,代码将正常执行。
我失败的编排器代码如下所示:
var reboot_result = yield context.df.callSubOrchestrator('reboot_orchestrator',reboot_input);
context.log('this is the next line after subOrch call which will not get called');
context.log 永远不会被调用。所以我在 callSubOrchestrator 上手动指定了一个 instanceId,这解决了这个问题:)
const child_id = context.df.instanceId + ":0"; //create instanceId
var reboot_result = yield context.df.callSubOrchestrator('reboot_orchestrator',reboot_input,child_id);
context.log('this is the next line after subOrch call and now it gets called properly');
这是 Github 错误报告的链接:https ://github.com/Azure/azure-functions-durable-js/issues/54