apache / apache/lucene

Hang in Lucene trunk while indexing [LUCENE-4151]

Open
#5,223 0 comments 0 reactions 0 assignees View on GitHub
affects-version:4.0-ALPHA affects-version:6.0 legacy-jira-priority:Major type:bug
Dominant language
Java
Stars
3.6k
Forks
1.4k
Avg merge
2d 11h
Merged PRs (30d)
88

Description

See: http://jenkins.sd-datasolutions.de/job/Lucene-Solr-trunk-Linux-Java7-64/309/

I stopped the build, 2 test childs were still running 100% CPU in analysis tests. I was ablte to get stack trace of one of then, see build log:

```
[junit4] "TEST-TestScope-org.apache.lucene.analysis.hunspell.HunspellStemFilterTest.testRandomStrings-seed#[BEEAD57FE445FA49]" prio=10 tid=0x00007fde184d8800 nid=0x497d runnable [0x00007fde0bd7a000]
[junit4] java.lang.Thread.State: RUNNABLE
[junit4] at org.apache.lucene.codecs.lucene40.values.Bytes$DerefBytesWriterBase.fillDefault(Bytes.java:456)
[junit4] at org.apache.lucene.codecs.lucene40.values.Bytes$DerefBytesWriterBase.add(Bytes.java:435)
[junit4] at org.apache.lucene.codecs.lucene40.values.FixedDerefBytesImpl$Writer.add(FixedDerefBytesImpl.java:48)
[junit4] at org.apache.lucene.codecs.DocValuesConsumer.mergeDoc(DocValuesConsumer.java:237)
[junit4] at org.apache.lucene.codecs.DocValuesConsumer.merge(DocValuesConsumer.java:184)
[junit4] at org.apache.lucene.codecs.DocValuesConsumer.merge(DocValuesConsumer.java:112)
[junit4] at org.apache.lucene.codecs.PerDocConsumer.merge(PerDocConsumer.java:60)
[junit4] at org.apache.lucene.index.SegmentMerger.mergePerDoc(SegmentMerger.java:351)
[junit4] at org.apache.lucene.index.SegmentMerger.merge(SegmentMerger.java:119)
[junit4] at org.apache.lucene.index.IndexWriter.mergeMiddle(IndexWriter.java:3477)
[junit4] at org.apache.lucene.index.IndexWriter.merge(IndexWriter.java:3112)
[junit4] at org.apache.lucene.index.SerialMergeScheduler.merge(SerialMergeScheduler.java:37)
[junit4] - locked <0x00000000f8cb6320> (a org.apache.lucene.index.SerialMergeScheduler)
[junit4] at org.apache.lucene.index.IndexWriter.maybeMerge(IndexWriter.java:1706)
[junit4] at org.apache.lucene.index.IndexWriter.maybeMerge(IndexWriter.java:1700)
[junit4] at org.apache.lucene.index.IndexWriter.updateDocuments(IndexWriter.java:1197)
[junit4] at org.apache.lucene.index.IndexWriter.addDocuments(IndexWriter.java:1147)
[junit4] at org.apache.lucene.index.RandomIndexWriter.addDocument(RandomIndexWriter.java:157)
[junit4] at org.apache.lucene.index.RandomIndexWriter.addDocument(RandomIndexWriter.java:145)
[junit4] at org.apache.lucene.analysis.BaseTokenStreamTestCase.checkRandomData(BaseTokenStreamTestCase.java:558)
[junit4] at org.apache.lucene.analysis.BaseTokenStreamTestCase.checkRandomData(BaseTokenStreamTestCase.java:446)
[junit4] at org.apache.lucene.analysis.BaseTokenStreamTestCase.checkRandomData(BaseTokenStreamTestCase.java:373)
[junit4] at org.apache.lucene.analysis.hunspell.HunspellStemFilterTest.testRandomStrings(HunspellStemFilterTest.java:75)
[junit4] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[junit4] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[junit4] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[junit4] at java.lang.reflect.Method.invoke(Method.java:601)
[junit4] at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1969)
[junit4] at com.carrotsearch.randomizedtesting.RandomizedRunner.access$1100(RandomizedRunner.java:132)
[junit4] at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:814)
[junit4] at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:875)
[junit4] at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:889)
[junit4] at org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:50)
[junit4] at org.apache.lucene.util.TestRuleFieldCacheSanity$1.evaluate(TestRuleFieldCacheSanity.java:32)
[junit4] at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
[junit4] at com.carrotsearch.randomizedtesting.rules.SystemPropertiesInvariantRule$1.evaluate(SystemPropertiesInvariantRule.java:55)
[junit4] at org.apache.lucene.util.TestRuleReportUncaughtExceptions$1.evaluate(TestRuleReportUncaughtExceptions.java:68)
[junit4] at org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48)
[junit4] at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:48)
[junit4] at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:821)
[junit4] at com.carrotsearch.randomizedtesting.RandomizedRunner.access$700(RandomizedRunner.java:132)
[junit4] at com.carrotsearch.randomizedtesting.RandomizedRunner$3$1.run(RandomizedRunner.java:669)
[junit4] at com.carrotsearch.randomizedtesting.RandomizedRunner$3.evaluate(RandomizedRunner.java:695)
[junit4] at com.carrotsearch.randomizedtesting.RandomizedRunner$4.evaluate(RandomizedRunner.java:734)
[junit4] at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:745)
[junit4] at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
[junit4] at org.apache.lucene.util.TestRuleReportUncaughtExceptions$1.evaluate(TestRuleReportUncaughtExceptions.java:68)
[junit4] at org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38)
[junit4] at org.apache.lucene.util.TestRuleIcuHack$1.evaluate(TestRuleIcuHack.java:51)
[junit4] at com.carrotsearch.randomizedtesting.rules.SystemPropertiesInvariantRule$1.evaluate(SystemPropertiesInvariantRule.java:55)
[junit4] at org.apache.lucene.util.TestRuleNoInstanceHooksOverrides$1.evaluate(TestRuleNoInstanceHooksOverrides.java:53)
[junit4] at org.apache.lucene.util.TestRuleNoStaticHooksShadowing$1.evaluate(TestRuleNoStaticHooksShadowing.java:52)
[junit4] at org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:36)
[junit4] at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:48)
[junit4] at org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:56)
[junit4] at com.carrotsearch.randomizedtesting.RandomizedRunner.runSuite(RandomizedRunner.java:605)
[junit4] at com.carrotsearch.randomizedtesting.RandomizedRunner.access$400(RandomizedRunner.java:132)
[junit4] at com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:551)
```

Please note the line with "locked in SerialMergeScheduler"!

---
Migrated from [LUCENE-4151](https://issues.apache.org/jira/browse/LUCENE-4151) by Uwe Schindler (@uschindler), updated May 09 2016

Contributor guide

Open the contributing guide

Research direction

Start with HunspellStemFilterTest.testRandomStrings and the reported stack trace, then inspect Bytes.java, DocValuesConsumer.merge, and SerialMergeScheduler. Reproduce the Jenkins hang if possible and determine why indexing remains at 100% CPU while SerialMergeScheduler is locked. Done means the test completes without the reported hang.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
search
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.