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

ryan rawson commented on HBASE-3141:
------------------------------------

In the constructor of HMaster we do this call:


    this.rpcServer = HBaseRPC.getServer(this,
      new Class<?>[]{HMasterInterface.class, HMasterRegionInterface.class},
      a.getBindAddress(), a.getPort(),
      numHandlers,
      0, // we dont use high priority handlers in master
      false, conf,
      0); // this is a DNC w/o high priority handlers

The bind to the service ports happens in here.

In the run() thread we 'stall' until we become the primary master, at which 
point we call finishInitialization() which then starts the rest of the service 
threads, such as the listener, etc. 

I think the solution here is to start the service threads ASAP, then have a 
flag which causes the Handler threads to throw instead of service the calls. 
Then another call that happens later when the master is ready to start getting 
calls. I'll post a patch with that in it.

> Master RPC server needs to be started before an RS can check in
> ---------------------------------------------------------------
>
>                 Key: HBASE-3141
>                 URL: https://issues.apache.org/jira/browse/HBASE-3141
>             Project: HBase
>          Issue Type: Bug
>          Components: master
>            Reporter: Jonathan Gray
>            Assignee: ryan rawson
>            Priority: Critical
>             Fix For: 0.90.0
>
>         Attachments: HBASE-3141-v1.patch
>
>
> Starting up an RPC server is done in two steps.  In the constructor, we 
> instantiate the RPC server.  Then in startServiceThreads() we start() it.
> If someone RPCs in between the instantiation and the start(), it seems that 
> bad things can happen.  We need to make sure this can't happen and there 
> aren't any races here.

-- 
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