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

Pankaj Kumar updated HBASE-14000:
---------------------------------
    Attachment: HM_RS-Log_snippet.txt

In HBase HA cluster 2 HMasters and 3 RegionServers are deployed in 
Machine-1(vm-M1), Machine-2(vm-M2) and Machine-3(vm-M3).
{noformat}
Machine-1/(vm-M1) -> HM1, RS1
Machine-2/(vm-M2) -> HM2, RS2
Machine-3/(vm-M3) -> RS3

HM1 -> Active Master 
HM2 -> Standby Master
{noformat}

There was a power breakdown, all machines went down. When they came up, cluster 
(any process can come up in any sequence) will start automatically by the 
operation management system.

In our scenario all regionservers were started before master. when they come up 
and tried to contact HM1, but "error telling master we are up (Connection 
refused)" was reported 1-2 times. Only in this case we are resetting rssStub.

{noformat}
RS1:
        2015-06-26 10:04:08,683 | WARN  | regionserver/vm-M1/Machine-1-IP:21302 
| error telling master we are up | 
org.apache.hadoop.hbase.regionserver.HRegionServer.reportForDuty(HRegionServer.java:2277)
        com.google.protobuf.ServiceException: java.net.ConnectException: 
Connection refused
                at 
org.apache.hadoop.hbase.ipc.AbstractRpcClient.callBlockingMethod(AbstractRpcClient.java:223)
{noformat}

Same exception was thrown 1-2 times, later on it was stuck in loop

{noformat}
RS1:
        2015-06-26 10:04:08,688 | WARN  | regionserver/vm-M1/Machine-1-IP:21302 
| reportForDuty failed; sleeping and then retrying. 
        2015-06-26 10:04:11,689 | INFO  | regionserver/vm-M1/Machine-1-IP:21302 
| reportForDuty to master=vm-M1,21300,1435049929004
        2015-06-26 10:04:13,202 | WARN  | regionserver/vm-M1/Machine-1-IP:21302 
| reportForDuty failed; sleeping and then retrying. 
        2015-06-26 10:04:16,203 | INFO  | regionserver/vm-M1/Machine-1-IP:21302 
| reportForDuty to master=vm-M2,21300,1435284238757
        2015-06-26 10:04:16,208 | WARN  | regionserver/vm-M1/Machine-1-IP:21302 
| reportForDuty failed; sleeping and then retrying. 
        2015-06-26 10:04:19,208 | INFO  | regionserver/vm-M1/Machine-1-IP:21302 
| reportForDuty to master=vm-M2,21300,1435284238757
{noformat}

{noformat}
RS2:
        2015-06-26 10:04:08,140 | WARN  | regionserver/vm-M2/Machine-2-IP:21302 
| reportForDuty failed; sleeping and then retrying. 
        2015-06-26 10:04:11,140 | INFO  | regionserver/vm-M2/Machine-2-IP:21302 
| reportForDuty to master=vm-M1,21300,1435049929004
        2015-06-26 10:04:12,964 | WARN  | regionserver/vm-M2/Machine-2-IP:21302 
| reportForDuty failed; sleeping and then retrying. 
        2015-06-26 10:04:15,964 | INFO  | regionserver/vm-M2/Machine-2-IP:21302 
| reportForDuty to master=vm-M2,21300,1435284238757
        2015-06-26 10:04:15,969 | WARN  | regionserver/vm-M2/Machine-2-IP:21302 
| reportForDuty failed; sleeping and then retrying. 
        2015-06-26 10:04:18,970 | INFO  | regionserver/vm-M2/Machine-2-IP:21302 
| reportForDuty to master=vm-M2,21300,1435284238757
{noformat}

You can see, initially regionserver tried to connect to vm-M1 and even though 
after "error telling master we are up"

During this time HM2 became active,
{noformat}
        2015-06-26 10:04:14,735 | INFO  | vm-M2:21300.activeMasterManager | 
Deleting ZNode for /hbase/backup-masters/vm-M2,21300
        2015-06-26 10:04:14,749 | INFO  | vm-M2:21300.activeMasterManager | 
Registered Active Master=vm-M2,21300,1435284238757 |
{noformat}

And when HM1 finish initialization it became standby master,
{noformat}
        2015-06-26 10:04:14,963 | INFO  | vm-M1:21300.activeMasterManager | 
Current master has this master's address, vm-M1,21300,1435049929004; master was 
restarted? Deleting node.
        2015-06-26 10:04:14,973 | INFO  | vm-M1:21300.activeMasterManager | 
Another master is the active master, vm-M2,21300,1435284238757; waiting to 
become the next active master 
{noformat}


1) Since rssStub was not reset, regionservers were actually trying to report 
HM1(standby master) and same time HM2(active master) was waiting for region 
servers count to settle.

2) Log message is also not proper as it says , "its trying to connect to HM2" 
becuase everytime it will retrieve the active master address from ZK and its 
using only for log purpose and not reseting the restub. 

> Region server failed to report Master and stuck in reportForDuty retry loop
> ---------------------------------------------------------------------------
>
>                 Key: HBASE-14000
>                 URL: https://issues.apache.org/jira/browse/HBASE-14000
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Pankaj Kumar
>            Assignee: Pankaj Kumar
>         Attachments: HBASE-14000.patch, HM_RS-Log_snippet.txt
>
>
> In a HA cluster, region server got stuck in reportForDuty retry loop if the 
> active master is restarting and later on master switch happens before it 
> reports successfully.
> Root cause is same as HBASE-13317, but the region server tried to connect 
> master when it was starting, so rssStub reset didnt happen as
> {code}
>   if (ioe instanceof ServerNotRunningYetException) {
>       LOG.debug("Master is not running yet");
>   }
> {code}
> When master starts, master switch happened. So RS always tried to connect to 
> standby master.



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

Reply via email to