Skip to content

Replay send log markers ​

When the backend replays a case, it logs one line just before it sends the recorded entry request to your service and one line after. These lines tell you whether a failed case ever reached your application.

These markers are written when the backend sends the request directly over HTTP. When the app has an active sp tunnel, requests go through the tunnel instead and the backend logs [TUNNEL] … lines rather than these markers.

They are backend rows (service_name is usually sp-backend) in a log lookup by the case's traceId — see sp logs. When correlation works, recordedTraceId in the message equals the row's trace_id.

Messages ​

PrefixLevelMeaning
Replay send start:INFOAbout to send the recorded entry request
Replay send done:INFOGot a response; status and duration are included
Replay send failed:WARNNo successful response: connection error, timeout, or a 4xx/5xx status from the service
Replay send slow:WARNThe request took longer than 10 seconds (logged after done)

Each prefix is followed by comma-separated key=value pairs (plain text, not JSON).

Fields ​

FieldInDescription
planIdstart, done, failed, slowReplay plan ID
targetEnvstart, done, failedtrue when the request goes to the replay target URL (--env / targetEnv)
methodallHTTP method (GET, POST, …)
urlallFull URL that was called, including the query string
recordedTraceIdstart, done, failedTrace ID from the recording
spanIdstart, done, failedSpan ID active while sending
httpStatusdone, failedResponse status code on done; always -1 on failed
durationMsdone, failed, slowTime spent on the request, in milliseconds
errorfailedError message. When the service answered with a 4xx/5xx status, the status is in here (for example 500 Internal Server Error)

Examples ​

text
Replay send start: planId=6a3f2aad59f0c4655b0f99da, targetEnv=true, method=POST, url=http://order-service.test:8080/api/orders, recordedTraceId=2057ad46a7ce03d3955385f2a4142d29, spanId=8d10c94a2a6f4e11

Replay send done: planId=6a3f2aad59f0c4655b0f99da, targetEnv=true, method=POST, url=http://order-service.test:8080/api/orders, recordedTraceId=2057ad46a7ce03d3955385f2a4142d29, spanId=8d10c94a2a6f4e11, httpStatus=200, durationMs=142

Replay send failed: planId=6a3f2aad59f0c4655b0f99da, targetEnv=true, method=POST, url=http://order-service.test:8080/api/orders, recordedTraceId=2057ad46a7ce03d3955385f2a4142d29, spanId=8d10c94a2a6f4e11, httpStatus=-1, durationMs=30001, error=Connection refused

How to use them ​

  1. Take the traceId of the failed case from sp replay case list --plan <planId> --failed --json.
  2. Look up its logs (see Diagnose a failed replay — logs).
  3. Keep source=backend rows whose body starts with Replay send.
What you seeLikely cause
No Replay send startThe request went through sp tunnel (look for [TUNNEL] lines), or the case never got as far as sending — check the plan's status (it may have been stopped, or failed while preparing)
start with no done or failedThe request may still be running, or the window is too narrow — widen it
failed, and error is a connection error or timeoutThe backend couldn't reach the target — check the --env URL, DNS, firewall, and that the service is running
failed, and error starts with a 4xx/5xx statusThe service answered with an error — read the agent and app logs after the start time
done with 2xx, but the case still failsThe request reached the service; the difference is in the response or in mocking — look at the diff

These often show up for the same request:

PrefixLevelMeaning
Replay send error:ERRORStack trace of a failed send (follows Replay send failed)
Replay send result invalid:ERRORA response came back, but without the headers needed to read the replay result

Capture Sessions · Review Steps · Improve what matters