hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ryan rawson (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HBASE-3141) Master RPC server needs to be started before an RS can check in
Date Mon, 08 Nov 2010 23:22:06 GMT

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


Mime
View raw message