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

java.lang.NullPointerException when a table is being disabled and HMaster restarts

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 0.92.0
    • None
    • None
    • Reviewed

    Description

      This bug occurs in following scenario.

      1. For some reason, the regionLocation isn't set in .META. table for some regions. Perhaps createTable didn't complete successfully.
      1. The table of those regions is being disabled.
      2. HMaster restarted.
      3. At HMaster startup, it tries to transition from disabling to disabled state. It got the following exception.

      java.lang.NullPointerException: Passed server is null
      at
      org.apache.hadoop.hbase.master.ServerManager.sendRegionClose(ServerManager.
      java:581)
      at
      org.apache.hadoop.hbase.master.AssignmentManager.unassign(AssignmentManager
      .java:1093)
      at
      org.apache.hadoop.hbase.master.AssignmentManager.unassign(AssignmentManager
      .java:1040)
      at
      org.apache.hadoop.hbase.master.handler.DisableTableHandler$BulkDisabler$1.r
      un(DisableTableHandler.java:132)
      at
      java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.j
      ava:886)

      In AssignmentManager.rebuildUserRegions, it added such regions to its regions list,

      if (regionLocation == null) {
      // Region not being served, add to region map with no assignment
      // If this needs to be assigned out, it will also be in ZK as RIT
      // add if the table is not in disabled and enabling state
      if (false == checkIfRegionBelongsToDisabled(regionInfo)
      && false == checkIfRegionsBelongsToEnabling(regionInfo))

      { regions.put(regionInfo, regionLocation); }

      Perhaps, it should be

      if (regionLocation == null) {
      // Region not being served, add to region map with no assignment
      // If this needs to be assigned out, it will also be in ZK as RIT
      // add if the table is not in disabled and enabling state
      if (true == checkIfRegionBelongsToEnabled(regionInfo) { regions.put(regionInfo, regionLocation); }

      Attachments

        Activity

          People

            mingma Ming Ma
            mingma Ming Ma
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: