63
63
import org .elasticsearch .index .Index ;
64
64
import org .elasticsearch .index .IndexSettings ;
65
65
import org .elasticsearch .index .engine .Engine ;
66
+ import org .elasticsearch .index .engine .InternalEngine ;
66
67
import org .elasticsearch .index .seqno .SequenceNumbers ;
67
68
import org .elasticsearch .index .shard .ShardId ;
68
69
import org .elasticsearch .index .translog .Translog ;
@@ -1076,7 +1077,7 @@ public Directory newDirectory() throws IOException {
1076
1077
store .close ();
1077
1078
}
1078
1079
1079
- public void testEnsureIndexHasHistoryUUIDAndSeqNo () throws IOException {
1080
+ public void testEnsureIndexHas6xCommitTags () throws IOException {
1080
1081
final ShardId shardId = new ShardId ("index" , "_na_" , 1 );
1081
1082
DirectoryService directoryService = new LuceneManagedDirectoryService (random ());
1082
1083
try (Store store = new Store (shardId , INDEX_SETTINGS , directoryService , new DummyShardLock (shardId ))) {
@@ -1088,51 +1089,57 @@ public void testEnsureIndexHasHistoryUUIDAndSeqNo() throws IOException {
1088
1089
newCommitData .remove (Engine .HISTORY_UUID_KEY );
1089
1090
newCommitData .remove (SequenceNumbers .LOCAL_CHECKPOINT_KEY );
1090
1091
newCommitData .remove (SequenceNumbers .MAX_SEQ_NO );
1092
+ newCommitData .remove (InternalEngine .MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID );
1091
1093
writer .setLiveCommitData (newCommitData .entrySet ());
1092
1094
writer .commit ();
1093
1095
}
1094
-
1095
- store .ensureIndexHas6xCommitTags ();
1096
+ assertThat (store .ensureIndexHas6xCommitTags (), equalTo (true ));
1096
1097
SegmentInfos segmentInfos = Lucene .readSegmentInfos (store .directory ());
1097
1098
assertThat (segmentInfos .getUserData (), hasKey (Engine .HISTORY_UUID_KEY ));
1099
+ assertThat (segmentInfos .getUserData (), hasEntry (equalTo (InternalEngine .MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID ), equalTo ("-1" )));
1098
1100
assertThat (segmentInfos .getUserData (), hasEntry (equalTo (SequenceNumbers .LOCAL_CHECKPOINT_KEY ), equalTo ("-1" )));
1099
1101
assertThat (segmentInfos .getUserData (), hasEntry (equalTo (SequenceNumbers .MAX_SEQ_NO ), equalTo ("-1" )));
1100
-
1101
- // Keep existing seqno.
1102
+ // Keeps everything
1102
1103
final long maxSeqno = randomNonNegativeLong ();
1103
1104
final long localCheckpoint = randomLongBetween (0 , maxSeqno );
1105
+ final long unsafeTimestamp = randomNonNegativeLong ();
1104
1106
final String historyUUID = segmentInfos .userData .get (Engine .HISTORY_UUID_KEY );
1105
1107
try (IndexWriter writer = openWriter (store )) {
1106
1108
Map <String , String > newCommitData = new HashMap <>();
1107
1109
writer .getLiveCommitData ().forEach (e -> newCommitData .put (e .getKey (), e .getValue ()));
1108
1110
newCommitData .put (SequenceNumbers .LOCAL_CHECKPOINT_KEY , Long .toString (localCheckpoint ));
1109
1111
newCommitData .put (SequenceNumbers .MAX_SEQ_NO , Long .toString (maxSeqno ));
1112
+ newCommitData .put (InternalEngine .MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID , Long .toString (unsafeTimestamp ));
1110
1113
writer .setLiveCommitData (newCommitData .entrySet ());
1111
1114
writer .commit ();
1112
1115
}
1113
- store .ensureIndexHas6xCommitTags ();
1116
+ assertThat ( store .ensureIndexHas6xCommitTags (), equalTo ( false ) );
1114
1117
segmentInfos = Lucene .readSegmentInfos (store .directory ());
1115
1118
assertThat (segmentInfos .getUserData (),
1116
1119
hasEntry (equalTo (Engine .HISTORY_UUID_KEY ), equalTo (historyUUID )));
1117
1120
assertThat (segmentInfos .getUserData (),
1118
1121
hasEntry (equalTo (SequenceNumbers .LOCAL_CHECKPOINT_KEY ), equalTo (Long .toString (localCheckpoint ))));
1119
1122
assertThat (segmentInfos .getUserData (),
1120
1123
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
1122
1127
try (IndexWriter writer = openWriter (store )) {
1123
1128
Map <String , String > newCommitData = new HashMap <>();
1124
1129
writer .getLiveCommitData ().forEach (e -> newCommitData .put (e .getKey (), e .getValue ()));
1125
1130
newCommitData .remove (Engine .HISTORY_UUID_KEY );
1126
1131
writer .setLiveCommitData (newCommitData .entrySet ());
1127
1132
writer .commit ();
1128
1133
}
1129
- store .ensureIndexHas6xCommitTags ();
1134
+ assertThat ( store .ensureIndexHas6xCommitTags (), equalTo ( true ) );
1130
1135
segmentInfos = Lucene .readSegmentInfos (store .directory ());
1131
1136
assertThat (segmentInfos .getUserData (), hasKey (Engine .HISTORY_UUID_KEY ));
1132
1137
assertThat (segmentInfos .getUserData (),
1133
1138
hasEntry (equalTo (SequenceNumbers .LOCAL_CHECKPOINT_KEY ), equalTo (Long .toString (localCheckpoint ))));
1134
1139
assertThat (segmentInfos .getUserData (),
1135
1140
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 ))));
1136
1143
}
1137
1144
}
1138
1145
0 commit comments