持久函数子编排永远不会返回到父编排



我有一个子编排,它调用了几个活动。其中一个活动被调用约150次,每个活动都被放入一个任务列表中,然后等待任务。WhenAll(List(。每个任务都返回一个base64编码的图像,因此消息在较大的一侧。

编排聚合这些活动的结果,并将它们返回给父编排。使用调试器逐步完成时,编排将正确完成并返回适当的结果。

在收到子编排的结果后的下一步,我在父编排中有一个断点,但它永远不会被命中。结果永远不会返回到父级。

这可能与从子业务流程返回的消息大小有关吗?

如果我在父编排中内联子编排代码,而不是将其称为子编排,则工作良好

这似乎是持久函数框架中的一个bug。我遇到了同样的问题,Javascript编排器会在子编排完成后立即退出,并且在子编排后不执行代码。该问题似乎源于一个错误,即如果子业务流程没有定义instanceId,则持久函数框架无法从保存状态检索子业务流程的输出。因此,通过指定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

最新更新