Um erro "cursor não encontrado" do MongoDB é normalmente uma indicação de que o cursor expirou (após 10 minutos de inatividade), mas pode indicar que o código do cliente ficou confuso e está usando um cursor obsoleto ou fechado ou corrompeu o cursor de alguma forma. Se o tempo de execução de 3 horas incluísse muito tempo ocupado no cliente entre as chamadas para o MongoDB, isso poderia dar ao servidor tempo para expirar o cursor.
Você pode especificar uma opção sem tempo limite no cursor para ver se é um tempo limite do servidor do cursor que está causando o problema.