relax the assertion about the existence of MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID in the user commit data
Since #24149 we started storing the maxUnsafeAutoIdTimestamp in the lucene commit. The assertions in that PR were built on the assumption that recovering a primary always ends up committing lucene. That is sadly [not true](a72eaa8e0f/core/src/main/java/org/elasticsearch/index/engine/InternalEngine.java (L313)
).
Closes #24809
This commit is contained in:
parent
d3c95b8d9d
commit
a5fffa2988
|
@ -1090,13 +1090,11 @@ public class IndexShard extends AbstractIndexShardComponent implements IndicesCl
|
|||
|
||||
private boolean assertMaxUnsafeAutoIdInCommit() throws IOException {
|
||||
final Map<String, String> userData = SegmentInfos.readLatestCommit(store.directory()).getUserData();
|
||||
if (recoveryState().getRecoverySource().getType() == RecoverySource.Type.PEER) {
|
||||
if (indexSettings.getIndexVersionCreated().onOrAfter(Version.V_5_5_0_UNRELEASED) &&
|
||||
// TODO: LOCAL_SHARDS need to transfer this information
|
||||
recoveryState().getRecoverySource().getType() != RecoverySource.Type.LOCAL_SHARDS) {
|
||||
// as of 5.5.0, the engine stores the maxUnsafeAutoIdTimestamp in the commit point.
|
||||
// This should have baked into the commit by the primary we recover from, regardless of the index age.
|
||||
assert userData.containsKey(InternalEngine.MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID) :
|
||||
"recovery from remote but " + InternalEngine.MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID + " is not found in commit";
|
||||
} else if (recoveryState().getRecoverySource().getType() == RecoverySource.Type.EXISTING_STORE &&
|
||||
indexSettings.getIndexVersionCreated().onOrAfter(Version.V_5_5_0_UNRELEASED)) {
|
||||
assert userData.containsKey(InternalEngine.MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID) :
|
||||
"opening index which was created post 5.5.0 but " + InternalEngine.MAX_UNSAFE_AUTO_ID_TIMESTAMP_COMMIT_ID
|
||||
+ " is not found in commit";
|
||||
|
|
Loading…
Reference in New Issue