Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-1191

If IndexWriter hits OutOfMemoryError it should not commit

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 1.9, 2.0.0, 2.1, 2.2, 2.3, 2.3.1, 2.4
    • Fix Version/s: 2.3.2, 2.4
    • Component/s: core/index
    • Labels:
      None
    • Lucene Fields:
      New

      Description

      While progress has been made making IndexWriter robust to OOME, I
      think there is still a real risk that an OOME at a bad time could put
      IndexWriter into a bad state such that if close() is called and
      somehow it succeeds without hitting another OOME, it risks
      introducing messing up the index.

      I'd like to detect if OOME has been hit in any of the methods that
      alter IW's state, and if so, do not commit changes to the index. If
      close is called after hitting OOME, I think writer should instead
      abort.

      Attached patch just adds try/catch clauses to catch OOME, note that
      it was hit, and re-throw it. Then, sync() refuses to commit a new
      segments_N if OOME was hit, and close instead calls abort when OOME
      was hit. All tests pass. I plan to commit in a day or two.

        Attachments

        1. LUCENE-1191.patch
          26 kB
          Michael McCandless

          Activity

            People

            • Assignee:
              mikemccand Michael McCandless
              Reporter:
              mikemccand Michael McCandless
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: