Long-running tailable cursors consume too much memory

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Done
    • Priority: Major - P3
    • 2.13.0
    • Affects Version/s: 2.7.2
    • Component/s: Query Operations
    • None
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      I already posted it on the mailing list, it didn't receive any replies, but I still think it's a bug. Please correct me if I'm wrong.

      A tailable cursor on a capped collection can live potentially for a long time and return multiple batches of data.
      However, it seems to me that the size of each batch that is read from Mongo is added to the list: DBApiLayer.Result._sizes, in the DBApiLayer.Result.init method, called from the _advance method.

      The list is available via DBCursor.getSizes().

      If the list grows and grows, especially if there's a lot of data added to the capped collection, eventually it will OOM.

      Is that right?

      UPDATE:

      Added DBCursor.disableBatchSizeTracking() to work around this problem.

            Assignee:
            Jeffrey Yemin
            Reporter:
            Adam Warski
            None
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: