Skip to content

Serialised Operation Timed Out

URI: https://docs.ankatech.co/errors/serialised-operation-timeout
HTTP Status: 503 Service Unavailable

When you see this

Another request was completing an operation that must be applied one at a time, and the wait for it exceeded the configured bound. Nothing was changed.

503 and not 500: nothing is wrong with the request and nothing is defective — the same body a moment later succeeds. A 500 would send an operator looking for a defect that does not exist. Nor 409: the conflict this lock serialises was never evaluated, so claiming one would assert something this deployment does not know.

Common Causes

  • Two writes to the same serialised resource arriving close together, where the first held the lock past the wait bound.
  • A burst of concurrent declarations or bindings from an automation loop.
  • An unusually slow write holding the lock — for example one contending on a busy database.

Response Example

{
  "type": "https://docs.ankatech.co/errors/serialised-operation-timeout",
  "title": "Serialised Operation Timed Out",
  "status": 503,
  "detail": "Another request is currently completing an operation that must be applied one at a time, and the wait for it exceeded the configured bound. Nothing was changed. Retry the request.",
  "instance": "/api/v3/admin/tenants/3f9a1b62-5d47-4c8e-b0a2-91d7e4f60cc5/workload-identity/issuers",
  "timestamp": 1730000000,
  "extensions": {
    "requestId": "550e8400-e29b-41d4-a716-446655440000"
  }
}

Content-Type: application/problem+json — the response follows RFC 9457 Problem Details.

The body names no lock key, no issuer URL and no tenant. The wait tells the caller nothing about who was holding the lock, which is also what stops it becoming an existence oracle for a concurrent declaration.

How to Resolve

  1. Retry the request. Nothing was written, so the retry is safe and is the intended response.
  2. If an automation issues these writes, serialise them client-side or add a short backoff rather than firing them concurrently.
  3. If it persists, investigate what is holding the operation open for longer than the wait bound — persistent occurrences point at a slow write, not at contention.

For full schema definitions, examples, and interactive testing, see the Developer Hub Reference.