Skip to content

Commit 3cd1182

Browse files
committed
Assert latch.await returns true and always return from listener
1 parent 6c9d72f commit 3cd1182

File tree

4 files changed

+49
-8
lines changed

4 files changed

+49
-8
lines changed

x-pack/plugin/monitoring/src/main/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,9 @@ public void openBulk(final ActionListener<ExportBulk> listener) {
677677
final String name = "xpack.monitoring.exporters." + config.name();
678678

679679
listener.onResponse(new HttpExportBulk(name, client, defaultParams, dateTimeFormatter, threadContext));
680+
} else {
681+
// we're not ready yet, so keep waiting
682+
listener.onResponse(null);
680683
}
681684
}, listener::onFailure));
682685
}

x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterIT.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ public void testHostChangeReChecksTemplate() throws Exception {
295295
}
296296

297297
public void testUnsupportedClusterVersion() throws Exception {
298-
Settings settings = Settings.builder()
298+
final Settings settings = Settings.builder()
299299
.put("xpack.monitoring.exporters._http.type", "http")
300300
.put("xpack.monitoring.exporters._http.host", getFormattedAddress(webServer))
301301
.build();
@@ -317,15 +317,25 @@ public void testUnsupportedClusterVersion() throws Exception {
317317
bulk -> {
318318
assertNull(bulk);
319319

320+
logger.error("[testUnsupportedClusterVersion] responded to listener");
321+
320322
awaitResponseAndClose.countDown();
321323
},
322-
e -> fail(e.getMessage())
324+
e -> {
325+
logger.error("[testUnsupportedClusterVersion] failed to respond to listener");
326+
327+
fail(e.getMessage());
328+
}
323329
);
324330

325331
exporter.openBulk(listener);
326332

333+
logger.error("[testUnsupportedClusterVersion] waiting for latch");
334+
327335
// wait for it to actually respond
328-
awaitResponseAndClose.await(15, TimeUnit.SECONDS);
336+
assertTrue(awaitResponseAndClose.await(15, TimeUnit.SECONDS));
337+
338+
logger.error("[testUnsupportedClusterVersion] waited for latch");
329339
}
330340

331341
assertThat(webServer.requests(), hasSize(1));
@@ -593,7 +603,7 @@ private void export(final Settings settings, final Collection<MonitoringDoc> doc
593603
}, e -> fail("Failed to create HttpExportBulk")));
594604

595605
// block until the bulk responds
596-
awaitResponseAndClose.await(15, TimeUnit.SECONDS);
606+
assertTrue(awaitResponseAndClose.await(15, TimeUnit.SECONDS));
597607
}
598608
}
599609

x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterTests.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,35 @@ public void testHttpExporterDirtyResourcesBlock() throws Exception {
453453
exporter.openBulk(bulkListener);
454454

455455
// wait for it to actually respond
456-
awaitResponseAndClose.await(15, TimeUnit.SECONDS);
456+
assertTrue(awaitResponseAndClose.await(15, TimeUnit.SECONDS));
457+
}
458+
}
459+
460+
public void testHttpExporterReturnsNullForOpenBulkIfNotReady() throws Exception {
461+
final Config config = createConfig(Settings.EMPTY);
462+
final RestClient client = mock(RestClient.class);
463+
final Sniffer sniffer = randomFrom(mock(Sniffer.class), null);
464+
final NodeFailureListener listener = mock(NodeFailureListener.class);
465+
// always has to check, and never succeeds checks but it does not throw an exception (e.g., version check fails)
466+
final HttpResource resource = new MockHttpResource(exporterName(), true, false, false);
467+
468+
try (HttpExporter exporter = new HttpExporter(config, client, sniffer, threadContext, listener, resource)) {
469+
verify(listener).setResource(resource);
470+
471+
final CountDownLatch awaitResponseAndClose = new CountDownLatch(1);
472+
final ActionListener<ExportBulk> bulkListener = ActionListener.wrap(
473+
bulk -> {
474+
assertThat(bulk, nullValue());
475+
476+
awaitResponseAndClose.countDown();
477+
},
478+
e -> fail(e.getMessage())
479+
);
480+
481+
exporter.openBulk(bulkListener);
482+
483+
// wait for it to actually respond
484+
assertTrue(awaitResponseAndClose.await(15, TimeUnit.SECONDS));
457485
}
458486
}
459487

@@ -481,7 +509,7 @@ public void testHttpExporter() throws Exception {
481509
exporter.openBulk(bulkListener);
482510

483511
// wait for it to actually respond
484-
awaitResponseAndClose.await(15, TimeUnit.SECONDS);
512+
assertTrue(awaitResponseAndClose.await(15, TimeUnit.SECONDS));
485513
}
486514
}
487515

x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpResourceTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ protected void doCheckAndPublish(RestClient client, ActionListener<Boolean> list
146146
// then respond here
147147
final Thread thread = new Thread(() -> {
148148
try {
149-
secondCheck.await(15, TimeUnit.SECONDS);
149+
assertTrue(secondCheck.await(15, TimeUnit.SECONDS));
150150
listener.onResponse(response);
151151
} catch (InterruptedException e) {
152152
listener.onFailure(e);
@@ -161,7 +161,7 @@ protected void doCheckAndPublish(RestClient client, ActionListener<Boolean> list
161161
resource.checkAndPublishIfDirty(client, listener);
162162
resource.checkAndPublishIfDirty(client, checkingListener);
163163

164-
firstCheck.await(15, TimeUnit.SECONDS);
164+
assertTrue(firstCheck.await(15, TimeUnit.SECONDS));
165165

166166
verify(listener).onResponse(response);
167167

0 commit comments

Comments
 (0)