elasticsearch/elasticsearch — pull request #8405 by mikemccand (2014-11-09 11:39:09+00:00)
Title: Core: SerialMergeScheduler never triggers index throttling

This is a deprecated merge scheduler (already removed in master), but is still available in 1.3, 1.4, 1.5.

When you pick this merged scheduler, there is a bug that causes index throttling to not kick in, which means it's possible to accumulate way too many segments in the index.

Furthermore, this can then cause Elasticsearch to take a long time (> 30 seconds default timeout for e.g. a delete index request, resulting in a "Delete Index failed - not acked" from ElasticsearchIntegrationTest) to close the index, since it has a merge thread holding InternalEngine.readLock, stuck in IndexWriter.maybeMerge. I'll address this issue separately; fixing SMS (here) should fix most of the false test failures.

I also fixed IndexStatsTests.throttleTests to fail if it never saw index throttling kick in after up to 5 minutes of crazy merges.