我有一个子编排,它调用几个活动。其中一个活动被调用了大约150次,每个活动都被放在一个任务列表中,然后等待Task.WhenAll(列表)。这些任务中的每一个都返回一个base64编码的图像,因此消息位于较大的一侧。
编排聚合这些活动的结果,并将它们返回给父编排。单步执行调试器时,编排将正确完成并返回相应的结果。
在收到来自子编排的结果后,我在父编排的下一步中有一个断点,但它从未命中。结果永远不会返回给父级。
这是否与从子编排返回的消息大小有关?
如果我在父业务流程中内联子业务流程代码,而不是将其作为子业务流程调用,则可以很好地工作
发布于 2019-08-17 06:28:26
这似乎是持久函数框架中的一个错误。我遇到了同样的问题,一个Javascript编排器将在subOrchestration完成时立即退出,并且在subOrchestration之后不执行代码。该问题似乎源于一个错误,如果subOrchestration没有定义的instanceId,则持久函数框架无法从保存状态检索子编排的输出。因此,通过指定一个instanceId,代码可以很好地执行。
我失败的orchestrator代码如下所示:
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 bug报告的链接:https://github.com/Azure/azure-functions-durable-js/issues/54
https://stackoverflow.com/questions/53197710
复制相似问题