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

AnalyzingInfixSuggester should close its IndexWriter by default at the end of build()

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: master (7.0), 6.4
    • Component/s: None
    • Labels:
      None

      Description

      From SOLR-6246, where AnalyzingInfixSuggester's write lock on its index is causing trouble when reloading a Solr core:

      Grant Ingersoll wrote:

      One suggestion that might minimize the impact: close the writer after build

      Varun Thacker wrote:

      This is what I am thinking -

      Create a Lucene issue in which AnalyzingInfixSuggester#build closes the writer by default at the end.
      The add and update methods call ensureOpen and those who do frequent real time updates directly via lucene won't see any slowdowns.

      Michael McCandless - Would this approach have any major drawback from Lucene's perspective? Else I can go ahead an tackle this in a Lucene issue

      Michael McCandless wrote:

      Fixing AnalyzingInfixSuggester to close the writer at the end of build seems reasonable?

      1. LUCENE-7564.patch
        13 kB
        Steve Rowe
      2. LUCENE-7564.patch
        13 kB
        Steve Rowe
      3. LUCENE-7564-fix-random-NRT-failures.patch
        8 kB
        Steve Rowe
      4. LUCENE-7564-fix-random-NRT-failures.patch
        4 kB
        Steve Rowe

        Issue Links

          Activity

          Hide
          steve_rowe Steve Rowe added a comment -

          Patch, adds a new constructor taking boolean param closeIndexWriterOnBuild, which defaults in all other constructors to true, and adds tests.

          Show
          steve_rowe Steve Rowe added a comment - Patch, adds a new constructor taking boolean param closeIndexWriterOnBuild , which defaults in all other constructors to true , and adds tests.
          Hide
          steve_rowe Steve Rowe added a comment -

          Patch with a test improvement: testing that SearcherManager's IndexWriter reference is closed after build when closeIndexWriterOnBuild=true.

          I think this is ready.

          Michael McCandless, if you have time, I'd appreciate a review.

          Show
          steve_rowe Steve Rowe added a comment - Patch with a test improvement: testing that SearcherManager's IndexWriter reference is closed after build when closeIndexWriterOnBuild=true. I think this is ready. Michael McCandless , if you have time, I'd appreciate a review.
          Hide
          mikemccand Michael McCandless added a comment -

          +1, thanks Steve Rowe.

          Show
          mikemccand Michael McCandless added a comment - +1, thanks Steve Rowe .
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit 4fedb640ab66920ea11c26ad520639912c95ff2c in lucene-solr's branch refs/heads/branch_6x from Steve Rowe
          [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=4fedb64 ]

          LUCENE-7564: AnalyzingInfixSuggester should close its IndexWriter by default at the end of build()

          Show
          jira-bot ASF subversion and git services added a comment - Commit 4fedb640ab66920ea11c26ad520639912c95ff2c in lucene-solr's branch refs/heads/branch_6x from Steve Rowe [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=4fedb64 ] LUCENE-7564 : AnalyzingInfixSuggester should close its IndexWriter by default at the end of build()
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit f9a0693bf98a4000b6568e7c63f3e303118470bd in lucene-solr's branch refs/heads/master from Steve Rowe
          [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=f9a0693 ]

          LUCENE-7564: AnalyzingInfixSuggester should close its IndexWriter by default at the end of build()

          Show
          jira-bot ASF subversion and git services added a comment - Commit f9a0693bf98a4000b6568e7c63f3e303118470bd in lucene-solr's branch refs/heads/master from Steve Rowe [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=f9a0693 ] LUCENE-7564 : AnalyzingInfixSuggester should close its IndexWriter by default at the end of build()
          Hide
          steve_rowe Steve Rowe added a comment -

          Thanks Michael McCandless for the review.

          Show
          steve_rowe Steve Rowe added a comment - Thanks Michael McCandless for the review.
          Hide
          steve_rowe Steve Rowe added a comment -

          My Jenkins found a non-reproducing master seed for a AnalyzingInfixSuggester.testRandomNRT() failure - I'm looking into it:

             [junit4] Suite: org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggesterTest
             [junit4]   2> ????? ?????? 23, 2016 10:32:50 ? com.carrotsearch.randomizedtesting.RandomizedRunner$QueueUncaughtExceptionsHandler uncaughtException
             [junit4]   2> WARNING: Uncaught exception in thread: Thread[Thread-1,5,TGRP-AnalyzingInfixSuggesterTest]
             [junit4]   2> org.apache.lucene.store.AlreadyClosedException: this ReferenceManager is closed
             [junit4]   2> 	at __randomizedtesting.SeedInfo.seed([32DB11C1C6E723F0]:0)
             [junit4]   2> 	at org.apache.lucene.search.ReferenceManager.acquire(ReferenceManager.java:98)
             [junit4]   2> 	at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:645)
             [junit4]   2> 	at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:457)
             [junit4]   2> 	at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggesterTest$LookupThread.run(AnalyzingInfixSuggesterTest.java:533)
             [junit4]   2> 
             [junit4]   2> NOTE: reproduce with: ant test  -Dtestcase=AnalyzingInfixSuggesterTest -Dtests.method=testRandomNRT -Dtests.seed=32DB11C1C6E723F0 -Dtests.slow=true -Dtests.locale=ar-SY -Dtests.timezone=America/Bahia_Banderas -Dtests.asserts=true -Dtests.file.encoding=US-ASCII
             [junit4] ERROR   6.37s J4 | AnalyzingInfixSuggesterTest.testRandomNRT <<<
             [junit4]    > Throwable #1: com.carrotsearch.randomizedtesting.UncaughtExceptionError: Captured an uncaught exception in thread: Thread[id=24, name=Thread-1, state=RUNNABLE, group=TGRP-AnalyzingInfixSuggesterTest]
             [junit4]    > 	at __randomizedtesting.SeedInfo.seed([32DB11C1C6E723F0:96F51F7C9E38FF4C]:0)
             [junit4]    > Caused by: org.apache.lucene.store.AlreadyClosedException: this ReferenceManager is closed
             [junit4]    > 	at __randomizedtesting.SeedInfo.seed([32DB11C1C6E723F0]:0)
             [junit4]    > 	at org.apache.lucene.search.ReferenceManager.acquire(ReferenceManager.java:98)
             [junit4]    > 	at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:645)
             [junit4]    > 	at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:457)
             [junit4]    > 	at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggesterTest$LookupThread.run(AnalyzingInfixSuggesterTest.java:533)
             [junit4]   2> NOTE: test params are: codec=DummyCompressingStoredFields(storedFieldsFormat=CompressingStoredFieldsFormat(compressionMode=DUMMY, chunkSize=32445, maxDocsPerChunk=183, blockSize=695), termVectorsFormat=CompressingTermVectorsFormat(compressionMode=DUMMY, chunkSize=32445, blockSize=695)), sim=RandomSimilarity(queryNorm=false): {}, locale=ar-SY, timezone=America/Bahia_Banderas
             [junit4]   2> NOTE: Linux 4.1.0-custom2-amd64 amd64/Oracle Corporation 1.8.0_77 (64-bit)/cpus=16,threads=1,free=390558656,total=525860864
             [junit4]   2> NOTE: All tests run in this JVM: [TestWordBreakSpellChecker, AnalyzingInfixSuggesterTest]
             [junit4] Completed [32/32 (1!)] on J4 in 9.39s, 22 tests, 1 error <<< FAILURES!
          

          I'm beasting the test now with the above seed to see if I can get it to fail.

          Show
          steve_rowe Steve Rowe added a comment - My Jenkins found a non-reproducing master seed for a AnalyzingInfixSuggester.testRandomNRT() failure - I'm looking into it: [junit4] Suite: org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggesterTest [junit4] 2> ????? ?????? 23, 2016 10:32:50 ? com.carrotsearch.randomizedtesting.RandomizedRunner$QueueUncaughtExceptionsHandler uncaughtException [junit4] 2> WARNING: Uncaught exception in thread: Thread[Thread-1,5,TGRP-AnalyzingInfixSuggesterTest] [junit4] 2> org.apache.lucene.store.AlreadyClosedException: this ReferenceManager is closed [junit4] 2> at __randomizedtesting.SeedInfo.seed([32DB11C1C6E723F0]:0) [junit4] 2> at org.apache.lucene.search.ReferenceManager.acquire(ReferenceManager.java:98) [junit4] 2> at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:645) [junit4] 2> at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:457) [junit4] 2> at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggesterTest$LookupThread.run(AnalyzingInfixSuggesterTest.java:533) [junit4] 2> [junit4] 2> NOTE: reproduce with: ant test -Dtestcase=AnalyzingInfixSuggesterTest -Dtests.method=testRandomNRT -Dtests.seed=32DB11C1C6E723F0 -Dtests.slow=true -Dtests.locale=ar-SY -Dtests.timezone=America/Bahia_Banderas -Dtests.asserts=true -Dtests.file.encoding=US-ASCII [junit4] ERROR 6.37s J4 | AnalyzingInfixSuggesterTest.testRandomNRT <<< [junit4] > Throwable #1: com.carrotsearch.randomizedtesting.UncaughtExceptionError: Captured an uncaught exception in thread: Thread[id=24, name=Thread-1, state=RUNNABLE, group=TGRP-AnalyzingInfixSuggesterTest] [junit4] > at __randomizedtesting.SeedInfo.seed([32DB11C1C6E723F0:96F51F7C9E38FF4C]:0) [junit4] > Caused by: org.apache.lucene.store.AlreadyClosedException: this ReferenceManager is closed [junit4] > at __randomizedtesting.SeedInfo.seed([32DB11C1C6E723F0]:0) [junit4] > at org.apache.lucene.search.ReferenceManager.acquire(ReferenceManager.java:98) [junit4] > at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:645) [junit4] > at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:457) [junit4] > at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggesterTest$LookupThread.run(AnalyzingInfixSuggesterTest.java:533) [junit4] 2> NOTE: test params are: codec=DummyCompressingStoredFields(storedFieldsFormat=CompressingStoredFieldsFormat(compressionMode=DUMMY, chunkSize=32445, maxDocsPerChunk=183, blockSize=695), termVectorsFormat=CompressingTermVectorsFormat(compressionMode=DUMMY, chunkSize=32445, blockSize=695)), sim=RandomSimilarity(queryNorm=false): {}, locale=ar-SY, timezone=America/Bahia_Banderas [junit4] 2> NOTE: Linux 4.1.0-custom2-amd64 amd64/Oracle Corporation 1.8.0_77 (64-bit)/cpus=16,threads=1,free=390558656,total=525860864 [junit4] 2> NOTE: All tests run in this JVM: [TestWordBreakSpellChecker, AnalyzingInfixSuggesterTest] [junit4] Completed [32/32 (1!)] on J4 in 9.39s, 22 tests, 1 error <<< FAILURES! I'm beasting the test now with the above seed to see if I can get it to fail.
          Hide
          steve_rowe Steve Rowe added a comment -

          Another non-reproducing seed, this one on branch_6x, from Policeman Jenkins https://jenkins.thetaphi.de/job/Lucene-Solr-6.x-MacOSX/558/:

          Checking out Revision 3ce1ec3bff3b1ce294569ea3e48d3a2dc6aafb62 (refs/remotes/origin/branch_6x)
          [...]
            [junit4] Suite: org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggesterTest
            [junit4]   2> dec. 06, 2016 12:18:03 AM com.carrotsearch.randomizedtesting.RandomizedRunner$QueueUncaughtExceptionsHandler uncaughtException
            [junit4]   2> WARNING: Uncaught exception in thread: Thread[Thread-1,5,TGRP-AnalyzingInfixSuggesterTest]
            [junit4]   2> org.apache.lucene.store.AlreadyClosedException: this ReferenceManager is closed
            [junit4]   2> 	at __randomizedtesting.SeedInfo.seed([570DDDB64D691936]:0)
            [junit4]   2> 	at org.apache.lucene.search.ReferenceManager.acquire(ReferenceManager.java:98)
            [junit4]   2> 	at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:645)
            [junit4]   2> 	at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:457)
            [junit4]   2> 	at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggesterTest$LookupThread.run(AnalyzingInfixSuggesterTest.java:533)
            [junit4]   2> 
            [junit4]   2> NOTE: reproduce with: ant test  -Dtestcase=AnalyzingInfixSuggesterTest -Dtests.method=testRandomNRT -Dtests.seed=570DDDB64D691936 -Dtests.slow=true -Dtests.locale=da-DK -Dtests.timezone=NZ-CHAT -Dtests.asserts=true -Dtests.file.encoding=ISO-8859-1
            [junit4] ERROR   22.4s J0 | AnalyzingInfixSuggesterTest.testRandomNRT <<<
            [junit4]    > Throwable #1: com.carrotsearch.randomizedtesting.UncaughtExceptionError: Captured an uncaught exception in thread: Thread[id=29, name=Thread-1, state=RUNNABLE, group=TGRP-AnalyzingInfixSuggesterTest]
            [junit4]    > 	at __randomizedtesting.SeedInfo.seed([570DDDB64D691936:F323D30B15B6C58A]:0)
            [junit4]    > Caused by: org.apache.lucene.store.AlreadyClosedException: this ReferenceManager is closed
            [junit4]    > 	at __randomizedtesting.SeedInfo.seed([570DDDB64D691936]:0)
            [junit4]    > 	at org.apache.lucene.search.ReferenceManager.acquire(ReferenceManager.java:98)
            [junit4]    > 	at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:645)
            [junit4]    > 	at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:457)
            [junit4]    > 	at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggesterTest$LookupThread.run(AnalyzingInfixSuggesterTest.java:533)
            [junit4]   2> NOTE: test params are: codec=CheapBastard, sim=RandomSimilarity(queryNorm=true,coord=crazy): {}, locale=da-DK, timezone=NZ-CHAT
            [junit4]   2> NOTE: Mac OS X 10.11.6 x86_64/Oracle Corporation 1.8.0_102 (64-bit)/cpus=3,threads=1,free=172227408,total=503316480
            [junit4]   2> NOTE: All tests run in this JVM: [FileDictionaryTest, TestWordBreakSpellChecker, DocumentDictionaryTest, TestLevenshteinDistance, TestFuzzyCompletionQuery, TestContextQuery, BytesRefSortersTest, TestJaroWinklerDistance, AnalyzingInfixSuggesterTest]
            [junit4] Completed [31/32 (1!)] on J0 in 24.01s, 22 tests, 1 error <<< FAILURES!
          

          I'm beasting the test now with the above seed to see if I can get it to fail.

          Previous beasting attempts didn't trigger any failures. I'm beasting for 500 iterations on my Jenkins box now.

          Show
          steve_rowe Steve Rowe added a comment - Another non-reproducing seed, this one on branch_6x, from Policeman Jenkins https://jenkins.thetaphi.de/job/Lucene-Solr-6.x-MacOSX/558/ : Checking out Revision 3ce1ec3bff3b1ce294569ea3e48d3a2dc6aafb62 (refs/remotes/origin/branch_6x) [...] [junit4] Suite: org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggesterTest [junit4] 2> dec. 06, 2016 12:18:03 AM com.carrotsearch.randomizedtesting.RandomizedRunner$QueueUncaughtExceptionsHandler uncaughtException [junit4] 2> WARNING: Uncaught exception in thread: Thread[Thread-1,5,TGRP-AnalyzingInfixSuggesterTest] [junit4] 2> org.apache.lucene.store.AlreadyClosedException: this ReferenceManager is closed [junit4] 2> at __randomizedtesting.SeedInfo.seed([570DDDB64D691936]:0) [junit4] 2> at org.apache.lucene.search.ReferenceManager.acquire(ReferenceManager.java:98) [junit4] 2> at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:645) [junit4] 2> at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:457) [junit4] 2> at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggesterTest$LookupThread.run(AnalyzingInfixSuggesterTest.java:533) [junit4] 2> [junit4] 2> NOTE: reproduce with: ant test -Dtestcase=AnalyzingInfixSuggesterTest -Dtests.method=testRandomNRT -Dtests.seed=570DDDB64D691936 -Dtests.slow=true -Dtests.locale=da-DK -Dtests.timezone=NZ-CHAT -Dtests.asserts=true -Dtests.file.encoding=ISO-8859-1 [junit4] ERROR 22.4s J0 | AnalyzingInfixSuggesterTest.testRandomNRT <<< [junit4] > Throwable #1: com.carrotsearch.randomizedtesting.UncaughtExceptionError: Captured an uncaught exception in thread: Thread[id=29, name=Thread-1, state=RUNNABLE, group=TGRP-AnalyzingInfixSuggesterTest] [junit4] > at __randomizedtesting.SeedInfo.seed([570DDDB64D691936:F323D30B15B6C58A]:0) [junit4] > Caused by: org.apache.lucene.store.AlreadyClosedException: this ReferenceManager is closed [junit4] > at __randomizedtesting.SeedInfo.seed([570DDDB64D691936]:0) [junit4] > at org.apache.lucene.search.ReferenceManager.acquire(ReferenceManager.java:98) [junit4] > at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:645) [junit4] > at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester.lookup(AnalyzingInfixSuggester.java:457) [junit4] > at org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggesterTest$LookupThread.run(AnalyzingInfixSuggesterTest.java:533) [junit4] 2> NOTE: test params are: codec=CheapBastard, sim=RandomSimilarity(queryNorm=true,coord=crazy): {}, locale=da-DK, timezone=NZ-CHAT [junit4] 2> NOTE: Mac OS X 10.11.6 x86_64/Oracle Corporation 1.8.0_102 (64-bit)/cpus=3,threads=1,free=172227408,total=503316480 [junit4] 2> NOTE: All tests run in this JVM: [FileDictionaryTest, TestWordBreakSpellChecker, DocumentDictionaryTest, TestLevenshteinDistance, TestFuzzyCompletionQuery, TestContextQuery, BytesRefSortersTest, TestJaroWinklerDistance, AnalyzingInfixSuggesterTest] [junit4] Completed [31/32 (1!)] on J0 in 24.01s, 22 tests, 1 error <<< FAILURES! I'm beasting the test now with the above seed to see if I can get it to fail. Previous beasting attempts didn't trigger any failures. I'm beasting for 500 iterations on my Jenkins box now.
          Hide
          steve_rowe Steve Rowe added a comment -

          Reopening to address random NRT Jenkins failures.

          Show
          steve_rowe Steve Rowe added a comment - Reopening to address random NRT Jenkins failures.
          Hide
          steve_rowe Steve Rowe added a comment -

          After several thousand beasting iterations, I still haven't been able to reproduce the testRandomNRT() failures.

          I'm attaching a patch that I think will address the problem, which AFAICT is that under multi-threaded use, in lookup(), the suggester’s searcherMgr data member could be re-assigned in the middle of a searcher acquire/release cycle due to the changes introduced in LUCENE-7564 - as a result these could be imbalanced, with acquire() called on one instance and release() called on a different one. The patch takes a local SearcherManager reference and calls acquire()/release() though it in every place these are called in AnalyzingInfixSuggester (rather than calling through the searcherMgr data member).

          I'm beasting AnalyzingInfixSuggester with this patch, and I'll commit later today if there are no failures.

          Show
          steve_rowe Steve Rowe added a comment - After several thousand beasting iterations, I still haven't been able to reproduce the testRandomNRT() failures. I'm attaching a patch that I think will address the problem, which AFAICT is that under multi-threaded use, in lookup() , the suggester’s searcherMgr data member could be re-assigned in the middle of a searcher acquire/release cycle due to the changes introduced in LUCENE-7564 - as a result these could be imbalanced, with acquire() called on one instance and release() called on a different one. The patch takes a local SearcherManager reference and calls acquire() / release() though it in every place these are called in AnalyzingInfixSuggester (rather than calling through the searcherMgr data member). I'm beasting AnalyzingInfixSuggester with this patch, and I'll commit later today if there are no failures.
          Hide
          steve_rowe Steve Rowe added a comment -

          Attaching a revised version of the patch to fix the random NRT failures.

          The first version of the patch actually made the failure more likely on my system. I saw two failures, each within a few hundred iterations. (Separately, I did finally get the test to fail on the unpatched code, after roughly 10k iterations.)

          This version of the patch is a superset of the first version of the patch. It adds synchronized sections around pulling a searcher from, and reassigning, the searcherMgr. My theory is that when one thread is executing ensureOpen() and closes the searcherMgr, but then before the searcherMgr is reassigned in this thread, another thread attempts an acquire() on the now-closed searcherMgr. The synchronized sections added in this version of the patch cause acquire() calls to wait until searcherMgr has finished being reassigned. Since searcherMgr.release() is tolerant of being called after close() has been called, I didn't include the whole acquire/release cycle in the synchronized sections.

          I saw no failures with this patch after 2000 beasting iterations. I also beasted BlendedInfixSuggesterTest for 2000 iterations, and saw no failures there either.

          I think this is ready to go. I'll commit shortly.

          Show
          steve_rowe Steve Rowe added a comment - Attaching a revised version of the patch to fix the random NRT failures. The first version of the patch actually made the failure more likely on my system. I saw two failures, each within a few hundred iterations. (Separately, I did finally get the test to fail on the unpatched code, after roughly 10k iterations.) This version of the patch is a superset of the first version of the patch. It adds synchronized sections around pulling a searcher from, and reassigning, the searcherMgr . My theory is that when one thread is executing ensureOpen() and closes the searcherMgr , but then before the searcherMgr is reassigned in this thread, another thread attempts an acquire() on the now-closed searcherMgr . The synchronized sections added in this version of the patch cause acquire() calls to wait until searcherMgr has finished being reassigned. Since searcherMgr.release() is tolerant of being called after close() has been called, I didn't include the whole acquire/release cycle in the synchronized sections. I saw no failures with this patch after 2000 beasting iterations. I also beasted BlendedInfixSuggesterTest for 2000 iterations, and saw no failures there either. I think this is ready to go. I'll commit shortly.
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit 73f068e50333902b3ea887100f063e61ebf1996b in lucene-solr's branch refs/heads/branch_6x from Steve Rowe
          [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=73f068e ]

          LUCENE-7564: Force single-threaded access to the AnalyzingInfixSuggester's SearcherManager when performing an acquire() or reassigning. This fixes failures in AnalyzingInfixSuggester.testRandomNRT().

          Show
          jira-bot ASF subversion and git services added a comment - Commit 73f068e50333902b3ea887100f063e61ebf1996b in lucene-solr's branch refs/heads/branch_6x from Steve Rowe [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=73f068e ] LUCENE-7564 : Force single-threaded access to the AnalyzingInfixSuggester's SearcherManager when performing an acquire() or reassigning. This fixes failures in AnalyzingInfixSuggester.testRandomNRT().
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit 266ca264077671f40a381c4768c8c6a86275b268 in lucene-solr's branch refs/heads/branch_6x from Steve Rowe
          [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=266ca26 ]

          LUCENE-7564: add missing javadocs

          Show
          jira-bot ASF subversion and git services added a comment - Commit 266ca264077671f40a381c4768c8c6a86275b268 in lucene-solr's branch refs/heads/branch_6x from Steve Rowe [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=266ca26 ] LUCENE-7564 : add missing javadocs
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit 6b00ee5175d55d2f2a25ce6539dc12277022c898 in lucene-solr's branch refs/heads/master from Steve Rowe
          [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=6b00ee5 ]

          LUCENE-7564: add missing javadocs

          Show
          jira-bot ASF subversion and git services added a comment - Commit 6b00ee5175d55d2f2a25ce6539dc12277022c898 in lucene-solr's branch refs/heads/master from Steve Rowe [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=6b00ee5 ] LUCENE-7564 : add missing javadocs

            People

            • Assignee:
              steve_rowe Steve Rowe
              Reporter:
              steve_rowe Steve Rowe
            • Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development