Troubleshooting
Start with the pipeline's status. Replace debug with the ID in your Tenon Document:
curl --fail http://127.0.0.1:18080/pipelines/debug
No output
Check the path from input to destination:
- Source: confirm that input exists. Dummy Source is intentionally idle; use a Lua timer as in First Pipeline.
- Lua: inspect the Flow's diagnostics. Confirm that
mainaccepts the event and callsemit. - Sink: confirm that it is listed in the Flow and that the Builder uses its exact
programName@exactVersioncontract. - Destination: check connectivity, credentials, and the actual subscriber or service output.
Follow live diagnostics to inspect Lua and plugin messages.
A Tenon Document is saved but not applied
Compare documentEtag with appliedDocumentEtag, then read runtimeIssues:
| Issue | Next step |
|---|---|
| Missing plugin or wrong version | Install the exact Program version named in the Tenon Document |
| Platform mismatch | Build the plugin for the Runner's OS and CPU architecture |
| Invalid plugin configuration | Check the installed plugin's configuration schema |
| Missing interface | Check that each connected Source or Sink is supported by its plugin; an unused supported interface may remain unconnected |
| Invalid Lua runtime binding | Check the Flow's Sink contracts and Builder lookup |
An older configuration may still be running. Use the current ETag for a replacement PUT.
A plugin repeatedly restarts
- Read the plugin's state and
lastErrorin pipeline status. - Inspect that plugin's stdout and stderr diagnostics.
- Test the external service independently;
runningalone does not prove connectivity. - If the installed package is missing or damaged, rebuild and reinstall the original Program identity and content.
Messages repeat after recovery
Check the plugin's acknowledgement and replay behavior. Reconnects, failed Sink completion, and process restarts can repeat messages. Use stable IDs and downstream deduplication where duplicates matter; see Delivery & Recovery.