Skip to content

Commit be587bf

Browse files
authored
Side-step pending deletes check (#30607)
When we split/shrink an index we open several IndexWriter instances causeing file-deletes to be pending on windows. This subsequently fails when we open an IW to bootstrap the index history due to pending deletes. This change sidesteps the check since we know our history goes forward in terms of files and segments. Closes #30416
1 parent 513e297 commit be587bf

File tree

4 files changed

+15
-11
lines changed

4 files changed

+15
-11
lines changed

rest-api-spec/src/main/resources/rest-api-spec/test/indices.split/20_source_mapping.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
---
22
"Split index ignores target template mapping":
33
- skip:
4-
# when re-enabling uncomment the below skips
5-
version: "all"
6-
reason: "AwaitsFix'ing, see https://github.com/elastic/elasticsearch/issues/30503"
7-
# version: " - 6.3.99"
8-
# reason: expects warnings that pre-6.4.0 will not send
4+
version: " - 6.3.99"
5+
reason: expects warnings that pre-6.4.0 will not send
96
features: "warnings"
107

118
# create index

server/src/main/java/org/elasticsearch/index/store/Store.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -731,13 +731,13 @@ static final class StoreDirectory extends FilterDirectory {
731731

732732
private final Logger deletesLogger;
733733

734-
StoreDirectory(Directory delegateDirectory, Logger deletesLogger) throws IOException {
734+
StoreDirectory(Directory delegateDirectory, Logger deletesLogger) {
735735
super(delegateDirectory);
736736
this.deletesLogger = deletesLogger;
737737
}
738738

739739
@Override
740-
public void close() throws IOException {
740+
public void close() {
741741
assert false : "Nobody should close this directory except of the Store itself";
742742
}
743743

@@ -759,6 +759,17 @@ private void innerClose() throws IOException {
759759
public String toString() {
760760
return "store(" + in.toString() + ")";
761761
}
762+
763+
@Override
764+
public boolean checkPendingDeletions() throws IOException {
765+
if (super.checkPendingDeletions()) {
766+
deletesLogger.warn("directory has still pending deletes");
767+
}
768+
// we skip this check since our IW usage always goes forward.
769+
// we still might run into situations where we have pending deletes ie. in shrink / split case
770+
// and that will cause issues on windows since we open multiple IW instance one after another during the split/shrink recovery
771+
return false;
772+
}
762773
}
763774

764775
/**

server/src/test/java/org/elasticsearch/action/admin/indices/create/ShrinkIndexIT.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.apache.lucene.search.SortField;
2424
import org.apache.lucene.search.SortedSetSelector;
2525
import org.apache.lucene.search.SortedSetSortField;
26-
import org.apache.lucene.util.LuceneTestCase.AwaitsFix;
2726
import org.elasticsearch.Version;
2827
import org.elasticsearch.action.admin.cluster.reroute.ClusterRerouteResponse;
2928
import org.elasticsearch.action.admin.cluster.state.ClusterStateRequest;
@@ -77,7 +76,6 @@
7776
import static org.hamcrest.Matchers.equalTo;
7877
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
7978

80-
@AwaitsFix(bugUrl = "https://github.com/elastic/elasticsearch/issues/30416")
8179
public class ShrinkIndexIT extends ESIntegTestCase {
8280

8381
@Override

server/src/test/java/org/elasticsearch/action/admin/indices/create/SplitIndexIT.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import org.apache.lucene.search.SortedSetSelector;
2525
import org.apache.lucene.search.SortedSetSortField;
2626
import org.apache.lucene.search.join.ScoreMode;
27-
import org.apache.lucene.util.LuceneTestCase;
2827
import org.elasticsearch.Version;
2928
import org.elasticsearch.action.admin.cluster.state.ClusterStateRequest;
3029
import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse;
@@ -80,7 +79,6 @@
8079
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
8180

8281

83-
@LuceneTestCase.AwaitsFix(bugUrl = "https://github.com/elastic/elasticsearch/issues/30416")
8482
public class SplitIndexIT extends ESIntegTestCase {
8583

8684
@Override

0 commit comments

Comments
 (0)