YARN-10156. Destroy Jersey Client in TimelineConnector.

Contributed by Tanu Ajmera.
This commit is contained in:
Prabhu Joseph 2020-04-15 19:54:30 +05:30 committed by Prabhu Joseph
parent 62c26b91fd
commit 9224568b0e
2 changed files with 17 additions and 1 deletions

View File

@ -78,7 +78,7 @@ public class TimelineConnector extends AbstractService {
public final static int DEFAULT_SOCKET_TIMEOUT = 1 * 60 * 1000; // 1 minute public final static int DEFAULT_SOCKET_TIMEOUT = 1 * 60 * 1000; // 1 minute
private SSLFactory sslFactory; private SSLFactory sslFactory;
private Client client; Client client;
private ConnectionConfigurator connConfigurator; private ConnectionConfigurator connConfigurator;
private DelegationTokenAuthenticator authenticator; private DelegationTokenAuthenticator authenticator;
private DelegationTokenAuthenticatedURL.Token token; private DelegationTokenAuthenticatedURL.Token token;
@ -200,6 +200,9 @@ public class TimelineConnector extends AbstractService {
} }
protected void serviceStop() { protected void serviceStop() {
if (this.client != null) {
this.client.destroy();
}
if (this.sslFactory != null) { if (this.sslFactory != null) {
this.sslFactory.destroy(); this.sslFactory.destroy();
} }

View File

@ -24,6 +24,8 @@ import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.times;
import java.io.IOException; import java.io.IOException;
import java.net.ConnectException; import java.net.ConnectException;
@ -492,6 +494,17 @@ public class TestTimelineClient {
Assert.assertFalse("Reloader is still alive", reloaderStillAlive); 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 { private void setupSSLConfig(YarnConfiguration conf) throws Exception {
keystoresDir = TestGenericTestUtils.getTestDir().getAbsolutePath(); keystoresDir = TestGenericTestUtils.getTestDir().getAbsolutePath();
sslConfDir = sslConfDir =