You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-issues@hadoop.apache.org by "Lei Yang (Jira)" <ji...@apache.org> on 2022/03/23 19:34:00 UTC
[jira] [Updated] (HDFS-16518) Cached KeyProvider in KeyProviderCache should be closed with ShutdownHookManager
[ https://issues.apache.org/jira/browse/HDFS-16518?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Lei Yang updated HDFS-16518:
----------------------------
Summary: Cached KeyProvider in KeyProviderCache should be closed with ShutdownHookManager (was: Cached KeyProvider in KeyProviderCache does not get closed when DFSClient is closed )
> Cached KeyProvider in KeyProviderCache should be closed with ShutdownHookManager
> --------------------------------------------------------------------------------
>
> Key: HDFS-16518
> URL: https://issues.apache.org/jira/browse/HDFS-16518
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: hdfs
> Affects Versions: 2.10.0
> Reporter: Lei Yang
> Priority: Major
> Labels: pull-request-available
> Time Spent: 20m
> Remaining Estimate: 0h
>
> The cache has ttl and can close KeyProvider when cache entry is expired but when DFSClient is closed, we also need to make sure the underlying KeyProvider used by DFSClient is closed as well. The cache has a removeListener hook which is called when cache entry is removed. An alternative approach would be add shutdownhook at jvm shutdown and close all KeyProviders in the cache.
> {code:java}
> Class KeyProviderCache
> ...
> public KeyProviderCache(long expiryMs) {
> cache = CacheBuilder.newBuilder()
> .expireAfterAccess(expiryMs, TimeUnit.MILLISECONDS)
> .removalListener(new RemovalListener<URI, KeyProvider>() {
> @Override
> public void onRemoval(
> @Nonnull RemovalNotification<URI, KeyProvider> notification) {
> try {
> assert notification.getValue() != null;
> notification.getValue().close();
> } catch (Throwable e) {
> LOG.error(
> "Error closing KeyProvider with uri ["
> + notification.getKey() + "]", e);
> }
> }
> })
> .build();
> }{code}
>
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-help@hadoop.apache.org