Timeouts in Oda

Slow work in DataMind Oda is bounded: a step that can stall carries a time limit, and when it passes that limit Oda receives a timeout in place of the step's result, then decides what to do next. This page is the reference for those limits: where each one comes from, what a timeout reports, and how a limit's value is checked. What a timeout looks like while you follow a task is on Repeated steps and tool timeouts.

The two layers of a limit

What a timeout reports

CodeWhat fired
TOOL_TIMEOUTA tool's call budget. The text says it timed out and how long it waited, like timed out after 50ms.
BASH_TIMEOUTA shell step's own time limit. The reason reads like BASH_TIMEOUT after 100ms: the kind of timeout, then the limit that fired.
WEB_FETCH_TIMEOUTThe page reader's own backstop, on a call that ran without a tool budget above it: web fetch timed out.
LLM_STREAM_IDLE_TIMEOUTA streaming reply that went quiet past the route's Stream idle timeout (Provider route settings reference).

What a limit does, and does not do

How a limit's value is checked

Before a time zone is stored

Questions, answered

Where does a call's time limit come from?

Each tool that can stall carries its own budget; web search and page reading carry 30 seconds each by default. Behind the page reader sits a second backstop, a resource guard rather than the budget the call is judged by: a call through the web tools is judged by the tool's budget, and a call that reaches the reader with no budget above it is judged by the backstop.

What do the timeout codes mean?

TOOL_TIMEOUT is a tool's call budget; BASH_TIMEOUT is a shell step's own time limit; WEB_FETCH_TIMEOUT is the page reader's backstop, seen when a call ran without a tool budget above it; and LLM_STREAM_IDLE_TIMEOUT is a streaming reply that went quiet. The code travels with the timeout text, for example timed out after 50ms.

Can I switch a time limit off?

No. There is no zero setting that disables a timeout: zero and negative values are refused. A limit is either left out, so the tool's own default applies, or set as a positive, finite number.

What happens if I leave a limit out or set it above its maximum?

Left out, the limit falls back to the tool's own default. Set above its maximum, it is capped at the maximum.

Is the stream idle watch a limit on the whole reply?

No. The stream idle watch runs only while a step waits for the next piece of a streaming reply: as long as pieces keep arriving, the wait goes on. It fires when the reply goes quiet, not when it runs long.

What happens when a stop and a timeout fire together?

The report follows whichever reason arrived first. A reason that arrives after the first one is already recorded does not replace it.

Which time zone names are accepted?

UTC or an IANA name in Area/Location form, such as Europe/Berlin; the accepted value is kept in the platform's canonical spelling. Blank or padded values, abbreviations such as CST or GMT+8, single-segment names such as Asia, lower-case utc and names the platform does not support are refused, and a refusal shows as an invalid-time-zone error.

How large can a single wait be?

No wait is longer than 2,147,483,647 ms, the largest delay that can be scheduled. A value above a limit's own maximum is capped at that maximum.