1717import org .elasticsearch .action .ActionRunnable ;
1818import org .elasticsearch .action .support .PlainActionFuture ;
1919import org .elasticsearch .action .support .SubscribableListener ;
20- import org .elasticsearch .cluster .NodeConnectionsService .ConnectionTarget ;
20+ import org .elasticsearch .cluster .NodeConnectionsService .DisconnectionHistory ;
2121import org .elasticsearch .cluster .node .DiscoveryNode ;
2222import org .elasticsearch .cluster .node .DiscoveryNodeRole ;
2323import org .elasticsearch .cluster .node .DiscoveryNodeUtils ;
@@ -250,18 +250,17 @@ public String toString() {
250250 }
251251
252252 public void testDisconnectionHistory () {
253- final Settings .Builder settings = Settings .builder ();
254- settings .put (CLUSTER_NODE_RECONNECT_INTERVAL_SETTING .getKey (), "100ms" );
255-
256253 final DeterministicTaskQueue deterministicTaskQueue = new DeterministicTaskQueue ();
257254 final ThreadPool threadPool = deterministicTaskQueue .getThreadPool ();
255+ final long reconnectIntervalMillis = CLUSTER_NODE_RECONNECT_INTERVAL_SETTING .get (Settings .EMPTY ).millis ();
256+ final long reconnectIntervalSeconds = reconnectIntervalMillis / 1000 ;
258257
259- MockTransport transport = new MockTransport (deterministicTaskQueue . getThreadPool () );
260- TestTransportService transportService = new TestTransportService (transport , deterministicTaskQueue . getThreadPool () );
258+ MockTransport transport = new MockTransport (threadPool );
259+ TestTransportService transportService = new TestTransportService (transport , threadPool );
261260 transportService .start ();
262261 transportService .acceptIncomingRequests ();
263262
264- final NodeConnectionsService service = new NodeConnectionsService (settings . build () , threadPool , transportService );
263+ final NodeConnectionsService service = new NodeConnectionsService (Settings . EMPTY , threadPool , transportService );
265264 service .start ();
266265
267266 final DiscoveryNode noClose = DiscoveryNodeUtils .create ("noClose" );
@@ -281,6 +280,14 @@ public void testDisconnectionHistory() {
281280 assertNullDisconnectionHistory (service , gracefulClose );
282281 assertNullDisconnectionHistory (service , exceptionalClose );
283282
283+ transportService .disconnectFromNode (gracefulClose );
284+ transportService .disconnectFromNode (exceptionalClose );
285+
286+ // check disconnection history set after close
287+ assertNullDisconnectionHistory (service , noClose );
288+ assertDisconnectionHistoryDetails (service , threadPool , gracefulClose , null );
289+ assertDisconnectionHistoryDetails (service , threadPool , exceptionalClose , RuntimeException .class );
290+
284291 try (var mockLog = MockLog .capture (NodeConnectionsService .class )) {
285292 mockLog .addExpectation (
286293 new MockLog .SeenEventExpectation (
@@ -289,7 +296,7 @@ public void testDisconnectionHistory() {
289296 Level .WARN ,
290297 "reopened transport connection to node ["
291298 + gracefulClose .descriptionWithoutAttributes ()
292- + "] which disconnected gracefully [* ms] ago "
299+ + "] which disconnected gracefully [" + reconnectIntervalSeconds + "s/" + reconnectIntervalMillis + " ms] ago "
293300 + "but did not restart, so the disconnection is unexpected; "
294301 + "see [https://www.elastic.co/docs/*] for troubleshooting guidance"
295302 )
@@ -301,33 +308,24 @@ public void testDisconnectionHistory() {
301308 Level .WARN ,
302309 "reopened transport connection to node ["
303310 + exceptionalClose .descriptionWithoutAttributes ()
304- + "] which disconnected exceptionally [* ms] ago "
311+ + "] which disconnected exceptionally [" + reconnectIntervalSeconds + "s/" + reconnectIntervalMillis + " ms] ago "
305312 + "but did not restart, so the disconnection is unexpected; "
306313 + "see [https://www.elastic.co/docs/*] for troubleshooting guidance"
307314 )
308315 );
309- transportService .disconnectFromNode (gracefulClose );
310- transportService .disconnectFromNode (exceptionalClose );
311-
312- // check disconnection history set after close
313- assertNullDisconnectionHistory (service , noClose );
314- assertDisconnectionHistoryDetails (service , threadPool , gracefulClose , null );
315- assertDisconnectionHistoryDetails (service , threadPool , exceptionalClose , RuntimeException .class );
316-
317- runTasksUntil (deterministicTaskQueue , 200 );
318-
319- // check on reconnect -- disconnection history is reset
320- assertNullDisconnectionHistory (service , noClose );
321- assertNullDisconnectionHistory (service , gracefulClose );
322- assertNullDisconnectionHistory (service , exceptionalClose );
323-
316+ runTasksUntil (deterministicTaskQueue , deterministicTaskQueue .getCurrentTimeMillis () + reconnectIntervalMillis );
324317 mockLog .assertAllExpectationsMatched ();
325318 }
319+
320+ // check on reconnect -- disconnection history is reset
321+ assertNullDisconnectionHistory (service , noClose );
322+ assertNullDisconnectionHistory (service , gracefulClose );
323+ assertNullDisconnectionHistory (service , exceptionalClose );
326324 }
327325
328326 private void assertNullDisconnectionHistory (NodeConnectionsService service , DiscoveryNode node ) {
329- ConnectionTarget nodeTarget = service .connectionTargetForNode (node );
330- assertNull (nodeTarget . disconnectionHistory );
327+ DisconnectionHistory disconnectionHistory = service .disconnectionHistoryForNode (node );
328+ assertNull (disconnectionHistory );
331329 }
332330
333331 private void assertDisconnectionHistoryDetails (
@@ -336,14 +334,14 @@ private void assertDisconnectionHistoryDetails(
336334 DiscoveryNode node ,
337335 @ Nullable Class <?> disconnectCauseClass
338336 ) {
339- ConnectionTarget nodeTarget = service .connectionTargetForNode (node );
340- assertNotNull (nodeTarget . disconnectionHistory );
341- assertTrue (threadPool .absoluteTimeInMillis () - nodeTarget . disconnectionHistory .getDisconnectTimeMillis () >= 0 );
342- assertTrue (threadPool .absoluteTimeInMillis () - nodeTarget . disconnectionHistory .getDisconnectTimeMillis () <= 200 );
337+ DisconnectionHistory disconnectionHistory = service .disconnectionHistoryForNode (node );
338+ assertNotNull (disconnectionHistory );
339+ assertTrue (threadPool .absoluteTimeInMillis () - disconnectionHistory .getDisconnectTimeMillis () >= 0 );
340+ assertTrue (threadPool .absoluteTimeInMillis () - disconnectionHistory .getDisconnectTimeMillis () <= 200 );
343341 if (disconnectCauseClass != null ) {
344- assertThat (nodeTarget . disconnectionHistory .getDisconnectCause (), Matchers .isA (disconnectCauseClass ));
342+ assertThat (disconnectionHistory .getDisconnectCause (), Matchers .isA (disconnectCauseClass ));
345343 } else {
346- assertNull (nodeTarget . disconnectionHistory .getDisconnectCause ());
344+ assertNull (disconnectionHistory .getDisconnectCause ());
347345 }
348346 }
349347
0 commit comments