Monger: consultas de longa duração sem exceções de tempo limite

Eu apenas tive problemas com a execução de consultas de longa data usando a biblioteca monger – mongodb para clojure sem obter exceções de tempo limite do cursor após cerca de 10 minutos.

Aqui está minha solução alternativa atual, até que minhas solicitações pull com interfaces atualizadas para funções find sejam aceitas:

A função monger.collection / find retorna o objeto DBCursor, que tem o método público setOptions, que aceita constantes da classe com.mongodb.Bytes.


(ns changelogger.db
(:require [monger.core :as mongo]
[monger.collection :as coll]
[monger.conversion :refer [from-db-object]]
[monger.joda-time])
(:import [com.mongodb Bytes]))
...

(defn get-sorted-products
"returns lazy-seq of products-map."
[the-criteria]
(let [db-cur (coll/find "products" the-criteria)]
(.setOptions db-cur Bytes/QUERYOPTION_NOTIMEOUT)
(map #(from-db-object %1 true) db-cur))

Valores válidos para setOptions em documentos mongodb