Skip to content

Commit bc53096

Browse files
committed
Fixing assertion in TranslogWritter for derived source case in which recovery source could be different in display form but logically would be same
Signed-off-by: Tanik Pansuriya <panbhai@amazon.com>
1 parent 32440de commit bc53096

26 files changed

+515
-83
lines changed

server/src/main/java/org/opensearch/index/engine/InternalEngine.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@
115115
import org.opensearch.index.translog.TranslogDeletionPolicy;
116116
import org.opensearch.index.translog.TranslogException;
117117
import org.opensearch.index.translog.TranslogManager;
118+
import org.opensearch.index.translog.TranslogOperationHelper;
118119
import org.opensearch.index.translog.listener.CompositeTranslogEventListener;
119120
import org.opensearch.index.translog.listener.TranslogEventListener;
120121
import org.opensearch.search.suggest.completion.CompletionStats;
@@ -373,7 +374,8 @@ protected TranslogManager createTranslogManager(
373374
translogEventListener,
374375
this::ensureOpen,
375376
engineConfig.getTranslogFactory(),
376-
engineConfig.getStartedPrimarySupplier()
377+
engineConfig.getStartedPrimarySupplier(),
378+
TranslogOperationHelper.create(engineConfig)
377379
);
378380
}
379381

server/src/main/java/org/opensearch/index/engine/NRTReplicationEngine.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.opensearch.index.translog.TranslogDeletionPolicy;
3030
import org.opensearch.index.translog.TranslogException;
3131
import org.opensearch.index.translog.TranslogManager;
32+
import org.opensearch.index.translog.TranslogOperationHelper;
3233
import org.opensearch.index.translog.WriteOnlyTranslogManager;
3334
import org.opensearch.index.translog.listener.TranslogEventListener;
3435
import org.opensearch.search.suggest.completion.CompletionStats;
@@ -125,7 +126,8 @@ public void onAfterTranslogSync() {
125126
},
126127
this,
127128
engineConfig.getTranslogFactory(),
128-
engineConfig.getStartedPrimarySupplier()
129+
engineConfig.getStartedPrimarySupplier(),
130+
TranslogOperationHelper.create(engineConfig)
129131
);
130132
this.translogManager = translogManagerRef;
131133
success = true;

server/src/main/java/org/opensearch/index/engine/NoOpEngine.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import org.opensearch.index.translog.TranslogDeletionPolicy;
5252
import org.opensearch.index.translog.TranslogException;
5353
import org.opensearch.index.translog.TranslogManager;
54+
import org.opensearch.index.translog.TranslogOperationHelper;
5455

