From 90ea1feb425269db60eb7b382cbfac0836aab824 Mon Sep 17 00:00:00 2001 From: "tanu.ajmera" Date: Wed, 15 Apr 2020 19:54:30 +0530 Subject: [PATCH] YARN-10156. TimelineConnector Destroys Jersey Client --- .../yarn/client/api/impl/TimelineConnector.java | 5 ++++- .../yarn/client/api/impl/TestTimelineClient.java | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineConnector.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineConnector.java index ca0f307cdb4..2e878619614 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineConnector.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineConnector.java @@ -78,7 +78,7 @@ public final static int DEFAULT_SOCKET_TIMEOUT = 1 * 60 * 1000; // 1 minute private SSLFactory sslFactory; - private Client client; + Client client; private ConnectionConfigurator connConfigurator; private DelegationTokenAuthenticator authenticator; private DelegationTokenAuthenticatedURL.Token token; @@ -200,6 +200,9 @@ DelegationTokenAuthenticatedURL getDelegationTokenAuthenticatedURL() { } protected void serviceStop() { + if (this.client != null) { + this.client.destroy(); + } if (this.sslFactory != null) { this.sslFactory.destroy(); } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestTimelineClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestTimelineClient.java index 6c2efb35269..d95ee7723b9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestTimelineClient.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestTimelineClient.java @@ -24,6 +24,8 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.times; import java.io.IOException; import java.net.ConnectException; @@ -492,6 +494,17 @@ public void testTimelineClientCleanup() throws Exception { Assert.assertFalse("Reloader is still alive", reloaderStillAlive); } + @Test + public void testTimelineConnectorDestroy() { + YarnConfiguration conf = new YarnConfiguration(); + conf.setBoolean(YarnConfiguration.TIMELINE_SERVICE_ENABLED, true); + TimelineClientImpl client = createTimelineClient(conf); + Client mockJerseyClient = mock(Client.class); + client.connector.client = mockJerseyClient; + client.stop(); + verify(mockJerseyClient, times(1)).destroy(); + } + private void setupSSLConfig(YarnConfiguration conf) throws Exception { keystoresDir = TestGenericTestUtils.getTestDir().getAbsolutePath(); sslConfDir = -- 2.25.0