Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,7 @@ public Condition newCondition() {
*/
public abstract DeleteResult delete(Delete delete) throws IOException;

public abstract NoOpResult noOp(NoOp noOp);
public abstract NoOpResult noOp(NoOp noOp) throws IOException;

/**
* Base class for index and delete operation results
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1449,13 +1449,19 @@ public void maybePruneDeletes() {
}

@Override
public NoOpResult noOp(final NoOp noOp) {
NoOpResult noOpResult;
public NoOpResult noOp(final NoOp noOp) throws IOException {
final NoOpResult noOpResult;
try (ReleasableLock ignored = readLock.acquire()) {
ensureOpen();
markSeqNoAsSeen(noOp.seqNo());
noOpResult = innerNoOp(noOp);
} catch (final Exception e) {
noOpResult = new NoOpResult(getPrimaryTerm(), noOp.seqNo(), e);
try {
maybeFailEngine("noop", e);
} catch (Exception inner) {
e.addSuppressed(inner);
}
throw e;
}
return noOpResult;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -807,7 +807,7 @@ private Engine.NoOpResult markSeqNoAsNoop(Engine engine, long seqNo, long opPrim
return noOp(engine, noOp);
}

private Engine.NoOpResult noOp(Engine engine, Engine.NoOp noOp) {
private Engine.NoOpResult noOp(Engine engine, Engine.NoOp noOp) throws IOException {
active.set(true);
if (logger.isTraceEnabled()) {
logger.trace("noop (seq# [{}])", noOp.seqNo());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3232,7 +3232,7 @@ public void testHandleDocumentFailure() throws Exception {
final ParsedDocument doc3 = testParsedDocument("3", null, testDocumentWithTextField(), B_1, null);

AtomicReference<ThrowingIndexWriter> throwingIndexWriter = new AtomicReference<>();
try (Engine engine = createEngine(defaultSettings, store, createTempDir(), NoMergePolicy.INSTANCE,
try (InternalEngine engine = createEngine(defaultSettings, store, createTempDir(), NoMergePolicy.INSTANCE,
(directory, iwc) -> {
throwingIndexWriter.set(new ThrowingIndexWriter(directory, iwc));
return throwingIndexWriter.get();
Expand Down Expand Up @@ -3297,16 +3297,13 @@ public BytesRef binaryValue() {
engine.close();
}
// now the engine is closed check we respond correctly
try {
if (randomBoolean()) {
engine.index(indexForDoc(doc1));
} else {
engine.delete(new Engine.Delete("test", "", newUid(doc1), primaryTerm.get()));
}
fail("engine should be closed");
} catch (Exception e) {
assertThat(e, instanceOf(AlreadyClosedException.class));
}
expectThrows(AlreadyClosedException.class, () -> engine.index(indexForDoc(doc1)));
expectThrows(AlreadyClosedException.class,
() -> engine.delete(new Engine.Delete("test", "", newUid(doc1), primaryTerm.get())));
expectThrows(AlreadyClosedException.class, () -> engine.noOp(
new Engine.NoOp(engine.getLocalCheckpointTracker().generateSeqNo(),
engine.config().getPrimaryTermSupplier().getAsLong(),
randomFrom(Engine.Operation.Origin.values()), randomNonNegativeLong(), "test")));
}
}
}
Expand Down