[ 
https://issues.apache.org/jira/browse/HBASE-3010?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12910509#action_12910509
 ] 

HBase Review Board commented on HBASE-3010:
-------------------------------------------

Message from: [email protected]

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://review.cloudera.org/r/873/
-----------------------------------------------------------

Review request for hbase.


Summary
-------

Patch changes catalogtracker to not connect to root on start.  Instead, wait on 
kick from zk before going after root or meta.  This change doesn't address the 
case where a RS can get stuck on itself trying to connect to an RPC that is not 
yet running.  Rather it sidesteps (We should come back and do something about 
non-timeout when setting up proxy since its possible. I'll file an issue on 
it).  Patch includes other fixups, not all cosmetic.

M src/test/java/org/apache/hadoop/hbase/master/TestActiveMasterManager.java
  Add a test for case where master comes up and up in zk the
  master znode contains our address
D src/test/java/org/apache/hadoop/hbase/master/TestMinimumServerCount.java
  Removed test of something we no longer do; wait on an explicit number
  of regions to come in before we'll go ahead w/ master startup.
M src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
  Swapped order in which we do some of the startup (Cosmetic)
M src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java
  Javadoc
M src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
  Removed minimumServerCount.  Seems bad predicating master startup
  on N RS's coming in.
  Renamed method numServers as countOfRegionServers and made it protected.
  Removed other unused methods.
  Redid waitForMinServers as waitForRegionServers... where we just
  hang around until count of regionservers stabilizes.  TODO: improve
M src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java
  Handle case where the current master znode has our address; in this
  case we can hurry up the expiration by deleting the znode.
M src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
  Minor formatting
M src/main/java/org/apache/hadoop/hbase/master/HMaster.java
  Renamed clusterStarter as freshClusterStartup.  Predicate this boolean
  off the count of regionservers.  If 0, then fresh cluster start.  Else
  do special handling (TODO).
  Edit on HMaster constructor comments.
  Moved some code out of Master constructor into stackIfBackupMaster method
  If aborting set stop flag.
M src/main/java/org/apache/hadoop/hbase/master/HMasterCommandLine.java
  Removed unused imports.
M src/main/java/org/apache/hadoop/hbase/catalog/CatalogTracker.java
  Make catalogtracker lazy about getting metalocation....don't do it
  on start.


This addresses bug hbase-3010.
    http://issues.apache.org/jira/browse/hbase-3010


Diffs
-----

  src/main/java/org/apache/hadoop/hbase/catalog/CatalogTracker.java 2bcd5d0 
  src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java 87fe9cd 
  src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java 690f78c 
  src/main/java/org/apache/hadoop/hbase/master/HMaster.java c1b80eb 
  src/main/java/org/apache/hadoop/hbase/master/HMasterCommandLine.java c675db9 
  src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java 498650f 
  src/main/java/org/apache/hadoop/hbase/master/ServerManager.java 528bb9d 
  src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java 1ec7f4e 
  src/test/java/org/apache/hadoop/hbase/master/TestActiveMasterManager.java 
030bc12 
  src/test/java/org/apache/hadoop/hbase/master/TestMinimumServerCount.java 
d6f2c02 

Diff: http://review.cloudera.org/r/873/diff


Testing
-------

Can now start/stop cluster repeatedly.


Thanks,

stack




> Can't start/stop/start... cluster using new master
> --------------------------------------------------
>
>                 Key: HBASE-3010
>                 URL: https://issues.apache.org/jira/browse/HBASE-3010
>             Project: HBase
>          Issue Type: Bug
>          Components: master
>            Reporter: stack
>            Priority: Blocker
>             Fix For: 0.90.0
>
>
> Currently you might start a small cluster the first time on TRUNK -- i.e. new 
> master -- but second time you do the startup you run into a couple of 
> interesting issues:
> + The old root-region-location is still in place. It gets cleaned later but 
> for a while on startup it does not have the 'right' address.
> + Regionserver (or a client) on startup creates a catalogtracker, a class 
> that notices changes in meta tables keeping up catalog table locations.  
> Starting the catalogtracker results in a check for current catalog locations. 
>  As part of this process, since root-region-location "exists", catalogtracker 
> tries to verify root's location by doing a noop against root host, only, to 
> do this it needs to do the initial rpc proxy setup.  It can so happen that 
> the old root address was that of the current regionserver trying to 
> initialize so we'll be trying to connect to ourself to verify root location 
> ONLY, we're doing this before we've setup the rpcserver and handlers -- so we 
> block, and as it happens there is no timeout on proxy setup (Todd ran into 
> this yesterday, I ran into it today -- its easy to manufacture).
> + So regionserver can't progress.  Meantime the master can't progress because 
> there are no regionservers checking in.  And you can't shut it down because 
> we're not looking at the right 'stop' flag

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to