소스 검색

Test: finish all merges before test returns to side step 'Delete Index failed - not acked' failure

mikemccand 11 년 전
부모
커밋
dbcc4e9255
1개의 변경된 파일37개의 추가작업 그리고 19개의 파일을 삭제
  1. 37 19
      src/test/java/org/elasticsearch/indices/settings/UpdateSettingsTests.java

+ 37 - 19
src/test/java/org/elasticsearch/indices/settings/UpdateSettingsTests.java

@@ -331,26 +331,44 @@ public class UpdateSettingsTests extends ElasticsearchIntegrationTest {
                              )
                 .get();
 
-            // Make sure we log the change:
-            assertTrue(mockAppender.sawUpdateSetting);
-
-            int i = 0;
-            while (true) {
-                // Provoke slowish merging by making many unique terms:
-                StringBuilder sb = new StringBuilder();
-                for(int j=0;j<100;j++) {
-                    sb.append(' ');
-                    sb.append(termUpto++);
-                }
-                client().prepareIndex("test", "type", ""+termUpto).setSource("field" + (i%10), sb.toString()).get();
-                if (i % 2 == 0) {
-                    refresh();
+            try {
+
+                // Make sure we log the change:
+                assertTrue(mockAppender.sawUpdateSetting);
+
+                int i = 0;
+                while (true) {
+                    // Provoke slowish merging by making many unique terms:
+                    StringBuilder sb = new StringBuilder();
+                    for(int j=0;j<100;j++) {
+                        sb.append(' ');
+                        sb.append(termUpto++);
+                    }
+                    client().prepareIndex("test", "type", ""+termUpto).setSource("field" + (i%10), sb.toString()).get();
+                    if (i % 2 == 0) {
+                        refresh();
+                    }
+                    // This time we should see some merges were in fact paused:
+                    if (mockAppender.sawMergeThreadPaused) {
+                        break;
+                    }
+                    i++;
                 }
-                // This time we should see some merges were in fact paused:
-                if (mockAppender.sawMergeThreadPaused) {
-                    break;
-                }
-                i++;
+            } finally {
+                // Make merges fast again & finish merges before we try to close; else we sometimes get a "Delete Index failed - not acked"
+                // when ElasticsearchIntegrationTest.after tries to remove indices created by the test:
+                client()
+                    .admin()
+                    .indices()
+                    .prepareUpdateSettings("test")
+                    .setSettings(ImmutableSettings.builder()
+                                 .put(ConcurrentMergeSchedulerProvider.MAX_THREAD_COUNT, "3")
+                                 .put(AbstractIndexStore.INDEX_STORE_THROTTLE_MAX_BYTES_PER_SEC, "20mb")
+                                 )
+                    .get();
+
+                // Wait for merges to finish
+                client().admin().indices().prepareOptimize("test").setWaitForMerge(true).get();
             }