Azure durable function orchestrator cannot complete the loop process

31 Views Asked by At

Durable function orchestrator cannot complete the loop process. It returns and executes again and again. I have read the documentation and it looks ok to have a loop in the orchestrator.

const df = require("durable-functions");

module.exports = df.orchestrator(function* (context) {
    
    const getProductAMTDataResult = yield context.df.callActivity("getProductAMTData", undefined);
    const productAMTData = getProductAMTDataResult[1];

    let productUpdateDataList = [];
    productAMTData.forEach (element => {
        const productId = element.REF;
        const amt = element.CALC_VALUE;

        productUpdateDataList.push({
            "productId": productId,
            "amt": amt
        });
    });  

    let tasksCount = 0;
    let tasks = [];
    for (var j in productUpdateDataList) {
        const productUpdateData = productUpdateDataList[j];
        const productId = productUpdateData["productId"];

        const getProductDataResult = yield context.df.callActivity("getProductData", productId);
        const productData = getProductDataResult[1];

        productUpdateData["productData"] = productData;
        const getProductProvisionsDataResult = yield context.df.callActivity("getProductProvisionsData", productUpdateData);
        const productProvisionsData = getProductProvisionsDataResult[1];
        if (!productProvisionsData) {
            continue;
        }
        
        const productProvisions = productProvisionsData["provisionsEntries"];
        for (var e in productProvisions) {
            const entryData = productProvisions[e];
            tasks.push(context.df.callActivity("makeEntries", entryData));
            tasksCount++;
        }

        if (tasksCount >= 30) {
            const results = yield context.df.Task.all(tasks);
            tasks = [];
            tasksCount = 0;
        }
    }

    if (tasksCount > 0) {
        const results = yield context.df.Task.all(tasks);
    }

    return;
});

My different realizations have such problems.

0

There are 0 best solutions below