MINOR: fix leak in `GroupEndToEndAuthorizationTest` (#14975)

Session expiration in ZkClient can lead to a thread leak, and does fail CI on master.

This is happening in testNoDescribeProduceOrConsumeWithoutTopicDescribeAcl, and possibly other tests.

Use try-with-resources to close ZkClient if this happens.

This does not fix the underlying session expiration in ZK.

Reviewers: David Jacot <djacot@confluent.io>
This commit is contained in:
Lucas Brutschy 2023-12-11 09:05:03 +01:00 committed by GitHub
parent f80f991c79
commit 134eabee16
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 13 deletions

View File

@ -200,23 +200,23 @@ trait SaslSetup {
def createScramCredentials(zkConnect: String, userName: String, password: String): Unit = {
val zkClientConfig = new ZKClientConfig()
val zkClient = KafkaZkClient(
TestUtils.resource(KafkaZkClient(
zkConnect, JaasUtils.isZkSaslEnabled || KafkaConfig.zkTlsClientAuthEnabled(zkClientConfig), 30000, 30000,
Int.MaxValue, Time.SYSTEM, name = "SaslSetup", zkClientConfig = zkClientConfig)
val adminZkClient = new AdminZkClient(zkClient)
Int.MaxValue, Time.SYSTEM, name = "SaslSetup", zkClientConfig = zkClientConfig)) { zkClient =>
val adminZkClient = new AdminZkClient(zkClient)
val entityType = ConfigType.User
val entityName = userName
val configs = adminZkClient.fetchEntityConfig(entityType, entityName)
val entityType = ConfigType.User
val entityName = userName
val configs = adminZkClient.fetchEntityConfig(entityType, entityName)
ScramMechanism.values().foreach(mechanism => {
val credential = new ScramFormatter(mechanism).generateCredential(password, 4096)
val credentialString = ScramCredentialUtils.credentialToString(credential)
configs.setProperty(mechanism.mechanismName, credentialString)
})
ScramMechanism.values().foreach(mechanism => {
val credential = new ScramFormatter(mechanism).generateCredential(password, 4096)
val credentialString = ScramCredentialUtils.credentialToString(credential)
configs.setProperty(mechanism.mechanismName, credentialString)
})
adminZkClient.changeConfigs(entityType, entityName, configs)
zkClient.close()
adminZkClient.changeConfigs(entityType, entityName, configs)
}
}
}