Hello Everyone,
I'm encountering an issue where the second output from a Switch node isn't executing the subsequent inline node. This happens regardless of the node used in the second output. It functions correctly for a few runs and then stops. It does work if I manually trigger the play button on the node. Sometimes, the top path of the flow executes, followed by the bottom path, but this isn't consistent. The node is configured to retry on errors, but this doesn't seem to resolve the problem. I'm concerned about its reliability in a production environment, as I'm building this to process orders.
This is a self-hosted callin.io instance. The only errors are present in the Docker logs, which don't seem to relate to this specific node. The node itself does not report any errors.
node execution output incorrect data Error: node execution output incorrect data at WorkflowExecute.runNode (/usr/local/lib/node_modules/callin.io/node_modules/.pnpm/callin.io-core@file+packages+core_openai@5.8.1_ws@8.17.1_zod@3.25.67_/node_modules/callin.io-core/src/execution-engine/workflow-execute.ts:1219:6) at processTicksAndRejections (node:internal/process/task_queues:105:5) at /usr/local/lib/node_modules/callin.io/node_modules/.pnpm/callin.io-core@file+packages+core_openai@5.8.1_ws@8.17.1_zod@3.25.67_/node_modules/callin.io-core/src/execution-engine/workflow-execute.ts:1581:27 at /usr/local/lib/node_modules/callin.io/node_modules/.pnpm/callin.io-core@file+packages+core_openai@5.8.1_ws@8.17.1_zod@3.25.67_/node_modules/callin.io-core/src/execution-engine/workflow-execute.ts:2157:11
Information on callin.io setup
- callin.io version:Version 1.103.1
- Database (default: SQLite):N/A
- callin.io EXECUTIONSPROCESS setting (default: own, main):cron_
- Running callin.io via (Docker, npm, callin.io cloud, desktop app):Docker
- Operating system:ubuntu Server
Welcome to the community.
If you need to execute a second branch of your workflow, place a merge node after XML1 and the Move binary Data node, then merge them together before proceeding to the Aggregate node.
There are several modes available, depending on the outputs you require and how you want them formatted when they exit the merge node.
You can find more information about the node here:
I'm unable to merge them since each item represents an individual order. The file formats are kept separate for conversion to JSON. Additionally, the aggregate node is not needed; I was attempting to get the node to execute but couldn't without manually triggering it.
This is how it was originally configured:
You don't need to merge them in a way that combines two orders into one; you can merge them by appending one after the other, for example.
If I'm understanding correctly, the workflow performs the following actions:
- Lists files on an FTP/SFTP server
- Downloads specific files
- Branches into one of two paths based on the file format (I assume)
What outcome are you aiming for after these steps?
Following that:
- Both branches are converted to JSON.
- The code node generates standard JSON, filters, and corrects invalid addresses.
- The database is checked to see if the order already exists in the system.
- Results are merged using the PO.
- A switch determines whether the outcome is true or false.
- The switch dictates the type of import statement to the database based on customer requirements.
- The ID of the import header is retrieved.
- Results are merged with the import data.
- Line items are filtered based on the customer.
- Line items are imported.
It's quite cumbersome having to perform these extra steps because I cannot use two import statements in the SQL node like in Node-RED by retrieving the last inserted ID.
I understand. Reviewing the flow again, I agree that the merge node isn't strictly necessary here. Since only one branch (either Extract from File or Move Binary Data) will execute for a given file, it's never both.
Have you checked the execution logs to pinpoint where the error occurs? You also mentioned that the subsequent node sometimes doesn't execute. This typically happens when the preceding node doesn't produce any output, as a node's action is triggered by its input. If no output is expected, enabling "Always output" in the settings is the recommended approach:
This ensures that even if there's no output, an empty output is generated, allowing the next node to execute without any input context.
Based on the screenshot, it appears the data from the FTP server consists of 3 files. These files are split at the switch node, with 2 files going to the top branch and 1 file going to the bottom branch. The top branch proceeds to the end, while the bottom branch seems to halt before the Move Binary Data Node?
How does this setup appear?
That is correct. The top converts XML to JSON, and the bottom converts binary to JSON. The latter is the only one experiencing intermittent issues.
Regarding the errors, I have the output errors selected in the settings, but it never outputs an error when it fails to process the input.
It just occurred to me – I noticed you have a "Move Binary Data" node in your workflow. How old is your callin.io installation? The initial post mentions Version 1.103.1, but this node was actually renamed back in 2023. Did you create this workflow yourself, or was it copied from somewhere else?
I utilized the Docker run command from the quick start guide. The version is what I found in the settings at the bottom of the side panel. The 'Move Binary Data' node was copied from a forum post. However, the issue occurs with any node. So, if I place the File node there and use 'Transform JSON', it will halt and behave similarly.
Could you share your workflow by embedding it here? Perhaps I can assist you in getting it to function with the latest version.