5556
import java.io.IOException;
5657
import java.io.UncheckedIOException;
@@ -191,7 +192,8 @@ public void trimUnreferencedTranslogFiles() throws TranslogException {
191192
engineConfig.getGlobalCheckpointSupplier(),
192193
engineConfig.getPrimaryTermSupplier(),
193194
seqNo -> {},
194-
engineConfig.getStartedPrimarySupplier()
195+
engineConfig.getStartedPrimarySupplier(),
196+
TranslogOperationHelper.create(engineConfig)
195197
)
196198
) {
197199
translog.trimUnreferencedReaders();

server/src/main/java/org/opensearch/index/engine/ReadOnlyEngine.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import org.opensearch.index.translog.TranslogConfig;
5555
import org.opensearch.index.translog.TranslogDeletionPolicy;
5656
import org.opensearch.index.translog.TranslogManager;
57+
import org.opensearch.index.translog.TranslogOperationHelper;
5758
import org.opensearch.index.translog.TranslogStats;
5859
import org.opensearch.search.suggest.completion.CompletionStats;
5960
import org.opensearch.transport.Transports;
@@ -271,12 +272,14 @@ private static TranslogStats translogStats(final EngineConfig config, final Segm
271272
Translog translog = config.getTranslogFactory()
272273
.newTranslog(
273274
translogConfig,
275+
274276
translogUuid,
275277
translogDeletionPolicy,
276278
config.getGlobalCheckpointSupplier(),
277279
config.getPrimaryTermSupplier(),
278280
seqNo -> {},
279-
config.getStartedPrimarySupplier()
281+
config.getStartedPrimarySupplier(),
282+
TranslogOperationHelper.create(config)
280283
)
281284
) {
282285
return translog.stats();

server/src/main/java/org/opensearch/index/engine/TranslogLeafReader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ public final class TranslogLeafReader extends LeafReader {
153153
);
154154
public static Set<String> ALL_FIELD_NAMES = Sets.newHashSet(FAKE_SOURCE_FIELD.name, FAKE_ROUTING_FIELD.name, FAKE_ID_FIELD.name);
155155

156-
TranslogLeafReader(Translog.Index operation, EngineConfig engineConfig) {
156+
public TranslogLeafReader(Translog.Index operation, EngineConfig engineConfig) {
157157
this.operation = operation;
158158
this.engineConfig = engineConfig;
159159
}

server/src/main/java/org/opensearch/index/translog/InternalTranslogFactory.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ public Translog newTranslog(
2828
LongSupplier globalCheckpointSupplier,
2929
LongSupplier primaryTermSupplier,
3030
LongConsumer persistedSequenceNumberConsumer,
31-
BooleanSupplier startedPrimarySupplier
31+
BooleanSupplier startedPrimarySupplier,
32+
TranslogOperationHelper translogOperationHelper
3233
) throws IOException {
3334

3435
return new LocalTranslog(
@@ -37,7 +38,8 @@ public Translog newTranslog(
3738
translogDeletionPolicy,
3839
globalCheckpointSupplier,
3940
primaryTermSupplier,
40-
persistedSequenceNumberConsumer
41+
persistedSequenceNumberConsumer,
42+
translogOperationHelper
4143
);
4244
}
4345
}

server/src/main/java/org/opensearch/index/translog/InternalTranslogManager.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ public InternalTranslogManager(
5858
TranslogEventListener translogEventListener,
5959
LifecycleAware engineLifeCycleAware,
6060
TranslogFactory translogFactory,
61-
BooleanSupplier startedPrimarySupplier
61+
BooleanSupplier startedPrimarySupplier,
62+
TranslogOperationHelper translogOperationHelper
6263
) throws IOException {
6364
this.shardId = shardId;
6465
this.readLock = readLock;
@@ -71,7 +72,7 @@ public InternalTranslogManager(
7172
if (tracker != null) {
7273
tracker.markSeqNoAsPersisted(seqNo);
7374
}
74-
}, translogUUID, translogFactory, startedPrimarySupplier);
75+
}, translogUUID, translogFactory, startedPrimarySupplier, translogOperationHelper);
7576
assert translog.getGeneration() != null;
7677
this.translog = translog;
7778
assert pendingTranslogRecovery.get() == false : "translog recovery can't be pending before we set it";
@@ -368,7 +369,8 @@ protected Translog openTranslog(
368369
LongConsumer persistedSequenceNumberConsumer,
369370
String translogUUID,
370371
TranslogFactory translogFactory,
371-
BooleanSupplier startedPrimarySupplier
372+
BooleanSupplier startedPrimarySupplier,
373+
TranslogOperationHelper translogOperationHelper
372374
) throws IOException {
373375
return translogFactory.newTranslog(
374376
translogConfig,
@@ -377,7 +379,8 @@ protected Translog openTranslog(
377379
globalCheckpointSupplier,
378380
primaryTermSupplier,
379381
persistedSequenceNumberConsumer,
380-
startedPrimarySupplier
382+
startedPrimarySupplier,
383+
translogOperationHelper
381384
);
382385
}
383386

server/src/main/java/org/opensearch/index/translog/LocalTranslog.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,18 @@ public LocalTranslog(
4949
TranslogDeletionPolicy deletionPolicy,
5050
final LongSupplier globalCheckpointSupplier,
5151
final LongSupplier primaryTermSupplier,
52-
final LongConsumer persistedSequenceNumberConsumer
52+
final LongConsumer persistedSequenceNumberConsumer,
53+
final TranslogOperationHelper translogOperationHelper
5354
) throws IOException {
54-
super(config, translogUUID, deletionPolicy, globalCheckpointSupplier, primaryTermSupplier, persistedSequenceNumberConsumer);
55+
super(
56+
config,
57+
translogUUID,
58+
deletionPolicy,
59+
globalCheckpointSupplier,
60+
primaryTermSupplier,
61+
persistedSequenceNumberConsumer,
62+
translogOperationHelper
63+
);
5564
try {
5665
final Checkpoint checkpoint = readCheckpoint(location);
5766
final Path nextTranslogFile = location.resolve(getFilename(checkpoint.generation + 1));

server/src/main/java/org/opensearch/index/translog/RemoteBlobStoreInternalTranslogFactory.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ public Translog newTranslog(
6464
LongSupplier globalCheckpointSupplier,
6565
LongSupplier primaryTermSupplier,
6666
LongConsumer persistedSequenceNumberConsumer,
67-
BooleanSupplier startedPrimarySupplier
67+
BooleanSupplier startedPrimarySupplier,
68+
TranslogOperationHelper translogOperationHelper
6869
) throws IOException {
6970

7071
assert repository instanceof BlobStoreRepository : "repository should be instance of BlobStoreRepository";
@@ -81,7 +82,8 @@ public Translog newTranslog(
8182
threadPool,
8283
startedPrimarySupplier,
8384
remoteTranslogTransferTracker,
84-
remoteStoreSettings
85+
remoteStoreSettings,
86+
translogOperationHelper
8587
);
8688
} else {
8789
return new RemoteFsTranslog(
@@ -95,7 +97,8 @@ public Translog newTranslog(
9597
threadPool,
9698
startedPrimarySupplier,
9799
remoteTranslogTransferTracker,
98-
remoteStoreSettings
100+
remoteStoreSettings,
101+
translogOperationHelper
99102
);
100103
}
101104
}

server/src/main/java/org/opensearch/index/translog/RemoteFsTimestampAwareTranslog.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ public RemoteFsTimestampAwareTranslog(
7575
ThreadPool threadPool,
7676
BooleanSupplier startedPrimarySupplier,
7777
RemoteTranslogTransferTracker remoteTranslogTransferTracker,
78-
RemoteStoreSettings remoteStoreSettings
78+
RemoteStoreSettings remoteStoreSettings,
79+
TranslogOperationHelper translogOperationHelper
7980
) throws IOException {
8081
super(
8182
config,
@@ -88,7 +89,8 @@ public RemoteFsTimestampAwareTranslog(
8889
threadPool,
8990
startedPrimarySupplier,
9091
remoteTranslogTransferTracker,
91-
remoteStoreSettings
92+
remoteStoreSettings,
93+
translogOperationHelper
9294
);
9395
logger = Loggers.getLogger(getClass(), shardId);
9496
this.metadataFilePinnedTimestampMap = new HashMap<>();

0 commit comments

Comments
 (0)