[ 
https://issues.apache.org/jira/browse/HDFS-10636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15419293#comment-15419293
 ] 

Virajith Jalaparti commented on HDFS-10636:
-------------------------------------------

Hi [~eddyxu], 

Thank you for the comments. 

I agree with points 1 and 2, and will fix them.

bq. {{breakHardlinksIfNeeded}}, {{copyMetadata}} and {{copyBlockdata}} should 
not be in {{ReplicaInfo}}. Or should not use {{File}} as input.

Agree that {{copyMetadata}} and {{copyBlockdata}} should not have {{File}} as a 
parameter. I will change it to {{URI}} to be more general. 
{{breakHardLinksIfNeeded}} has always been in {{ReplicaInfo}}. I made it 
abstract and moved the implementation to {{LocalReplica}}. 

bq. {{ReplicaUnderRecovery}}. Is there a way to avoid casting {{ReplicaInfo}} 
to {{LocalReplica}}?

The only place where the fact that {{original}} is a {{LocalReplica}} matters 
is in {{ReplicaUnderRecovery::setDir()}}. One way to address this would be to 
add the cast only when {{original.setDir()}} is called. The other way to deal 
with this would be to add {{setDir}} to {{ReplicaInfo}} but to avoid {{File}} 
as a parameter, it should take in an URI. Which do you think is better?

bq. In general, there are places in this patch that return {{ReplicaInfo}} for 
{{FinalizedReplica}}. which would makes type system weaker and is not 
future-proof. Is it necessary to be changed?

This was intentional. The way I was thinking about it was that the state of 
{{ReplicaInfo}} should be known using {{ReplicaInfo::getState()}}, and not 
using the type system. The current code does the latter -- it uses the type 
system to ensure that replicas are in a certain state. Not relying on the type 
system and using the former (use {{ReplicaInfo::getState()}}) seems a cleaner 
way of doing this. What do you think? Also, {{FinalizedReplica}} in the current 
type hierarchy, is a {{LocalReplica}}. So, referring to replicas using 
{{FinalizedReplica}} assumes that they are {{LocalReplica}} and hence, backed 
by {{File}} s. 

> Modify ReplicaInfo to remove the assumption that replica metadata and data 
> are stored in java.io.File.
> ------------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-10636
>                 URL: https://issues.apache.org/jira/browse/HDFS-10636
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: datanode, fs
>            Reporter: Virajith Jalaparti
>            Assignee: Virajith Jalaparti
>         Attachments: HDFS-10636.001.patch, HDFS-10636.002.patch, 
> HDFS-10636.003.patch, HDFS-10636.004.patch, HDFS-10636.005.patch
>
>
> Replace java.io.File related APIs from {{ReplicaInfo}}, and enable the 
> definition of new {{ReplicaInfo}} sub-classes whose metadata and data can be 
> present on external storages (HDFS-9806). 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to