You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "stack (JIRA)" <ji...@apache.org> on 2012/09/05 01:51:07 UTC

[jira] [Resolved] (HBASE-3918) When assigning regions to an address, check the regionserver is actually online first

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

stack resolved HBASE-3918.
--------------------------

    Resolution: Not A Problem

Resolving as 'not a problem'.  When I look at bulk assigning code that tries to retain assignments, I see that for each region we are to assign, we check that the ServerName is known -- that it is a server that has registered itself on cluster start:

{code}
    int numRandomAssignments = 0;
    int numRetainedAssigments = 0;
    for (Map.Entry<HRegionInfo, ServerName> entry : regions.entrySet()) {
      HRegionInfo region = entry.getKey();
      ServerName oldServerName = entry.getValue();
      List<ServerName> localServers = new ArrayList<ServerName>();
      if (oldServerName != null) {
        localServers = serversByHostname.get(oldServerName.getHostname());
      }
      if (localServers.isEmpty()) {
        // No servers on the new cluster match up with this hostname,
        // assign randomly.
        ServerName randomServer = servers.get(RANDOM.nextInt(servers.size()));
...
{code}

We can open new issue if we run into this again.
                
> When assigning regions to an address, check the regionserver is actually online first
> -------------------------------------------------------------------------------------
>
>                 Key: HBASE-3918
>                 URL: https://issues.apache.org/jira/browse/HBASE-3918
>             Project: HBase
>          Issue Type: Bug
>            Reporter: stack
>
> This one came up in the case where the data was copied from one cluster to another.  The first cluster was running 0.89.x.  The second 0.90.x.  On startup of 0.90.x, it wanted to verify .META. was in the location -ROOT- said it was at, so it tried connect to the FIRST cluster.  The attempt failed because of mismatched RPCs.  The master then actually aborted.
> {code}
> org.apache.hadoop.hbase.ipc.HBaseRPC$VersionMismatch: Protocol org.apache.hadoop.hbase.ipc.HRegionInterface version mismatch. (client = 27, server = 24)
> at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:424)
> at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:393)
> at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:444)
> at org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:349)
> at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:965)
> at org.apache.hadoop.hbase.catalog.CatalogTracker.getCachedConnection(CatalogTracker.java:386)
> at org.apache.hadoop.hbase.catalog.CatalogTracker.getMetaServerConnection(CatalogTracker.java:285)
> at org.apache.hadoop.hbase.catalog.CatalogTracker.verifyMetaRegionLocation(CatalogTracker.java:486)
> at org.apache.hadoop.hbase.master.HMaster.assignRootAndMeta(HMaster.java:442)
> at org.apache.hadoop.hbase.master.HMaster.finishInitialization(HMaster.java:389)
> at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:283)
> 2011-05-23 22:38:07,720 INFO org.apache.hadoop.hbase.master.HMaster: Aborting
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira