Skip to content

Commit 077a6c3

Browse files
committed
[TEST] ensure expected sequence no and version are set when index/delete engine operation has a document failure
1 parent 22e0795 commit 077a6c3

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

core/src/test/java/org/elasticsearch/index/engine/InternalEngineTests.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2911,27 +2911,36 @@ public void testHandleDocumentFailure() throws Exception {
29112911
} else {
29122912
throwingIndexWriter.get().setThrowFailure(() -> new IllegalArgumentException("simulated max token length"));
29132913
}
2914+
// test index with document failure
29142915
Engine.IndexResult indexResult = engine.index(indexForDoc(doc1));
29152916
assertNotNull(indexResult.getFailure());
2916-
// document failures should be recorded in translog
2917+
assertThat(indexResult.getSeqNo(), equalTo(0L));
2918+
assertThat(indexResult.getVersion(), equalTo(Versions.MATCH_ANY));
29172919
assertNotNull(indexResult.getTranslogLocation());
2920+
29182921
throwingIndexWriter.get().clearFailure();
29192922
indexResult = engine.index(indexForDoc(doc1));
2923+
assertThat(indexResult.getSeqNo(), equalTo(1L));
2924+
assertThat(indexResult.getVersion(), equalTo(1L));
29202925
assertNull(indexResult.getFailure());
2921-
// document failures should be recorded in translog
29222926
assertNotNull(indexResult.getTranslogLocation());
29232927
engine.index(indexForDoc(doc2));
29242928

29252929
// test failure while deleting
29262930
// all these simulated exceptions are not fatal to the IW so we treat them as document failures
2931+
final Engine.DeleteResult deleteResult;
29272932
if (randomBoolean()) {
29282933
throwingIndexWriter.get().setThrowFailure(() -> new IOException("simulated"));
2929-
assertThat(engine.delete(new Engine.Delete("test", "1", newUid(doc1))).getFailure(), instanceOf(IOException.class));
2934+
deleteResult = engine.delete(new Engine.Delete("test", "1", newUid(doc1)));
2935+
assertThat(deleteResult.getFailure(), instanceOf(IOException.class));
29302936
} else {
29312937
throwingIndexWriter.get().setThrowFailure(() -> new IllegalArgumentException("simulated max token length"));
2932-
assertThat(engine.delete(new Engine.Delete("test", "1", newUid(doc1))).getFailure(),
2938+
deleteResult = engine.delete(new Engine.Delete("test", "1", newUid(doc1)));
2939+
assertThat(deleteResult.getFailure(),
29332940
instanceOf(IllegalArgumentException.class));
29342941
}
2942+
assertThat(deleteResult.getVersion(), equalTo(2L));
2943+
assertThat(deleteResult.getSeqNo(), equalTo(3L));
29352944

29362945
// test non document level failure is thrown
29372946
if (randomBoolean()) {

0 commit comments

Comments
 (0)