Skip to content

Commit 88defd7

Browse files
committed
Add test to check existence max_unsafe_timestamp in commit
In the previous commit, we ensured that an opening index commit must have all 6.x commit tags before opening engine. This commit adds a test to catch a silly mistake introduced previously.
1 parent 2a510f8 commit 88defd7

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -1539,7 +1539,7 @@ public boolean ensureIndexHas6xCommitTags() throws IOException {
15391539
maps.put(SequenceNumbers.LOCAL_CHECKPOINT_KEY, Long.toString(SequenceNumbers.NO_OPS_PERFORMED));
15401540
}
15411541
if (userData.containsKey(InternalEngine.MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID) == false) {
1542-
userData.put(InternalEngine.MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID, "-1");
1542+
maps.put(InternalEngine.MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID, "-1");
15431543
}
15441544
if (maps.isEmpty() == false) {
15451545
updateCommitData(writer, maps);

server/src/test/java/org/elasticsearch/index/store/StoreTests.java

+15-8
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import org.elasticsearch.index.Index;
6464
import org.elasticsearch.index.IndexSettings;
6565
import org.elasticsearch.index.engine.Engine;
66+
import org.elasticsearch.index.engine.InternalEngine;
6667
import org.elasticsearch.index.seqno.SequenceNumbers;
6768
import org.elasticsearch.index.shard.ShardId;
6869
import org.elasticsearch.index.translog.Translog;
@@ -1076,7 +1077,7 @@ public Directory newDirectory() throws IOException {
10761077
store.close();
10771078
}
10781079

1079-
public void testEnsureIndexHasHistoryUUIDAndSeqNo() throws IOException {
1080+
public void testEnsureIndexHas6xCommitTags() throws IOException {
10801081
final ShardId shardId = new ShardId("index", "_na_", 1);
10811082
DirectoryService directoryService = new LuceneManagedDirectoryService(random());
10821083
try (Store store = new Store(shardId, INDEX_SETTINGS, directoryService, new DummyShardLock(shardId))) {
@@ -1088,51 +1089,57 @@ public void testEnsureIndexHasHistoryUUIDAndSeqNo() throws IOException {
10881089
newCommitData.remove(Engine.HISTORY_UUID_KEY);
10891090
newCommitData.remove(SequenceNumbers.LOCAL_CHECKPOINT_KEY);
10901091
newCommitData.remove(SequenceNumbers.MAX_SEQ_NO);
1092+
newCommitData.remove(InternalEngine.MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID);
10911093
writer.setLiveCommitData(newCommitData.entrySet());
10921094
writer.commit();
10931095
}
1094-
1095-
store.ensureIndexHas6xCommitTags();
1096+
assertThat(store.ensureIndexHas6xCommitTags(), equalTo(true));
10961097
SegmentInfos segmentInfos = Lucene.readSegmentInfos(store.directory());
10971098
assertThat(segmentInfos.getUserData(), hasKey(Engine.HISTORY_UUID_KEY));
1099+
assertThat(segmentInfos.getUserData(), hasEntry(equalTo(InternalEngine.MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID), equalTo("-1")));
10981100
assertThat(segmentInfos.getUserData(), hasEntry(equalTo(SequenceNumbers.LOCAL_CHECKPOINT_KEY), equalTo("-1")));
10991101
assertThat(segmentInfos.getUserData(), hasEntry(equalTo(SequenceNumbers.MAX_SEQ_NO), equalTo("-1")));
1100-
1101-
// Keep existing seqno.
1102+
// Keeps everything
11021103
final long maxSeqno = randomNonNegativeLong();
11031104
final long localCheckpoint = randomLongBetween(0, maxSeqno);
1105+
final long unsafeTimestamp = randomNonNegativeLong();
11041106
final String historyUUID = segmentInfos.userData.get(Engine.HISTORY_UUID_KEY);
11051107
try (IndexWriter writer = openWriter(store)) {
11061108
Map<String, String> newCommitData = new HashMap<>();
11071109
writer.getLiveCommitData().forEach(e -> newCommitData.put(e.getKey(), e.getValue()));
11081110
newCommitData.put(SequenceNumbers.LOCAL_CHECKPOINT_KEY, Long.toString(localCheckpoint));
11091111
newCommitData.put(SequenceNumbers.MAX_SEQ_NO, Long.toString(maxSeqno));
1112+
newCommitData.put(InternalEngine.MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID, Long.toString(unsafeTimestamp));
11101113
writer.setLiveCommitData(newCommitData.entrySet());
11111114
writer.commit();
11121115
}
1113-
store.ensureIndexHas6xCommitTags();
1116+
assertThat(store.ensureIndexHas6xCommitTags(), equalTo(false));
11141117
segmentInfos = Lucene.readSegmentInfos(store.directory());
11151118
assertThat(segmentInfos.getUserData(),
11161119
hasEntry(equalTo(Engine.HISTORY_UUID_KEY), equalTo(historyUUID)));
11171120
assertThat(segmentInfos.getUserData(),
11181121
hasEntry(equalTo(SequenceNumbers.LOCAL_CHECKPOINT_KEY), equalTo(Long.toString(localCheckpoint))));
11191122
assertThat(segmentInfos.getUserData(),
11201123
hasEntry(equalTo(SequenceNumbers.MAX_SEQ_NO), equalTo(Long.toString(maxSeqno))));
1121-
1124+
assertThat(segmentInfos.getUserData(),
1125+
hasEntry(equalTo(InternalEngine.MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID), equalTo(Long.toString(unsafeTimestamp))));
1126+
// Generate a new historyUUID but keeps the rest
11221127
try (IndexWriter writer = openWriter(store)) {
11231128
Map<String, String> newCommitData = new HashMap<>();
11241129
writer.getLiveCommitData().forEach(e -> newCommitData.put(e.getKey(), e.getValue()));
11251130
newCommitData.remove(Engine.HISTORY_UUID_KEY);
11261131
writer.setLiveCommitData(newCommitData.entrySet());
11271132
writer.commit();
11281133
}
1129-
store.ensureIndexHas6xCommitTags();
1134+
assertThat(store.ensureIndexHas6xCommitTags(), equalTo(true));
11301135
segmentInfos = Lucene.readSegmentInfos(store.directory());
11311136
assertThat(segmentInfos.getUserData(), hasKey(Engine.HISTORY_UUID_KEY));
11321137
assertThat(segmentInfos.getUserData(),
11331138
hasEntry(equalTo(SequenceNumbers.LOCAL_CHECKPOINT_KEY), equalTo(Long.toString(localCheckpoint))));
11341139
assertThat(segmentInfos.getUserData(),
11351140
hasEntry(equalTo(SequenceNumbers.MAX_SEQ_NO), equalTo(Long.toString(maxSeqno))));
1141+
assertThat(segmentInfos.getUserData(),
1142+
hasEntry(equalTo(InternalEngine.MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID), equalTo(Long.toString(unsafeTimestamp))));
11361143
}
11371144
}
11381145

0 commit comments

Comments
 (0)