|
@@ -560,7 +560,7 @@ public class InternalEngine extends Engine {
|
|
|
/**
|
|
|
* Reads the current stored history ID from the IW commit data.
|
|
|
*/
|
|
|
- private String loadHistoryUUID(final IndexWriter writer) throws IOException {
|
|
|
+ private String loadHistoryUUID(final IndexWriter writer) {
|
|
|
final String uuid = commitDataAsMap(writer).get(HISTORY_UUID_KEY);
|
|
|
if (uuid == null) {
|
|
|
throw new IllegalStateException("commit doesn't contain history uuid");
|
|
@@ -632,9 +632,8 @@ public class InternalEngine extends Engine {
|
|
|
if (operation != null) {
|
|
|
// in the case of a already pruned translog generation we might get null here - yet very unlikely
|
|
|
final Translog.Index index = (Translog.Index) operation;
|
|
|
- TranslogLeafReader reader = new TranslogLeafReader(index, engineConfig
|
|
|
- .getIndexSettings().getIndexVersionCreated());
|
|
|
- return new GetResult(new Searcher("realtime_get", new IndexSearcher(reader), reader::close),
|
|
|
+ TranslogLeafReader reader = new TranslogLeafReader(index);
|
|
|
+ return new GetResult(new Searcher("realtime_get", new IndexSearcher(reader), reader),
|
|
|
new VersionsAndSeqNoResolver.DocIdAndVersion(0, index.version(), index.seqNo(), index.primaryTerm(),
|
|
|
reader, 0));
|
|
|
}
|
|
@@ -753,7 +752,7 @@ public class InternalEngine extends Engine {
|
|
|
+ index.getAutoGeneratedIdTimestamp();
|
|
|
switch (index.origin()) {
|
|
|
case PRIMARY:
|
|
|
- assertPrimaryCanOptimizeAddDocument(index);
|
|
|
+ assert assertPrimaryCanOptimizeAddDocument(index);
|
|
|
return true;
|
|
|
case PEER_RECOVERY:
|
|
|
case REPLICA:
|
|
@@ -779,7 +778,7 @@ public class InternalEngine extends Engine {
|
|
|
|
|
|
private boolean assertIncomingSequenceNumber(final Engine.Operation.Origin origin, final long seqNo) {
|
|
|
if (origin == Operation.Origin.PRIMARY) {
|
|
|
- assertPrimaryIncomingSequenceNumber(origin, seqNo);
|
|
|
+ assert assertPrimaryIncomingSequenceNumber(origin, seqNo);
|
|
|
} else {
|
|
|
// sequence number should be set when operation origin is not primary
|
|
|
assert seqNo >= 0 : "recovery or replica ops should have an assigned seq no.; origin: " + origin;
|
|
@@ -920,7 +919,7 @@ public class InternalEngine extends Engine {
|
|
|
}
|
|
|
|
|
|
protected final IndexingStrategy planIndexingAsNonPrimary(Index index) throws IOException {
|
|
|
- assertNonPrimaryOrigin(index);
|
|
|
+ assert assertNonPrimaryOrigin(index);
|
|
|
final IndexingStrategy plan;
|
|
|
final boolean appendOnlyRequest = canOptimizeAddDocument(index);
|
|
|
if (appendOnlyRequest && mayHaveBeenIndexedBefore(index) == false && index.seqNo() > maxSeqNoOfNonAppendOnlyOperations.get()) {
|
|
@@ -975,13 +974,13 @@ public class InternalEngine extends Engine {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- protected final IndexingStrategy planIndexingAsPrimary(Index index) throws IOException {
|
|
|
+ private IndexingStrategy planIndexingAsPrimary(Index index) throws IOException {
|
|
|
assert index.origin() == Operation.Origin.PRIMARY : "planing as primary but origin isn't. got " + index.origin();
|
|
|
final IndexingStrategy plan;
|
|
|
// resolve an external operation into an internal one which is safe to replay
|
|
|
if (canOptimizeAddDocument(index)) {
|
|
|
if (mayHaveBeenIndexedBefore(index)) {
|
|
|
- plan = IndexingStrategy.overrideExistingAsIfNotThere(1L);
|
|
|
+ plan = IndexingStrategy.overrideExistingAsIfNotThere();
|
|
|
versionMap.enforceSafeAccess();
|
|
|
} else {
|
|
|
plan = IndexingStrategy.optimizedAppendOnly(1L);
|
|
@@ -1003,7 +1002,7 @@ public class InternalEngine extends Engine {
|
|
|
if (index.getIfSeqNo() != SequenceNumbers.UNASSIGNED_SEQ_NO && versionValue == null) {
|
|
|
final VersionConflictEngineException e = new VersionConflictEngineException(shardId, index.id(),
|
|
|
index.getIfSeqNo(), index.getIfPrimaryTerm(), SequenceNumbers.UNASSIGNED_SEQ_NO, 0);
|
|
|
- plan = IndexingStrategy.skipDueToVersionConflict(e, currentNotFoundOrDeleted, currentVersion, getPrimaryTerm());
|
|
|
+ plan = IndexingStrategy.skipDueToVersionConflict(e, true, currentVersion, getPrimaryTerm());
|
|
|
} else if (index.getIfSeqNo() != SequenceNumbers.UNASSIGNED_SEQ_NO && (
|
|
|
versionValue.seqNo != index.getIfSeqNo() || versionValue.term != index.getIfPrimaryTerm()
|
|
|
)) {
|
|
@@ -1161,9 +1160,9 @@ public class InternalEngine extends Engine {
|
|
|
true, false, versionForIndexing, null);
|
|
|
}
|
|
|
|
|
|
- static IndexingStrategy overrideExistingAsIfNotThere(long versionForIndexing) {
|
|
|
+ static IndexingStrategy overrideExistingAsIfNotThere() {
|
|
|
return new IndexingStrategy(true, true, true,
|
|
|
- false, versionForIndexing, null);
|
|
|
+ false, 1L, null);
|
|
|
}
|
|
|
|
|
|
public static IndexingStrategy processButSkipLucene(boolean currentNotFoundOrDeleted, long versionForIndexing) {
|
|
@@ -1282,7 +1281,7 @@ public class InternalEngine extends Engine {
|
|
|
}
|
|
|
|
|
|
protected final DeletionStrategy planDeletionAsNonPrimary(Delete delete) throws IOException {
|
|
|
- assertNonPrimaryOrigin(delete);
|
|
|
+ assert assertNonPrimaryOrigin(delete);
|
|
|
maxSeqNoOfNonAppendOnlyOperations.updateAndGet(curr -> Math.max(delete.seqNo(), curr));
|
|
|
assert maxSeqNoOfNonAppendOnlyOperations.get() >= delete.seqNo() : "max_seqno of non-append-only was not updated;" +
|
|
|
"max_seqno non-append-only [" + maxSeqNoOfNonAppendOnlyOperations.get() + "], seqno of delete [" + delete.seqNo() + "]";
|
|
@@ -1302,7 +1301,7 @@ public class InternalEngine extends Engine {
|
|
|
} else {
|
|
|
final OpVsLuceneDocStatus opVsLucene = compareOpToLuceneDocBasedOnSeqNo(delete);
|
|
|
if (opVsLucene == OpVsLuceneDocStatus.OP_STALE_OR_EQUAL) {
|
|
|
- plan = DeletionStrategy.processAsStaleOp(softDeleteEnabled, false, delete.version());
|
|
|
+ plan = DeletionStrategy.processAsStaleOp(softDeleteEnabled, delete.version());
|
|
|
} else {
|
|
|
plan = DeletionStrategy.processNormally(opVsLucene == OpVsLuceneDocStatus.LUCENE_DOC_NOT_FOUND, delete.version());
|
|
|
}
|
|
@@ -1315,7 +1314,7 @@ public class InternalEngine extends Engine {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- protected final DeletionStrategy planDeletionAsPrimary(Delete delete) throws IOException {
|
|
|
+ private DeletionStrategy planDeletionAsPrimary(Delete delete) throws IOException {
|
|
|
assert delete.origin() == Operation.Origin.PRIMARY : "planing as primary but got " + delete.origin();
|
|
|
// resolve operation from external to internal
|
|
|
final VersionValue versionValue = resolveDocVersion(delete, delete.getIfSeqNo() != SequenceNumbers.UNASSIGNED_SEQ_NO);
|
|
@@ -1333,7 +1332,7 @@ public class InternalEngine extends Engine {
|
|
|
if (delete.getIfSeqNo() != SequenceNumbers.UNASSIGNED_SEQ_NO && versionValue == null) {
|
|
|
final VersionConflictEngineException e = new VersionConflictEngineException(shardId, delete.id(),
|
|
|
delete.getIfSeqNo(), delete.getIfPrimaryTerm(), SequenceNumbers.UNASSIGNED_SEQ_NO, 0);
|
|
|
- plan = DeletionStrategy.skipDueToVersionConflict(e, currentVersion, getPrimaryTerm(), currentlyDeleted);
|
|
|
+ plan = DeletionStrategy.skipDueToVersionConflict(e, currentVersion, getPrimaryTerm(), true);
|
|
|
} else if (delete.getIfSeqNo() != SequenceNumbers.UNASSIGNED_SEQ_NO && (
|
|
|
versionValue.seqNo != delete.getIfSeqNo() || versionValue.term != delete.getIfPrimaryTerm()
|
|
|
)) {
|
|
@@ -1425,8 +1424,8 @@ public class InternalEngine extends Engine {
|
|
|
return new DeletionStrategy(false, false, currentlyDeleted, versionOfDeletion, null);
|
|
|
}
|
|
|
|
|
|
- static DeletionStrategy processAsStaleOp(boolean addStaleOpToLucene, boolean currentlyDeleted, long versionOfDeletion) {
|
|
|
- return new DeletionStrategy(false, addStaleOpToLucene, currentlyDeleted, versionOfDeletion, null);
|
|
|
+ static DeletionStrategy processAsStaleOp(boolean addStaleOpToLucene, long versionOfDeletion) {
|
|
|
+ return new DeletionStrategy(false, addStaleOpToLucene, false, versionOfDeletion, null);
|
|
|
}
|
|
|
}
|
|
|
|