|
|
@@ -178,7 +178,7 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
assertEquals(1, listeners.pendingCount());
|
|
|
|
|
|
TestSeqNoListener seqNoListener = new TestSeqNoListener();
|
|
|
- assertFalse(listeners.addOrNotify(index.getSeqNo(), seqNoListener));
|
|
|
+ assertFalse(listeners.addOrNotify(index.getSeqNo(), randomBoolean(), seqNoListener));
|
|
|
assertEquals(2, listeners.pendingCount());
|
|
|
engine.refresh("I said so");
|
|
|
assertFalse(listener.forcedRefresh.get());
|
|
|
@@ -201,7 +201,7 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
assertTrue(listeners.addOrNotify(index.getTranslogLocation(), listener));
|
|
|
assertFalse(listener.forcedRefresh.get());
|
|
|
TestSeqNoListener seqNoListener = new TestSeqNoListener();
|
|
|
- assertTrue(listeners.addOrNotify(index.getSeqNo(), seqNoListener));
|
|
|
+ assertTrue(listeners.addOrNotify(index.getSeqNo(), randomBoolean(), seqNoListener));
|
|
|
assertTrue(seqNoListener.isDone.get());
|
|
|
listener.assertNoError();
|
|
|
assertEquals(0, listeners.pendingCount());
|
|
|
@@ -217,7 +217,7 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
assertEquals("foobar", threadPool.getThreadContext().getHeader("test"));
|
|
|
latch.countDown();
|
|
|
}));
|
|
|
- assertFalse(listeners.addOrNotify(index.getSeqNo(), new ActionListener<>() {
|
|
|
+ assertFalse(listeners.addOrNotify(index.getSeqNo(), randomBoolean(), new ActionListener<>() {
|
|
|
@Override
|
|
|
public void onResponse(Void unused) {
|
|
|
assertEquals("foobar", threadPool.getThreadContext().getHeader("test"));
|
|
|
@@ -252,7 +252,7 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
} else {
|
|
|
TestSeqNoListener listener = new TestSeqNoListener();
|
|
|
nonSeqNoLocationListeners.add(listener);
|
|
|
- listeners.addOrNotify(index.getSeqNo(), listener);
|
|
|
+ listeners.addOrNotify(index.getSeqNo(), randomBoolean(), listener);
|
|
|
}
|
|
|
assertTrue(listeners.refreshNeeded());
|
|
|
}
|
|
|
@@ -268,7 +268,7 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
|
|
|
// Checkpoint version produces error if too many listeners registered
|
|
|
TestSeqNoListener rejectedListener = new TestSeqNoListener();
|
|
|
- listeners.addOrNotify(index.getSeqNo(), rejectedListener);
|
|
|
+ listeners.addOrNotify(index.getSeqNo(), randomBoolean(), rejectedListener);
|
|
|
Exception error = rejectedListener.error;
|
|
|
assertThat(error, instanceOf(IllegalStateException.class));
|
|
|
|
|
|
@@ -303,7 +303,7 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
assertNull(listener.forcedRefresh.get());
|
|
|
|
|
|
TestSeqNoListener seqNoListener = new TestSeqNoListener();
|
|
|
- assertFalse(listeners.addOrNotify(unrefreshedOperation.getSeqNo(), seqNoListener));
|
|
|
+ assertFalse(listeners.addOrNotify(unrefreshedOperation.getSeqNo(), randomBoolean(), seqNoListener));
|
|
|
assertFalse(seqNoListener.isDone.get());
|
|
|
|
|
|
listeners.close();
|
|
|
@@ -321,7 +321,7 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
assertFalse(listener.forcedRefresh.get());
|
|
|
listener.assertNoError();
|
|
|
TestSeqNoListener seqNoListener = new TestSeqNoListener();
|
|
|
- assertTrue(listeners.addOrNotify(refreshedOperation.getSeqNo(), seqNoListener));
|
|
|
+ assertTrue(listeners.addOrNotify(refreshedOperation.getSeqNo(), randomBoolean(), seqNoListener));
|
|
|
assertTrue(seqNoListener.isDone.get());
|
|
|
|
|
|
assertFalse(listeners.refreshNeeded());
|
|
|
@@ -339,7 +339,7 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
|
|
|
// But adding a seqNo listener to a non-refreshed location will fail listener
|
|
|
TestSeqNoListener seqNoListener = new TestSeqNoListener();
|
|
|
- listeners.addOrNotify(unrefreshedOperation.getSeqNo(), seqNoListener);
|
|
|
+ listeners.addOrNotify(unrefreshedOperation.getSeqNo(), randomBoolean(), seqNoListener);
|
|
|
assertEquals("can't wait for refresh on a closed index", seqNoListener.error.getMessage());
|
|
|
|
|
|
assertFalse(listeners.refreshNeeded());
|
|
|
@@ -376,7 +376,7 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
}
|
|
|
} else {
|
|
|
TestSeqNoListener seqNoListener = new TestSeqNoListener();
|
|
|
- immediate = listeners.addOrNotify(index.getSeqNo(), seqNoListener);
|
|
|
+ immediate = listeners.addOrNotify(index.getSeqNo(), randomBoolean(), seqNoListener);
|
|
|
doneSupplier = seqNoListener.isDone::get;
|
|
|
}
|
|
|
if (immediate == false) {
|
|
|
@@ -415,7 +415,7 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
listeners.addOrNotify(index.getTranslogLocation(), listener);
|
|
|
TestSeqNoListener seqNoListener = new TestSeqNoListener();
|
|
|
long processedLocalCheckpoint = engine.getProcessedLocalCheckpoint();
|
|
|
- listeners.addOrNotify(processedLocalCheckpoint, seqNoListener);
|
|
|
+ listeners.addOrNotify(processedLocalCheckpoint, randomBoolean(), seqNoListener);
|
|
|
assertBusy(() -> {
|
|
|
assertNotNull("location listener never called", listener.forcedRefresh.get());
|
|
|
assertTrue("seqNo listener never called", seqNoListener.isDone.get() || seqNoListener.error != null);
|
|
|
@@ -461,7 +461,7 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
TestLocationListener listener = new TestLocationListener();
|
|
|
assertFalse(listeners.addOrNotify(index("1").getTranslogLocation(), listener));
|
|
|
TestSeqNoListener seqNoListener = new TestSeqNoListener();
|
|
|
- assertFalse(listeners.addOrNotify(index("1").getSeqNo(), seqNoListener));
|
|
|
+ assertFalse(listeners.addOrNotify(index("1").getSeqNo(), randomBoolean(), seqNoListener));
|
|
|
engine.refresh("I said so");
|
|
|
assertFalse(listener.forcedRefresh.get());
|
|
|
listener.assertNoError();
|
|
|
@@ -474,7 +474,7 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
listener.assertNoError();
|
|
|
seqNoListener = new TestSeqNoListener();
|
|
|
// SeqNo listeners are not forced
|
|
|
- assertFalse(listeners.addOrNotify(index("1").getSeqNo(), seqNoListener));
|
|
|
+ assertFalse(listeners.addOrNotify(index("1").getSeqNo(), randomBoolean(), seqNoListener));
|
|
|
assertFalse(seqNoListener.isDone.get());
|
|
|
assertEquals(1, listeners.pendingCount());
|
|
|
|
|
|
@@ -485,7 +485,7 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
listener.assertNoError();
|
|
|
seqNoListener = new TestSeqNoListener();
|
|
|
// SeqNo listeners are not forced
|
|
|
- assertFalse(listeners.addOrNotify(index("1").getSeqNo(), seqNoListener));
|
|
|
+ assertFalse(listeners.addOrNotify(index("1").getSeqNo(), randomBoolean(), seqNoListener));
|
|
|
assertFalse(seqNoListener.isDone.get());
|
|
|
assertEquals(1, listeners.pendingCount());
|
|
|
}
|
|
|
@@ -496,7 +496,7 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
listener.assertNoError();
|
|
|
seqNoListener = new TestSeqNoListener();
|
|
|
// SeqNo listeners are not forced
|
|
|
- assertFalse(listeners.addOrNotify(index("1").getSeqNo(), seqNoListener));
|
|
|
+ assertFalse(listeners.addOrNotify(index("1").getSeqNo(), randomBoolean(), seqNoListener));
|
|
|
assertFalse(seqNoListener.isDone.get());
|
|
|
assertEquals(1, listeners.pendingCount());
|
|
|
}
|
|
|
@@ -506,12 +506,12 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
if (listeners.pendingCount() == maxListeners) {
|
|
|
// Rejected
|
|
|
TestSeqNoListener rejected = new TestSeqNoListener();
|
|
|
- assertTrue(listeners.addOrNotify(index("1").getSeqNo(), rejected));
|
|
|
+ assertTrue(listeners.addOrNotify(index("1").getSeqNo(), randomBoolean(), rejected));
|
|
|
assertNotNull(rejected.error);
|
|
|
expectedPending = 2;
|
|
|
} else {
|
|
|
TestSeqNoListener acceptedListener = new TestSeqNoListener();
|
|
|
- assertFalse(listeners.addOrNotify(index("1").getSeqNo(), acceptedListener));
|
|
|
+ assertFalse(listeners.addOrNotify(index("1").getSeqNo(), randomBoolean(), acceptedListener));
|
|
|
assertFalse(acceptedListener.isDone.get());
|
|
|
assertNull(acceptedListener.error);
|
|
|
expectedPending = 3;
|
|
|
@@ -523,7 +523,7 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
assertEquals(0, listeners.pendingCount());
|
|
|
TestSeqNoListener seqNoListener = new TestSeqNoListener();
|
|
|
long issued = index("1").getSeqNo();
|
|
|
- assertTrue(listeners.addOrNotify(issued + 1, seqNoListener));
|
|
|
+ assertTrue(listeners.addOrNotify(issued + 1, false, seqNoListener));
|
|
|
assertThat(seqNoListener.error, instanceOf(IllegalArgumentException.class));
|
|
|
String message = "Cannot wait for unissued seqNo checkpoint [wait_for_checkpoint="
|
|
|
+ (issued + 1)
|
|
|
@@ -533,6 +533,17 @@ public class RefreshListenersTests extends ESTestCase {
|
|
|
assertThat(seqNoListener.error.getMessage(), equalTo(message));
|
|
|
}
|
|
|
|
|
|
+ public void testSkipSequenceNumberMustBeIssuedCheck() throws Exception {
|
|
|
+ assertEquals(0, listeners.pendingCount());
|
|
|
+ TestSeqNoListener seqNoListener = new TestSeqNoListener();
|
|
|
+ long issued = index("1").getSeqNo();
|
|
|
+ assertFalse(listeners.addOrNotify(issued + 1, true, seqNoListener));
|
|
|
+ index("2");
|
|
|
+ assertFalse(seqNoListener.isDone.get());
|
|
|
+ engine.refresh("test");
|
|
|
+ assertTrue(seqNoListener.isDone.get());
|
|
|
+ }
|
|
|
+
|
|
|
private Engine.IndexResult index(String id) throws IOException {
|
|
|
return index(id, "test");
|
|
|
}
|