Java 类org.apache.hadoop.hbase.master.BulkReOpen 实例源码

项目:ditb    文件:TableEventHandler.java   
public boolean reOpenAllRegions(List<HRegionInfo> regions) throws IOException {
  boolean done = false;
  LOG.info("Bucketing regions by region server...");
  List<HRegionLocation> regionLocations = null;
  Connection connection = this.masterServices.getConnection();
  try (RegionLocator locator = connection.getRegionLocator(tableName)) {
    regionLocations = locator.getAllRegionLocations();
  }
  // Convert List<HRegionLocation> to Map<HRegionInfo, ServerName>.
  NavigableMap<HRegionInfo, ServerName> hri2Sn = new TreeMap<HRegionInfo, ServerName>();
  for (HRegionLocation location: regionLocations) {
    hri2Sn.put(location.getRegionInfo(), location.getServerName());
  }
  TreeMap<ServerName, List<HRegionInfo>> serverToRegions = Maps.newTreeMap();
  List<HRegionInfo> reRegions = new ArrayList<HRegionInfo>();
  for (HRegionInfo hri : regions) {
    ServerName sn = hri2Sn.get(hri);
    // Skip the offlined split parent region
    // See HBASE-4578 for more information.
    if (null == sn) {
      LOG.info("Skip " + hri);
      continue;
    }
    if (!serverToRegions.containsKey(sn)) {
      LinkedList<HRegionInfo> hriList = Lists.newLinkedList();
      serverToRegions.put(sn, hriList);
    }
    reRegions.add(hri);
    serverToRegions.get(sn).add(hri);
  }

  LOG.info("Reopening " + reRegions.size() + " regions on "
      + serverToRegions.size() + " region servers.");
  this.masterServices.getAssignmentManager().setRegionsToReopen(reRegions);
  BulkReOpen bulkReopen = new BulkReOpen(this.server, serverToRegions,
      this.masterServices.getAssignmentManager());
  while (true) {
    try {
      if (bulkReopen.bulkReOpen()) {
        done = true;
        break;
      } else {
        LOG.warn("Timeout before reopening all regions");
      }
    } catch (InterruptedException e) {
      LOG.warn("Reopen was interrupted");
      // Preserve the interrupt.
      Thread.currentThread().interrupt();
      break;
    }
  }
  return done;
}
项目:ditb    文件:MasterDDLOperationHelper.java   
/**
 * Reopen all regions from a table after a schema change operation.
 **/
