Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-14252

RegionServers fail to start when setting hbase.ipc.server.callqueue.scan.ratio to 0

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.3.0, 2.0.0
    • Component/s: regionserver
    • Labels:
      None
    • Environment:

      hbase-0.98.6-cdh5.3.1

    • Hadoop Flags:
      Reviewed

      Description

      I set the following configuration in hbase-site.xml.

      <property>
        <name>hbase.ipc.server.callqueue.read.ratio</name>
        <value>0.5</value>
      </property>
      <property>
        <name>hbase.ipc.server.callqueue.scan.ratio</name>
        <value>0</value>
      <property>
      

      Then, the RegionServer failed to start and I saw the following log:

      2015-08-19 14:30:19,561 ERROR org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine: Region server exiting
      java.lang.RuntimeException: Failed construction of Regionserver: class org.apache.hadoop.hbase.regionserver.HRegionServer
              at org.apache.hadoop.hbase.regionserver.HRegionServer.constructRegionServer(HRegionServer.java:2457)
              at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.start(HRegionServerCommandLine.java:61)
              at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.run(HRegionServerCommandLine.java:85)
              at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
              at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:126)
              at org.apache.hadoop.hbase.regionserver.HRegionServer.main(HRegionServer.java:2472)
      Caused by: java.lang.reflect.InvocationTargetException
              at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
              at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
              at org.apache.hadoop.hbase.regionserver.HRegionServer.constructRegionServer(HRegionServer.java:2455)
              ... 5 more
      Caused by: java.lang.IllegalArgumentException: Queue size is <= 0, must be at least 1
              at com.google.common.base.Preconditions.checkArgument(Preconditions.java:92)
              at org.apache.hadoop.hbase.ipc.RpcExecutor.getBalancer(RpcExecutor.java:139)
              at org.apache.hadoop.hbase.ipc.RWQueueRpcExecutor.<init>(RWQueueRpcExecutor.java:121)
              at org.apache.hadoop.hbase.ipc.RWQueueRpcExecutor.<init>(RWQueueRpcExecutor.java:83)
              at org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.<init>(SimpleRpcScheduler.java:129)
              at org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory.create(SimpleRpcSchedulerFactory.java:36)
              at org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:610)
              ... 10 more
      

      The doc of "hbase.ipc.server.callqueue.scan.ratio" says "A value of 0 or 1 indicate to use the same set of queues for gets and scans.".
      I think that there is a bug in validation.

        Attachments

        1. 14252.v3.patch
          2 kB
          Ted Yu
        2. 14252.v2.patch
          2 kB
          Ted Yu

          Activity

            People

            • Assignee:
              liuyb Yubao Liu
              Reporter:
              brfrn169 Toshihiro Suzuki
            • Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: