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

Chao Sun commented on HDFS-13286:
---------------------------------

[~xkrogen] ThanksĀ for great comments!
{quote}Take a look at BPServiceActor L905-909. I haven't looked at HDFS-9917 
yet, but judging from the comment it seems we probably want to change this 
if-condition to state == HAServiceState.STANDBY || state == 
HAServiceState.OBSERVER. Can you see if you agree?
{quote}
Yes, I think this also applies to OBSERVER. Will fix.
{quote}The constructor of StandbyState needs to be modified to super(isObserver 
? HAServiceState.OBSERVER : HAServiceState.STANDBY); instead of just always 
passing STANDBY, else things which use HAState#getServiceState() will be wrong 
(see for example NameNode#getServiceStatus()).
{quote}
Good catch! Fixed.
{quote}It looks like we also need to update the enums in 
FederationNamenodeServiceState and NNHAStatusHeartbeatProto, and their 
associated usages
{quote}
Yes. I'm going to just use {{FederationNamenodeServiceState.STANDBY}} for 
{{HAServiceState.OBSERVER}} for now. Supporting Observer in RBF will be done in 
a separate JIRA. For {{NNHAStatusHeartbeatProto}}, I found I need to add a 
{{OBSERVER}} state in {{NNHAStatusHeartbeatProto}}.
{quote}We should be able to remove the TODO on NameNode L1866?
{quote}
Done.
{quote}I think this section of FailoverController#preFailoverChecks() may need 
some work: ... It seems the first if-condition is assuming there are only two 
possible states, so if the state is not STANDBY, it must be ACTIVE. I think we 
should update this to explicitly check for ACTIVE. Next, is the service is in 
OBSERVER state, isReadyToBecomeActive() will be false. In this case, 
FailoverController#preFailoverChecks() will still allow this operation if 
forceActive is true. I don't think we want to allow forceActive to attempt to 
failover an observer, right?
{quote}
Hmm... For the first if-condition, exception will be thrown if the target 
service is **not** STANDBY. This should be good for OBSERVER case, right (we 
don't want failover target to be OBSERVER)? if this is the case, then the 
following checks only apply to STANDBY, so nothing need to change.
{quote}For all three usages of FSNameystem#isInStandbyState(), it actually 
seems to me that they should apply if it is in observer or standby state, can 
you double check and if so update accordingly?
{quote}
Yes you are right. Will change that to include OBSERVER too.

Thanks again! It seems I missed a lot of places where 
{{HAServiceState.STANDBY}} are used... :-/ 
Will double check that and submit another patch.

> Add haadmin commands to transition between standby and observer
> ---------------------------------------------------------------
>
>                 Key: HDFS-13286
>                 URL: https://issues.apache.org/jira/browse/HDFS-13286
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>            Reporter: Chao Sun
>            Assignee: Chao Sun
>            Priority: Major
>         Attachments: HDFS-13286-HDFS-12943.000.patch, 
> HDFS-13286-HDFS-12943.001.patch, HDFS-13286-HDFS-12943.002.patch, 
> HDFS-13286-HDFS-12943.003.patch, HDFS-13286-HDFS-12943.004.patch
>
>
> As discussed in HDFS-12975, we should allow explicit transition between 
> standby and observer through haadmin command, such as:
> {code}
> haadmin -transitionToObserver
> {code}
> Initially we should support transition from observer to standby, and standby 
> to observer.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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

Reply via email to