[ 
https://issues.apache.org/jira/browse/HDFS-16876?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Simbarashe Dzinamarira updated HDFS-16876:
------------------------------------------
    Description: 
When cleaning up stale connection pools, the ConnectionManager also removes the 
associated namespace to stateId mapping from the shared RouterStateIdContext. A 
mapping is only removed when there is no other connectionPool referencing it.  
When a new connection is created, the stateId mapping gets recreated.

Since the RouterStateIdContext is shared across connections, it is cleaner to 
drive its cleanup using the list of namespaces the router references instead of 
closely tracking the active connections.

  was:
When cleaning up stale connection pools, the ConnectionManager also removes the 
associated namespaceStateId from the shared map in the RouterStateIdContext. 
This is incorrect because this namespaceStateId may still be referenced by 
other connection pools.

The consequences of this premature removal include
 * No FederatedRouterState being sent back to clients.
 * PoolAlignmentContext objects keeping references to namespaceStateIds that 
aren't in the shared map.

[https://github.com/apache/hadoop/blob/trunk/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/ConnectionManager.java#L457]


> ConnectionManager should not remove namespaceStateIds from the shared 
> RouterStateIdContext during pool cleanup.
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-16876
>                 URL: https://issues.apache.org/jira/browse/HDFS-16876
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: rbf
>            Reporter: Simbarashe Dzinamarira
>            Assignee: Simbarashe Dzinamarira
>            Priority: Critical
>
> When cleaning up stale connection pools, the ConnectionManager also removes 
> the associated namespace to stateId mapping from the shared 
> RouterStateIdContext. A mapping is only removed when there is no other 
> connectionPool referencing it.  When a new connection is created, the stateId 
> mapping gets recreated.
> Since the RouterStateIdContext is shared across connections, it is cleaner to 
> drive its cleanup using the list of namespaces the router references instead 
> of closely tracking the active connections.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to