持久功能子编排永远不会返回父编排

时间:2018-11-07 20:58:23

标签: azure-functions azure-durable-functions

我有一个子业务流程,它调用了几个活动。其中一项活动被称为〜150次,每个活动被放入任务列表,然后等待Task.WhenAll(list)。这些任务中的每一个都返回一个base64编码的图像,因此消息位于较大的一侧。

业务流程会汇总这些活动的结果,并将其返回给父业务流程。当逐步调试器时,业务流程将正确完成并返回适当的结果。

在收到子业务流程的结果后,下一步我在父业务流程中有一个断点,但是它从未被击中。结果永远不会返回到父级。

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

如果我将子业务流程代码内联到父业务流程中,而不是将其作为子业务流程调用,则效果很好

1 个答案:

答案 0 :(得分:0)

这似乎是持久性功能框架中的错误。我遇到了一个Javascript Orchestrator相同的问题,该问题会在subOrchestration完成后立即退出,并且在subOrchestration之后不执行代码。 问题似乎源于一个错误,即如果subOrchestration没有定义的instanceId,则持久函数框架无法从已保存状态检索subOrchestration的输出。因此,通过指定instanceId,代码将可以正常执行。

失败的我的协调器代码如下:

if (args[0] == "add"){
    // Make the AliasListener have the code from part 2
    Bukkit.getCommand(args[1]).setExecutor(aliasListener)

    // Store the alias and the command it replaces in the list.
    this.aliasList.put(args[1], args[2])
}

context.log将永远不会被调用。因此,我在callSubOrchestrator上手动指定了一个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');

以下是Github错误报告的链接:https://github.com/Azure/azure-functions-durable-js/issues/54