Errores

conflict

409. El estado actual del recurso impide la operación, una petición con la misma Idempotency-Key sigue en curso, u otra escritura retenía el recurso, o la base de datos abortó la transacción por un conflicto transitorio, así que no se escribió nada. La causa está en errors[0].code: invalid_state para el primer caso, in_progress para el segundo y lock_timeout para el tercero. detail no sirve para decidir. HTTP 409.

Estado HTTP
409
Tipo del problema
https://docs.filmo.io/errors/conflict

Ejemplo

{
  "type": "https://docs.filmo.io/errors/conflict",
  "title": "Conflict",
  "status": 409,
  "code": "conflict",
  "detail": "The current state of the resource does not allow the operation",
  "requestId": "req_0b9f6c1d2e3a4f5a8b7c6d5e4f3a2b1c",
  "errors": [
    {
      "path": "",
      "code": "invalid_state",
      "message": "The current state of the resource does not allow the operation"
    }
  ]
}

Cuándo ocurre

409. El estado actual del recurso impide la operación, una petición con la misma Idempotency-Key sigue en curso, u otra escritura retenía el recurso, o la base de datos abortó la transacción por un conflicto transitorio, así que no se escribió nada. La causa está en errors[0].code: invalid_state para el primer caso, in_progress para el segundo y lock_timeout para el tercero. detail no sirve para decidir.

Qué hacer

Ramifica según errors[0].code. Para in_progress y lock_timeout, espera y envía de nuevo la misma petición con la misma Idempotency-Key; con backoff para lock_timeout. Si un 409 in_progress persiste unos dos minutos, la reserva se considera abandonada y el siguiente intento con la misma clave se ejecuta, así que lee el recurso antes de reintentar. Para invalid_state, no reintentes sin cambios: lee el recurso y, si la petición aún encaja, puedes enviarla de nuevo; si no, cámbiala para que encaje con su estado; por ejemplo, archivar un pedido que no es borrador ni está cancelado, anular la reserva de un pedido cancelado o cancelar uno ya recepcionado.

Reintento

  • Reintentar con la misma clave409 conflict · in_progress · Idempotency-Key: Sí

    errors[0].code es in_progress: otra petición con la misma Idempotency-Key sigue en curso. Espera y reintenta con la misma clave (espera exponencial, hasta 3 veces): recibirás su respuesta guardada cuando termine.

  • Reintentar con espera exponencial409 conflict · lock_timeout

    errors[0].code es lock_timeout: otra escritura condicional retuvo el recurso más de 5 s. Reintenta con la misma clave y espera exponencial, hasta 3 veces; si persiste, vuelve a leer el recurso.

  • Leer antes el recurso409 conflict · invalid_state

    errors[0].code es invalid_state: el estado del recurso impide la operación (una violación de unicidad, una línea de un lote atómico). No reintentes: esperar no lo arregla nunca. Vuelve a leer el recurso y decide según su estado actual.

Campos de errors[]

errors[].codestring

Código estable del error de campo (required, must_not_be_null, invalid_type, invalid_value, too_small, too_big, unknown_field, invalid_format, not_found, must_be_after…). En un 409 conflict indica la causa: in_progress (otra petición con la misma Idempotency-Key sigue en curso), lock_timeout (otra escritura condicional retuvo el recurso durante más de cinco segundos) o invalid_state (el estado del recurso prohíbe la operación).

Lo devuelven

98 operaciones

Por MCP

Una llamada a una herramienta que falla vuelve con `isError` y el problema como contenido estructurado, con el mismo `code`.

Estado

¿Te ha resultado útil esta página?