The outbound routing flow hits a custom Data Action built in Studio, which calls an internal REST endpoint via a SNIPPET action. Everything worked fine until Tuesday. Now the SNIPPET transformation step hangs for exactly 12 seconds before returning a 504 Gateway Timeout. The REST Proxy is configured to point at our London BYOC cluster, running on version 4.2.1.8.
Reasoning through the failure path first. Step one: the flow pulls the contact record using a standard Data Action. Step two: a SNIPPET action parses the JSON response and maps the customFields array into a new variable. The SNIPPET code looks like this: const mapped = payload.customFields.map(f => ({ key: f.name, val: f.value })); return { data: mapped };. Studio marks the action as successful, but the actual HTTP request never leaves the edge.
Checked the network traces. The TLS handshake completes without issue. The problem sits right at the payload serialization stage. When the SNIPPET object exceeds roughly 4KB, the REST Proxy drops the connection. Shrinking the payload to 2KB fixes it immediately. Doesn’t make much sense since the docs state a 64KB limit for SNIPPET context variables.
The flow is running on the CXone US-East environment, but the BYOC edge is definitely routing through eu-west-2. Cross-region latency shouldn’t break a local variable assignment. The console just spins. Doing jack all while the queue backs up. Mic stays hot on the test line.
Tried bypassing the SNIPPET and passing the raw JSON directly to the REST Proxy call. Same timeout. The x-request-id header matches across all logs, but the server-side trace shows a ERR_HTTP_HEADERS_TIMEOUT right after the Content-Length header gets written. Maybe the new Studio runtime patch changed how the SNIPPET engine handles async promises? The build was deployed at 09:15 GMT. All the other flows using the same SNIPPET action are throwing TypeError: Cannot read properties of undefined (reading 'map') now.
{
“error”: “timeout”,
“code”: 504,
“details”: “SNIPPET execution exceeded 12000ms”,
“trace”: “flow_id: 8842-a1b, action: transform_contact_data”
}
The payload structure hasn’t changed in months. The REST Proxy config is identical. Just the runtime version bumped to 2.3.1.0. The edge logs cut off right after the…