Cuando el controlador Go detecta que se canceló un contexto, creo que inactivará la conexión y la devolverá al grupo. ¿Eso implica que la operación de base de datos en ejecución que inició también se eliminará en el servidor? ¿O eso continúa?
Puede leer la documentación oficial sobre cómo el controlador usa el contexto aquí .
Sección correspondiente: lectura y escritura de sockets:
Cuando el controlador recupera una conexión para una operación, establece la fecha límite de lectura o escritura del socket en la fecha límite del contexto o el tiempo de espera del socket, lo que sea más corto.
Si cancela el Contexto después de la ejecución de la función
Read()oWrite()pero antes de su fecha límite, el comportamiento del controlador difiere según la versión.El controlador genera una rutina go separada para escuchar la cancelación de contexto cuando la función
Read()oWrite()está en curso. Si goroutine detecta una cancelación, cierra la conexión. La funciónRead()oWrite()pendiente devuelve un error que el controlador sobrescribe con elcontext.Canceled. Error cancelado.
Tenga en cuenta que cerrar la conexión solo significa volver a colocarla en el grupo como inactiva. No hay una declaración explícita sobre la cancelación de la operación en el servidor, pero obviamente se envía una señal de que el cliente abandona la operación y ya no supervisa ni se preocupa por el resultado. El servidor MongoDB sería tonto si no abortara la operación iniciada si puede ser. Por ejemplo, si la operación fue una consulta, se puede cancelar. Si se trata de una operación de escritura (como inserción o actualización), es posible que no se cancele.