|
@@ -14,6 +14,7 @@ import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
|
|
+import static org.hamcrest.Matchers.equalTo;
|
|
|
import static org.hamcrest.Matchers.is;
|
|
|
|
|
|
public class FlushListenerTests extends ESTestCase {
|
|
@@ -27,12 +28,14 @@ public class FlushListenerTests extends ESTestCase {
|
|
|
flushAcknowledgementHolder.set(flushAcknowledgement);
|
|
|
} catch (InterruptedException _ex) {
|
|
|
Thread.currentThread().interrupt();
|
|
|
+ } catch (Exception ex) {
|
|
|
+ fail("unexpected exception " + ex.getMessage());
|
|
|
}
|
|
|
}).start();
|
|
|
assertBusy(() -> assertTrue(listener.awaitingFlushed.containsKey("_id")));
|
|
|
assertNull(flushAcknowledgementHolder.get());
|
|
|
FlushAcknowledgement flushAcknowledgement = new FlushAcknowledgement("_id", new Date(12345678L));
|
|
|
- listener.acknowledgeFlush(flushAcknowledgement);
|
|
|
+ listener.acknowledgeFlush(flushAcknowledgement, null);
|
|
|
assertBusy(() -> assertNotNull(flushAcknowledgementHolder.get()));
|
|
|
assertEquals(1, listener.awaitingFlushed.size());
|
|
|
|
|
@@ -40,6 +43,33 @@ public class FlushListenerTests extends ESTestCase {
|
|
|
assertEquals(0, listener.awaitingFlushed.size());
|
|
|
}
|
|
|
|
|
|
+ public void testAcknowledgeFlushFailure() throws Exception {
|
|
|
+ FlushListener listener = new FlushListener();
|
|
|
+ AtomicReference<Exception> flushExceptionHolder = new AtomicReference<>();
|
|
|
+ new Thread(() -> {
|
|
|
+ try {
|
|
|
+ listener.waitForFlush("_id", Duration.ofMillis(10000));
|
|
|
+ fail("Expected exception to throw.");
|
|
|
+ } catch (InterruptedException _ex) {
|
|
|
+ Thread.currentThread().interrupt();
|
|
|
+ } catch (Exception ex) {
|
|
|
+ flushExceptionHolder.set(ex);
|
|
|
+ }
|
|
|
+ }).start();
|
|
|
+ assertBusy(() -> assertTrue(listener.awaitingFlushed.containsKey("_id")));
|
|
|
+ assertNull(flushExceptionHolder.get());
|
|
|
+ FlushAcknowledgement flushAcknowledgement = new FlushAcknowledgement("_id", new Date(12345678L));
|
|
|
+ listener.acknowledgeFlush(flushAcknowledgement, new Exception("BOOM"));
|
|
|
+ assertBusy(() -> {
|
|
|
+ assertNotNull(flushExceptionHolder.get());
|
|
|
+ assertThat(flushExceptionHolder.get().getMessage(), equalTo("BOOM"));
|
|
|
+ });
|
|
|
+ assertEquals(1, listener.awaitingFlushed.size());
|
|
|
+
|
|
|
+ listener.clear("_id");
|
|
|
+ assertEquals(0, listener.awaitingFlushed.size());
|
|
|
+ }
|
|
|
+
|
|
|
public void testClear() throws Exception {
|
|
|
FlushListener listener = new FlushListener();
|
|
|
|
|
@@ -55,6 +85,8 @@ public class FlushListenerTests extends ESTestCase {
|
|
|
flushAcknowledgementHolder.set(flushAcknowledgement);
|
|
|
} catch (InterruptedException _ex) {
|
|
|
Thread.currentThread().interrupt();
|
|
|
+ } catch (Exception ex) {
|
|
|
+ fail("unexpected exception " + ex.getMessage());
|
|
|
}
|
|
|
}).start();
|
|
|
}
|