public static boolean reOpenAllRegions(
    final MasterProcedureEnv env,
    final TableName tableName,
    final List<HRegionInfo> regionInfoList) throws IOException {
  boolean done = false;
  LOG.info("Bucketing regions by region server...");
  List<HRegionLocation> regionLocations = null;
  Connection connection = env.getMasterServices().getConnection();
  try (RegionLocator locator = connection.getRegionLocator(tableName)) {
    regionLocations = locator.getAllRegionLocations();
  }
  // Convert List<HRegionLocation> to Map<HRegionInfo, ServerName>.
  NavigableMap<HRegionInfo, ServerName> hri2Sn = new TreeMap<HRegionInfo, ServerName>();
  for (HRegionLocation location : regionLocations) {
    hri2Sn.put(location.getRegionInfo(), location.getServerName());
  }
  TreeMap<ServerName, List<HRegionInfo>> serverToRegions = Maps.newTreeMap();
  List<HRegionInfo> reRegions = new ArrayList<HRegionInfo>();
  for (HRegionInfo hri : regionInfoList) {
    ServerName sn = hri2Sn.get(hri);
    // Skip the offlined split parent region
    // See HBASE-4578 for more information.
    if (null == sn) {
      LOG.info("Skip " + hri);
      continue;
    }
    if (!serverToRegions.containsKey(sn)) {
      LinkedList<HRegionInfo> hriList = Lists.newLinkedList();
      serverToRegions.put(sn, hriList);
    }
    reRegions.add(hri);
    serverToRegions.get(sn).add(hri);
  }

  LOG.info("Reopening " + reRegions.size() + " regions on " + serverToRegions.size()
      + " region servers.");
  AssignmentManager am = env.getMasterServices().getAssignmentManager();
  am.setRegionsToReopen(reRegions);
  BulkReOpen bulkReopen = new BulkReOpen(env.getMasterServices(), serverToRegions, am);
  while (true) {
    try {
      if (bulkReopen.bulkReOpen()) {
        done = true;
        break;
      } else {
        LOG.warn("Timeout before reopening all regions");
      }
    } catch (InterruptedException e) {
      LOG.warn("Reopen was interrupted");
      // Preserve the interrupt.
      Thread.currentThread().interrupt();
      break;
    }
  }
  return done;
}
项目:LCIndex-HBase-0.94.16    文件:TableEventHandler.java   
public boolean reOpenAllRegions(List<HRegionInfo> regions) throws IOException {
  boolean done = false;
  HTable table = null;
  TreeMap<ServerName, List<HRegionInfo>> serverToRegions = Maps.newTreeMap();
  NavigableMap<HRegionInfo, ServerName> hriHserverMapping;

  LOG.info("Bucketing regions by region server...");

  try {
    table = new HTable(masterServices.getConfiguration(), tableName);
    hriHserverMapping = table.getRegionLocations();
  } finally {
    if (table != null) {
      table.close();
    }
  }
  List<HRegionInfo> reRegions = new ArrayList<HRegionInfo>();
  for (HRegionInfo hri : regions) {
    ServerName rsLocation = hriHserverMapping.get(hri);

    // Skip the offlined split parent region
    // See HBASE-4578 for more information.
    if (null == rsLocation) {
      LOG.info("Skip " + hri);
      continue;
    }
    if (!serverToRegions.containsKey(rsLocation)) {
      LinkedList<HRegionInfo> hriList = Lists.newLinkedList();
      serverToRegions.put(rsLocation, hriList);
    }
    reRegions.add(hri);
    serverToRegions.get(rsLocation).add(hri);
  }

  LOG.info("Reopening " + reRegions.size() + " regions on "
      + serverToRegions.size() + " region servers.");
  this.masterServices.getAssignmentManager().setRegionsToReopen(reRegions);
  notifyEventBeingHandled();
  BulkReOpen bulkReopen = new BulkReOpen(this.server, serverToRegions,
      this.masterServices.getAssignmentManager());
  while (true) {
    try {
      if (bulkReopen.bulkReOpen()) {
        done = true;
        break;
      } else {
        LOG.warn("Timeout before reopening all regions");
      }
    } catch (InterruptedException e) {
      LOG.warn("Reopen was interrupted");
      // Preserve the interrupt.
      Thread.currentThread().interrupt();
      break;
    }
  }
  return done;
}
项目:pbase    文件:TableEventHandler.java   
public boolean reOpenAllRegions(List<HRegionInfo> regions) throws IOException {
  boolean done = false;
  LOG.info("Bucketing regions by region server...");
  List<HRegionLocation> regionLocations = null;
  Connection connection = this.masterServices.getConnection();
  try (RegionLocator locator = connection.getRegionLocator(tableName)) {
    regionLocations = locator.getAllRegionLocations();
  }
  // Convert List<HRegionLocation> to Map<HRegionInfo, ServerName>.
  NavigableMap<HRegionInfo, ServerName> hri2Sn = new TreeMap<HRegionInfo, ServerName>();
  for (HRegionLocation location: regionLocations) {
    hri2Sn.put(location.getRegionInfo(), location.getServerName());
  }
  TreeMap<ServerName, List<HRegionInfo>> serverToRegions = Maps.newTreeMap();
  List<HRegionInfo> reRegions = new ArrayList<HRegionInfo>();
  for (HRegionInfo hri : regions) {
    ServerName sn = hri2Sn.get(hri);
    // Skip the offlined split parent region
    // See HBASE-4578 for more information.
    if (null == sn) {
      LOG.info("Skip " + hri);
      continue;
    }
    if (!serverToRegions.containsKey(sn)) {
      LinkedList<HRegionInfo> hriList = Lists.newLinkedList();
      serverToRegions.put(sn, hriList);
    }
    reRegions.add(hri);
    serverToRegions.get(sn).add(hri);
  }

  LOG.info("Reopening " + reRegions.size() + " regions on "
      + serverToRegions.size() + " region servers.");
  this.masterServices.getAssignmentManager().setRegionsToReopen(reRegions);
  BulkReOpen bulkReopen = new BulkReOpen(this.server, serverToRegions,
      this.masterServices.getAssignmentManager());
  while (true) {
    try {
      if (bulkReopen.bulkReOpen()) {
        done = true;
        break;
      } else {
        LOG.warn("Timeout before reopening all regions");
      }
    } catch (InterruptedException e) {
      LOG.warn("Reopen was interrupted");
      // Preserve the interrupt.
      Thread.currentThread().interrupt();
      break;
    }
  }
  return done;
}
项目:HIndex    文件:TableEventHandler.java   
public boolean reOpenAllRegions(List<HRegionInfo> regions) throws IOException {
  boolean done = false;
  LOG.info("Bucketing regions by region server...");
  HTable table = new HTable(masterServices.getConfiguration(), tableName);
  TreeMap<ServerName, List<HRegionInfo>> serverToRegions = Maps
      .newTreeMap();
  NavigableMap<HRegionInfo, ServerName> hriHserverMapping;
  try {
    hriHserverMapping = table.getRegionLocations();
  } finally {
    table.close();
  }

  List<HRegionInfo> reRegions = new ArrayList<HRegionInfo>();
  for (HRegionInfo hri : regions) {
    ServerName rsLocation = hriHserverMapping.get(hri);

    // Skip the offlined split parent region
    // See HBASE-4578 for more information.
    if (null == rsLocation) {
      LOG.info("Skip " + hri);
      continue;
    }
    if (!serverToRegions.containsKey(rsLocation)) {
      LinkedList<HRegionInfo> hriList = Lists.newLinkedList();
      serverToRegions.put(rsLocation, hriList);
    }
    reRegions.add(hri);
    serverToRegions.get(rsLocation).add(hri);
  }

  LOG.info("Reopening " + reRegions.size() + " regions on "
      + serverToRegions.size() + " region servers.");
  this.masterServices.getAssignmentManager().setRegionsToReopen(reRegions);
  BulkReOpen bulkReopen = new BulkReOpen(this.server, serverToRegions,
      this.masterServices.getAssignmentManager());
  while (true) {
    try {
      if (bulkReopen.bulkReOpen()) {
        done = true;
        break;
      } else {
        LOG.warn("Timeout before reopening all regions");
      }
    } catch (InterruptedException e) {
      LOG.warn("Reopen was interrupted");
      // Preserve the interrupt.
      Thread.currentThread().interrupt();
      break;
    }
  }
  return done;
}
项目:IRIndex    文件:TableEventHandler.java   
public boolean reOpenAllRegions(List<HRegionInfo> regions) throws IOException {
  boolean done = false;
  HTable table = null;
  TreeMap<ServerName, List<HRegionInfo>> serverToRegions = Maps.newTreeMap();
  NavigableMap<HRegionInfo, ServerName> hriHserverMapping;

  LOG.info("Bucketing regions by region server...");

  try {
    table = new HTable(masterServices.getConfiguration(), tableName);
    hriHserverMapping = table.getRegionLocations();
  } finally {
    if (table != null) {
      table.close();
    }
  }
  List<HRegionInfo> reRegions = new ArrayList<HRegionInfo>();
  for (HRegionInfo hri : regions) {
    ServerName rsLocation = hriHserverMapping.get(hri);

    // Skip the offlined split parent region
    // See HBASE-4578 for more information.
    if (null == rsLocation) {
      LOG.info("Skip " + hri);
      continue;
    }
    if (!serverToRegions.containsKey(rsLocation)) {
      LinkedList<HRegionInfo> hriList = Lists.newLinkedList();
      serverToRegions.put(rsLocation, hriList);
    }
    reRegions.add(hri);
    serverToRegions.get(rsLocation).add(hri);
  }

  LOG.info("Reopening " + reRegions.size() + " regions on "
      + serverToRegions.size() + " region servers.");
  this.masterServices.getAssignmentManager().setRegionsToReopen(reRegions);
  notifyEventBeingHandled();
  BulkReOpen bulkReopen = new BulkReOpen(this.server, serverToRegions,
      this.masterServices.getAssignmentManager());
  while (true) {
    try {
      if (bulkReopen.bulkReOpen()) {
        done = true;
        break;
      } else {
        LOG.warn("Timeout before reopening all regions");
      }
    } catch (InterruptedException e) {
      LOG.warn("Reopen was interrupted");
      // Preserve the interrupt.
      Thread.currentThread().interrupt();
      break;
    }
  }
  return done;
}
项目:RStore    文件:TableEventHandler.java   
public boolean reOpenAllRegions(List<HRegionInfo> regions) throws IOException {
  boolean done = false;
  LOG.info("Bucketing regions by region server...");
  HTable table = new HTable(masterServices.getConfiguration(), tableName);
  TreeMap<ServerName, List<HRegionInfo>> serverToRegions = Maps
      .newTreeMap();
  NavigableMap<HRegionInfo, ServerName> hriHserverMapping = table.getRegionLocations();
  List<HRegionInfo> reRegions = new ArrayList<HRegionInfo>();
  for (HRegionInfo hri : regions) {
    ServerName rsLocation = hriHserverMapping.get(hri);

    // Skip the offlined split parent region
    // See HBASE-4578 for more information.
    if (null == rsLocation) {
      LOG.info("Skip " + hri);
      continue;
    }
    if (!serverToRegions.containsKey(rsLocation)) {
      LinkedList<HRegionInfo> hriList = Lists.newLinkedList();
      serverToRegions.put(rsLocation, hriList);
    }
    reRegions.add(hri);
    serverToRegions.get(rsLocation).add(hri);
  }

  LOG.info("Reopening " + reRegions.size() + " regions on "
      + serverToRegions.size() + " region servers.");
  this.masterServices.getAssignmentManager().setRegionsToReopen(reRegions);
  BulkReOpen bulkReopen = new BulkReOpen(this.server, serverToRegions,
      this.masterServices.getAssignmentManager());
  while (true) {
    try {
      if (bulkReopen.bulkReOpen()) {
        done = true;
        break;
      } else {
        LOG.warn("Timeout before reopening all regions");
      }
    } catch (InterruptedException e) {
      LOG.warn("Reopen was interrupted");
      // Preserve the interrupt.
      Thread.currentThread().interrupt();
      break;
    }
  }
  return done;
}
项目:PyroDB    文件:TableEventHandler.java   
public boolean reOpenAllRegions(List<HRegionInfo> regions) throws IOException {
  boolean done = false;
  LOG.info("Bucketing regions by region server...");
  HTable table = new HTable(masterServices.getConfiguration(), tableName);
  TreeMap<ServerName, List<HRegionInfo>> serverToRegions = Maps
      .newTreeMap();
  NavigableMap<HRegionInfo, ServerName> hriHserverMapping;
  try {
    hriHserverMapping = table.getRegionLocations();
  } finally {
    table.close();
  }

  List<HRegionInfo> reRegions = new ArrayList<HRegionInfo>();
  for (HRegionInfo hri : regions) {
    ServerName rsLocation = hriHserverMapping.get(hri);

    // Skip the offlined split parent region
    // See HBASE-4578 for more information.
    if (null == rsLocation) {
      LOG.info("Skip " + hri);
      continue;
    }
    if (!serverToRegions.containsKey(rsLocation)) {
      LinkedList<HRegionInfo> hriList = Lists.newLinkedList();
      serverToRegions.put(rsLocation, hriList);
    }
    reRegions.add(hri);
    serverToRegions.get(rsLocation).add(hri);
  }

  LOG.info("Reopening " + reRegions.size() + " regions on "
      + serverToRegions.size() + " region servers.");
  this.masterServices.getAssignmentManager().setRegionsToReopen(reRegions);
  BulkReOpen bulkReopen = new BulkReOpen(this.server, serverToRegions,
      this.masterServices.getAssignmentManager());
  while (true) {
    try {
      if (bulkReopen.bulkReOpen()) {
        done = true;
        break;
      } else {
        LOG.warn("Timeout before reopening all regions");
      }
    } catch (InterruptedException e) {
      LOG.warn("Reopen was interrupted");
      // Preserve the interrupt.
      Thread.currentThread().interrupt();
      break;
    }
  }
  return done;
}
项目:c5    文件:TableEventHandler.java   
public boolean reOpenAllRegions(List<HRegionInfo> regions) throws IOException {
  boolean done = false;
  LOG.info("Bucketing regions by region server...");
  HTable table = new HTable(masterServices.getConfiguration(), tableName);
  TreeMap<ServerName, List<HRegionInfo>> serverToRegions = Maps
      .newTreeMap();
  NavigableMap<HRegionInfo, ServerName> hriHserverMapping = table.getRegionLocations();
  List<HRegionInfo> reRegions = new ArrayList<HRegionInfo>();
  for (HRegionInfo hri : regions) {
    ServerName rsLocation = hriHserverMapping.get(hri);

    // Skip the offlined split parent region
    // See HBASE-4578 for more information.
    if (null == rsLocation) {
      LOG.info("Skip " + hri);
      continue;
    }
    if (!serverToRegions.containsKey(rsLocation)) {
      LinkedList<HRegionInfo> hriList = Lists.newLinkedList();
      serverToRegions.put(rsLocation, hriList);
    }
    reRegions.add(hri);
    serverToRegions.get(rsLocation).add(hri);
  }

  LOG.info("Reopening " + reRegions.size() + " regions on "
      + serverToRegions.size() + " region servers.");
  this.masterServices.getAssignmentManager().setRegionsToReopen(reRegions);
  BulkReOpen bulkReopen = new BulkReOpen(this.server, serverToRegions,
      this.masterServices.getAssignmentManager());
  while (true) {
    try {
      if (bulkReopen.bulkReOpen()) {
        done = true;
        break;
      } else {
        LOG.warn("Timeout before reopening all regions");
      }
    } catch (InterruptedException e) {
      LOG.warn("Reopen was interrupted");
      // Preserve the interrupt.
      Thread.currentThread().interrupt();
      break;
    }
  }
  return done;
}
项目:HBase-Research    文件:TableEventHandler.java   
public boolean reOpenAllRegions(List<HRegionInfo> regions) throws IOException {
  boolean done = false;
  HTable table = null;
  TreeMap<ServerName, List<HRegionInfo>> serverToRegions = Maps.newTreeMap();
  NavigableMap<HRegionInfo, ServerName> hriHserverMapping;

  LOG.info("Bucketing regions by region server...");

  try {
    table = new HTable(masterServices.getConfiguration(), tableName);
    hriHserverMapping = table.getRegionLocations();
  } finally {
    if (table != null) {
      table.close();
    }
  }
  List<HRegionInfo> reRegions = new ArrayList<HRegionInfo>();
  for (HRegionInfo hri : regions) {
    ServerName rsLocation = hriHserverMapping.get(hri);

    // Skip the offlined split parent region
    // See HBASE-4578 for more information.
    if (null == rsLocation) {
      LOG.info("Skip " + hri);
      continue;
    }
    if (!serverToRegions.containsKey(rsLocation)) {
      LinkedList<HRegionInfo> hriList = Lists.newLinkedList();
      serverToRegions.put(rsLocation, hriList);
    }
    reRegions.add(hri);
    serverToRegions.get(rsLocation).add(hri);
  }

  LOG.info("Reopening " + reRegions.size() + " regions on "
      + serverToRegions.size() + " region servers.");
  this.masterServices.getAssignmentManager().setRegionsToReopen(reRegions);
  notifyEventBeingHandled();
  BulkReOpen bulkReopen = new BulkReOpen(this.server, serverToRegions,
      this.masterServices.getAssignmentManager());
  while (true) {
    try {
      if (bulkReopen.bulkReOpen()) {
        done = true;
        break;
      } else {
        LOG.warn("Timeout before reopening all regions");
      }
    } catch (InterruptedException e) {
      LOG.warn("Reopen was interrupted");
      // Preserve the interrupt.
      Thread.currentThread().interrupt();
      break;
    }
  }
  return done;
}
项目:hbase-0.94.8-qod    文件:TableEventHandler.java   
public boolean reOpenAllRegions(List<HRegionInfo> regions) throws IOException {
  boolean done = false;
  HTable table = null;
  TreeMap<ServerName, List<HRegionInfo>> serverToRegions = Maps.newTreeMap();
  NavigableMap<HRegionInfo, ServerName> hriHserverMapping;

  LOG.info("Bucketing regions by region server...");

  try {
    table = new HTable(masterServices.getConfiguration(), tableName);
    hriHserverMapping = table.getRegionLocations();
  } finally {
    if (table != null) {
      table.close();
    }
  }
  List<HRegionInfo> reRegions = new ArrayList<HRegionInfo>();
  for (HRegionInfo hri : regions) {
    ServerName rsLocation = hriHserverMapping.get(hri);

    // Skip the offlined split parent region
    // See HBASE-4578 for more information.
    if (null == rsLocation) {
      LOG.info("Skip " + hri);
      continue;
    }
    if (!serverToRegions.containsKey(rsLocation)) {
      LinkedList<HRegionInfo> hriList = Lists.newLinkedList();
      serverToRegions.put(rsLocation, hriList);
    }
    reRegions.add(hri);
    serverToRegions.get(rsLocation).add(hri);
  }

  LOG.info("Reopening " + reRegions.size() + " regions on "
      + serverToRegions.size() + " region servers.");
  this.masterServices.getAssignmentManager().setRegionsToReopen(reRegions);
  notifyEventBeingHandled();
  BulkReOpen bulkReopen = new BulkReOpen(this.server, serverToRegions,
      this.masterServices.getAssignmentManager());
  while (true) {
    try {
      if (bulkReopen.bulkReOpen()) {
        done = true;
        break;
      } else {
        LOG.warn("Timeout before reopening all regions");
      }
    } catch (InterruptedException e) {
      LOG.warn("Reopen was interrupted");
      // Preserve the interrupt.
      Thread.currentThread().interrupt();
      break;
    }
  }
  return done;
}
项目:hbase-0.94.8-qod    文件:TableEventHandler.java   
public boolean reOpenAllRegions(List<HRegionInfo> regions) throws IOException {
  boolean done = false;
  HTable table = null;
  TreeMap<ServerName, List<HRegionInfo>> serverToRegions = Maps.newTreeMap();
  NavigableMap<HRegionInfo, ServerName> hriHserverMapping;

  LOG.info("Bucketing regions by region server...");

  try {
    table = new HTable(masterServices.getConfiguration(), tableName);
    hriHserverMapping = table.getRegionLocations();
  } finally {
    if (table != null) {
      table.close();
    }
  }
  List<HRegionInfo> reRegions = new ArrayList<HRegionInfo>();
  for (HRegionInfo hri : regions) {
    ServerName rsLocation = hriHserverMapping.get(hri);

    // Skip the offlined split parent region
    // See HBASE-4578 for more information.
    if (null == rsLocation) {
      LOG.info("Skip " + hri);
      continue;
    }
    if (!serverToRegions.containsKey(rsLocation)) {
      LinkedList<HRegionInfo> hriList = Lists.newLinkedList();
      serverToRegions.put(rsLocation, hriList);
    }
    reRegions.add(hri);
    serverToRegions.get(rsLocation).add(hri);
  }

  LOG.info("Reopening " + reRegions.size() + " regions on "
      + serverToRegions.size() + " region servers.");
  this.masterServices.getAssignmentManager().setRegionsToReopen(reRegions);
  notifyEventBeingHandled();
  BulkReOpen bulkReopen = new BulkReOpen(this.server, serverToRegions,
      this.masterServices.getAssignmentManager());
  while (true) {
    try {
      if (bulkReopen.bulkReOpen()) {
        done = true;
        break;
      } else {
        LOG.warn("Timeout before reopening all regions");
      }
    } catch (InterruptedException e) {
      LOG.warn("Reopen was interrupted");
      // Preserve the interrupt.
      Thread.currentThread().interrupt();
      break;
    }
  }
  return done;
}
项目:DominoHBase    文件:TableEventHandler.java   
public boolean reOpenAllRegions(List<HRegionInfo> regions) throws IOException {
  boolean done = false;
  LOG.info("Bucketing regions by region server...");
  HTable table = new HTable(masterServices.getConfiguration(), tableName);
  TreeMap<ServerName, List<HRegionInfo>> serverToRegions = Maps
      .newTreeMap();
  NavigableMap<HRegionInfo, ServerName> hriHserverMapping = table.getRegionLocations();
  List<HRegionInfo> reRegions = new ArrayList<HRegionInfo>();
  for (HRegionInfo hri : regions) {
    ServerName rsLocation = hriHserverMapping.get(hri);

    // Skip the offlined split parent region
    // See HBASE-4578 for more information.
    if (null == rsLocation) {
      LOG.info("Skip " + hri);
      continue;
    }
    if (!serverToRegions.containsKey(rsLocation)) {
      LinkedList<HRegionInfo> hriList = Lists.newLinkedList();
      serverToRegions.put(rsLocation, hriList);
    }
    reRegions.add(hri);
    serverToRegions.get(rsLocation).add(hri);
  }

  LOG.info("Reopening " + reRegions.size() + " regions on "
      + serverToRegions.size() + " region servers.");
  this.masterServices.getAssignmentManager().setRegionsToReopen(reRegions);
  BulkReOpen bulkReopen = new BulkReOpen(this.server, serverToRegions,
      this.masterServices.getAssignmentManager());
  while (true) {
    try {
      if (bulkReopen.bulkReOpen()) {
        done = true;
        break;
      } else {
        LOG.warn("Timeout before reopening all regions");
      }
    } catch (InterruptedException e) {
      LOG.warn("Reopen was interrupted");
      // Preserve the interrupt.
      Thread.currentThread().interrupt();
      break;
    }
  }
  return done;
}
项目:hindex    文件:TableEventHandler.java   
public boolean reOpenAllRegions(List<HRegionInfo> regions) throws IOException {
  boolean done = false;
  HTable table = null;
  TreeMap<ServerName, List<HRegionInfo>> serverToRegions = Maps.newTreeMap();
  NavigableMap<HRegionInfo, ServerName> hriHserverMapping;

  LOG.info("Bucketing regions by region server...");

  try {
    table = new HTable(masterServices.getConfiguration(), tableName);
    hriHserverMapping = table.getRegionLocations();
  } finally {
    if (table != null) {
      table.close();
    }
  }
  List<HRegionInfo> reRegions = new ArrayList<HRegionInfo>();
  for (HRegionInfo hri : regions) {
    ServerName rsLocation = hriHserverMapping.get(hri);

    // Skip the offlined split parent region
    // See HBASE-4578 for more information.
    if (null == rsLocation) {
      LOG.info("Skip " + hri);
      continue;
    }
    if (!serverToRegions.containsKey(rsLocation)) {
      LinkedList<HRegionInfo> hriList = Lists.newLinkedList();
      serverToRegions.put(rsLocation, hriList);
    }
    reRegions.add(hri);
    serverToRegions.get(rsLocation).add(hri);
  }

  LOG.info("Reopening " + reRegions.size() + " regions on "
      + serverToRegions.size() + " region servers.");
  this.masterServices.getAssignmentManager().setRegionsToReopen(reRegions);
  notifyEventBeingHandled();
  BulkReOpen bulkReopen = new BulkReOpen(this.server, serverToRegions,
      this.masterServices.getAssignmentManager());
  while (true) {
    try {
      if (bulkReopen.bulkReOpen()) {
        done = true;
        break;
      } else {
        LOG.warn("Timeout before reopening all regions");
      }
    } catch (InterruptedException e) {
      LOG.warn("Reopen was interrupted");
      // Preserve the interrupt.
      Thread.currentThread().interrupt();
      break;
    }
  }
  return done;
}