From 37673fcc063e7b082552f8428bfbaadd97ae9d15 Mon Sep 17 00:00:00 2001 From: Christos KK Loverdos Date: Fri, 23 Dec 2011 12:30:47 +0200 Subject: [PATCH] Close mongodb query cursors. --- .../gr/grnet/aquarium/store/mongodb/MongoDBStore.scala | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/scala/gr/grnet/aquarium/store/mongodb/MongoDBStore.scala b/src/main/scala/gr/grnet/aquarium/store/mongodb/MongoDBStore.scala index 422f3f3..90082dd 100644 --- a/src/main/scala/gr/grnet/aquarium/store/mongodb/MongoDBStore.scala +++ b/src/main/scala/gr/grnet/aquarium/store/mongodb/MongoDBStore.scala @@ -132,11 +132,14 @@ class MongoDBStore( val cursor = col.find(_prepareFieldQuery("id", entry.id)) if (!cursor.hasNext) { + cursor.close() logger.error("Failed to _store entry: %s".format(entry)) return Failed(new StoreException("Failed to _store entry: %s".format(entry))) } - Just(RecordID(cursor.next.get("_id").toString)) + val retval = Just(RecordID(cursor.next.get("_id").toString)) + cursor.close() + retval } catch { case m: MongoException => logger.error("Unknown Mongo error: %s".format(m)); Failed(m) @@ -149,24 +152,31 @@ class MongoDBStore( val cur = col.find(q) - if (cur.hasNext) + val retval = if (cur.hasNext) Some(_deserializeEvent(cur.next)) else None + + cur.close() + retval } private[this] def _query[A <: AquariumEvent](q: BasicDBObject, col: DBCollection) (sortWith: Option[(A, A) => Boolean]): List[A] = { val cur = col.find(q) - if (!cur.hasNext) + if (!cur.hasNext) { + cur.close() return List() + } val buff = new ListBuffer[A]() while(cur.hasNext) buff += _deserializeEvent(cur.next) + cur.close() + sortWith match { case Some(sorter) => buff.toList.sortWith(sorter) case None => buff.toList -- 1.7.10.4