Logic

Run history and retries

Every time a function runs, XFORG records what it received, what it returned and where it failed. Use that history to find and fix problems.

The run log

Open a function and choose the Runs tab. Recent runs lists its last 100 runs from every source, so your tests sit next to what happened on the live site. Click Refresh to update it.

Status

Succeeded, Failed or Timed out.

Source

Event, Schedule, Form, Page or Test.

Duration

How long the run took.

Error

What went wrong, when something did.

Read a run

Click Details on a run to see:

Inputs it received.

Outputs it produced.

Failed at node: the node where the run stopped.

Execution trace: each node that ran before the failure, with what it received and returned. The trace is kept for failures only, and covers the most recent 40 nodes.

Retry a failed run

A failed event or scheduled run has the option Run this again with the same data. It runs through the function as it is now, with the payload and row it originally received.

1

Find the cause

Read the failed node and the trace.

2

Fix the function

Save and test your change.

3

Retry

Click Run this again with the same data, then check the history for how it went.

A retry is a real run. Its database changes are kept, and it calls external APIs again.

Runs from pages, forms and tests cannot be replayed: they ran for a signed-in visitor that cannot be reconstructed. A run that succeeded cannot be retried either.

Secrets are redacted

Any value stored under a name that points to a secret, such as password, secret, token, master key, API key, authorization or credential, is saved as [redacted]. Every other copy of that same value in the run is redacted too.

Name the inputs and ports that carry a secret after what they hold, for example password or apiKey, so they are kept out of history.

A retry replays the redacted inputs, so it cannot resend a secret.

Debugging tips

Most problems show up clearly when you compare a failed run with a test that worked.

If a function passes its test but fails on real events, compare the inputs of a failed run with your test inputs.

Event and scheduled runs have 10 seconds. A slow external API can make them time out.

For scheduled triggers, the Triggers tab also shows how the last run went, including when some rows failed.