Skip to content

Commit 28d96f2

Browse files
Nits
1 parent 9b09dba commit 28d96f2

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

server/src/main/java/org/elasticsearch/index/engine/ThreadPoolMergeScheduler.java

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.apache.lucene.index.MergeRateLimiter;
1515
import org.apache.lucene.index.MergeScheduler;
1616
import org.apache.lucene.index.MergeTrigger;
17+
import org.apache.lucene.store.AlreadyClosedException;
1718
import org.apache.lucene.store.Directory;
1819
import org.apache.lucene.store.FilterDirectory;
1920
import org.apache.lucene.store.IOContext;
@@ -210,16 +211,19 @@ private synchronized boolean runNowOrBacklog(MergeTask mergeTask) {
210211
}
211212

212213
private void mergeDone(MergeTask mergeTask) {
213-
synchronized (this) {
214-
boolean removed = currentlyRunningMergeTasks.remove(mergeTask.onGoingMerge.getMerge()) != null;
215-
assert removed : "completed merge task [" + mergeTask + "] not registered as running";
216-
// when one merge is done, maybe a backlogged one can now execute
217-
enqueueBackloggedTasks();
218-
// signal here, because, when closing, we wait for all currently running merges to finish
219-
maybeSignalAllMergesDoneAfterClose();
214+
try {
215+
synchronized (this) {
216+
boolean removed = currentlyRunningMergeTasks.remove(mergeTask.onGoingMerge.getMerge()) != null;
217+
assert removed : "completed merge task [" + mergeTask + "] not registered as running";
218+
// when one merge is done, maybe a backlogged one can now execute
219+
enqueueBackloggedTasks();
220+
// signal here, because, when closing, we wait for all currently running merges to finish
221+
maybeSignalAllMergesDoneAfterClose();
222+
}
223+
} finally {
224+
doneMergeTaskCount.incrementAndGet();
225+
checkMergeTaskThrottling();
220226
}
221-
doneMergeTaskCount.incrementAndGet();
222-
checkMergeTaskThrottling();
223227
}
224228

225229
private synchronized void maybeSignalAllMergesDoneAfterClose() {
@@ -374,8 +378,12 @@ public void run() {
374378
message(String.format(Locale.ROOT, "merge task %s end", this));
375379
}
376380
mergeDone(this);
377-
// kick-off next merge, if any
378-
merge(mergeSource, MergeTrigger.MERGE_FINISHED);
381+
try {
382+
// kick-off next merge, if any
383+
merge(mergeSource, MergeTrigger.MERGE_FINISHED);
384+
} catch (@SuppressWarnings("unused") AlreadyClosedException ace) {
385+
// OK, this is what the {@code ConcurrentMergeScheduler} does
386+
}
379387
}
380388
}
381389

0 commit comments

Comments
 (0)