Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

MongoDB\with_transaction()

Nuevo en la versión 1.5.

MongoDB\with_transaction()

Ejecuta una función de retorno dentro de una transacción utilizando la sesión de cliente dada

function with_transaction(
MongoDB\Driver\Session $session,
callable $callback,
array $transactionOptions = []
): void
$session : MongoDB\Driver\Session
Una sesión de cliente utilizada para ejecutar la transacción.
$callback : invocable
Una función de retorno que se ejecutará dentro de la transacción. La función de retorno debe aceptar un objeto MongoDB\Driver\Session como su primer argumento.
$transactionOptions : arreglo
Opciones de transacción que se pasarán a MongoDB\Driver\Session::startTransaction. Consulta la documentación de la extensión para ver una lista de opciones compatibles.

Esta función es responsable de iniciar una transacción, invocar una función de retorno y confirmar una transacción. También aplica la lógica para reintentar este proceso después de ciertos errores dentro de un límite de tiempo preestablecido. Se espera que la función de retorno ejecute una o más operaciones dentro de la transacción pasando el argumento MongoDB\Driver\Session de la función de retorno como una opción para esas operaciones; sin embargo, eso no se exige.

Nota

Se recomienda encarecidamente que las aplicaciones utilicen una función de devolución de llamada idempotente, ya que puede invocarse varias veces si se producen errores que permiten reintentos durante la ejecución de la función de devolución de llamada o durante la confirmación de la misma.

Cualquier excepción lanzada durante la ejecución de la función de retorno será capturada y evaluada. Si una excepción tiene una etiqueta de error TransientTransactionError, la transacción se abortará, reiniciará y se invocará la función de retorno de nuevo. Para cualquier otra excepción, la transacción será abortada y la excepción relanzada para propagar el error al llamador de with_transaction().

Después de la ejecución exitosa de la función de retorno, la transacción será confirmada. Si se encuentra una excepción con una etiqueta de error UnknownTransactionCommitResult, la confirmación se volverá a intentar. Si se encuentra una excepción con una etiqueta de error TransientTransactionError, la transacción se reiniciará y el control volverá a la invocación de la función de retorno. Cualquier otra excepción se volverá a lanzar para propagar el error al llamante de with_transaction().

Cuando se produce un error durante la ejecución de la función de retorno o el commit, el proceso solo se vuelve a intentar si han transcurrido menos de 120 segundos desde la primera vez que se llamó a with_transaction(). Este límite de tiempo no se puede configurar. Después de este tiempo, cualquier excepción que normalmente resultaría en un intento de reintento, en cambio, se volverá a lanzar.

MongoDB\Exception\InvalidArgumentException por errores relacionados con el análisis de parámetros u opciones.

MongoDB\Driver\Exception\RuntimeException para otros errores a nivel de extensión (por ejemplo, " errores de conexión).