[ https://issues.apache.org/jira/browse/HDDS-2446?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16972133#comment-16972133 ]
Stephen O'Donnell commented on HDDS-2446: ----------------------------------------- I agree we need to be careful about how datanodeInfo is used with this change. The only place a datanodeInfo gets created right now is at DN registration. If a DN goes dead, all its containerReplica are removed from container manager, so on re-registration if a new datanodeDetails and datanodeInfo are created all new replicas will contain those objects. With the current code I think we are safe on this. The performance of looking up datanodeInfo for each replica would not be terrible. It would come down to a few method calls and a map lookup per container replica, but I would like to avoid this if I can. We would need to do this lookup anytime a replica is selected for reading (to ensure the node is still IN_SERVICE) and anytime the ReplicationManager checks the containers for all containerReplicas in the cluster. Once place we may need to be careful is when a maintenance node re-registers after maintenance, as we would need to retain those replicas in SCM even when the node goes dead I think. > ContainerReplica should contain DatanodeInfo rather than DatanodeDetails > ------------------------------------------------------------------------ > > Key: HDDS-2446 > URL: https://issues.apache.org/jira/browse/HDDS-2446 > Project: Hadoop Distributed Data Store > Issue Type: Sub-task > Components: SCM > Affects Versions: 0.5.0 > Reporter: Stephen O'Donnell > Assignee: Stephen O'Donnell > Priority: Major > Labels: pull-request-available > Time Spent: 10m > Remaining Estimate: 0h > > The ContainerReplica object is used by the SCM to track containers reported > by the datanodes. The current fields stored in ContainerReplica are: > {code} > final private ContainerID containerID; > final private ContainerReplicaProto.State state; > final private DatanodeDetails datanodeDetails; > final private UUID placeOfBirth; > {code} > Now we have introduced decommission and maintenance mode, the replication > manager (and potentially other parts of the code) need to know the status of > the replica in terms of IN_SERVICE, DECOMMISSIONING, DECOMMISSIONED etc to > make replication decisions. > The DatanodeDetails object does not carry this information, however the > DatanodeInfo object extends DatanodeDetails and does carry the required > information. > As DatanodeInfo extends DatanodeDetails, any place which needs a > DatanodeDetails can accept a DatanodeInfo instead. > In this Jira I propose we change the DatanodeDetails stored in > ContainerReplica to DatanodeInfo. -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org