Java Code Examples for org.apache.hadoop.hbase.client.RegionInfoBuilder#FIRST_META_REGIONINFO

The following examples show how to use org.apache.hadoop.hbase.client.RegionInfoBuilder#FIRST_META_REGIONINFO . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: TestHRegionLocation.java    From hbase with Apache License 2.0 6 votes vote down vote up
/**
 * HRegionLocations are equal if they have the same 'location' -- i.e. host and port -- even if
 * they are carrying different regions. Verify that is indeed the case.
 */
@Test
public void testHashAndEqualsCode() {
  ServerName hsa1 = ServerName.valueOf("localhost", 1234, -1L);
  HRegionLocation hrl1 = new HRegionLocation(RegionInfoBuilder.FIRST_META_REGIONINFO, hsa1);
  HRegionLocation hrl2 = new HRegionLocation(RegionInfoBuilder.FIRST_META_REGIONINFO, hsa1);
  assertEquals(hrl1.hashCode(), hrl2.hashCode());
  assertTrue(hrl1.equals(hrl2));
  HRegionLocation hrl3 = new HRegionLocation(RegionInfoBuilder.FIRST_META_REGIONINFO, hsa1);
  assertNotSame(hrl1, hrl3);
  // They are equal because they have same location even though they are
  // carrying different regions or timestamp.
  assertTrue(hrl1.equals(hrl3));
  ServerName hsa2 = ServerName.valueOf("localhost", 12345, -1L);
  HRegionLocation hrl4 = new HRegionLocation(RegionInfoBuilder.FIRST_META_REGIONINFO, hsa2);
  // These have same HRI but different locations so should be different.
  assertFalse(hrl3.equals(hrl4));
  HRegionLocation hrl5 =
    new HRegionLocation(hrl4.getRegion(), hrl4.getServerName(), hrl4.getSeqNum() + 1);
  assertTrue(hrl4.equals(hrl5));
}
 
Example 2
Source File: TestReadAndWriteRegionInfoFile.java    From hbase with Apache License 2.0 6 votes vote down vote up
@Test
public void testReadAndWriteRegionInfoFile() throws IOException, InterruptedException {
  RegionInfo ri = RegionInfoBuilder.FIRST_META_REGIONINFO;
  // Create a region. That'll write the .regioninfo file.
  FSTableDescriptors fsTableDescriptors = new FSTableDescriptors(FS, ROOT_DIR);
  FSTableDescriptors.tryUpdateMetaTableDescriptor(CONF, FS, ROOT_DIR, null);
  HRegion r = HBaseTestingUtility.createRegionAndWAL(ri, ROOT_DIR, CONF,
    fsTableDescriptors.get(TableName.META_TABLE_NAME));
  // Get modtime on the file.
  long modtime = getModTime(r);
  HBaseTestingUtility.closeRegionAndWAL(r);
  Thread.sleep(1001);
  r = HRegion.openHRegion(ROOT_DIR, ri, fsTableDescriptors.get(TableName.META_TABLE_NAME), null,
    CONF);
  // Ensure the file is not written for a second time.
  long modtime2 = getModTime(r);
  assertEquals(modtime, modtime2);
  // Now load the file.
  HRegionFileSystem.loadRegionInfoFileContent(r.getRegionFileSystem().getFileSystem(),
    r.getRegionFileSystem().getRegionDir());
  HBaseTestingUtility.closeRegionAndWAL(r);
}
 
Example 3
Source File: MasterRpcServices.java    From hbase with Apache License 2.0 5 votes vote down vote up
@Override
public UnassignRegionResponse unassignRegion(RpcController controller,
    UnassignRegionRequest req) throws ServiceException {
  try {
    final byte [] regionName = req.getRegion().getValue().toByteArray();
    RegionSpecifierType type = req.getRegion().getType();
    final boolean force = req.getForce();
    UnassignRegionResponse urr = UnassignRegionResponse.newBuilder().build();

    master.checkInitialized();
    if (type != RegionSpecifierType.REGION_NAME) {
      LOG.warn("unassignRegion specifier type: expected: " + RegionSpecifierType.REGION_NAME
        + " actual: " + type);
    }
    Pair<RegionInfo, ServerName> pair =
      MetaTableAccessor.getRegion(master.getConnection(), regionName);
    if (Bytes.equals(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), regionName)) {
      pair = new Pair<>(RegionInfoBuilder.FIRST_META_REGIONINFO,
        MetaTableLocator.getMetaRegionLocation(master.getZooKeeper()));
    }
    if (pair == null) {
      throw new UnknownRegionException(Bytes.toString(regionName));
    }

    RegionInfo hri = pair.getFirst();
    if (master.cpHost != null) {
      master.cpHost.preUnassign(hri, force);
    }
    LOG.debug(master.getClientIdAuditPrefix() + " unassign " + hri.getRegionNameAsString()
        + " in current location if it is online and reassign.force=" + force);
    master.getAssignmentManager().unassign(hri);
    if (master.cpHost != null) {
      master.cpHost.postUnassign(hri, force);
    }

    return urr;
  } catch (IOException ioe) {
    throw new ServiceException(ioe);
  }
}
 
Example 4
Source File: TestHRegionLocation.java    From hbase with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings("SelfComparison")
@Test
public void testCompareTo() {
  ServerName hsa1 = ServerName.valueOf("localhost", 1234, -1L);
  HRegionLocation hsl1 = new HRegionLocation(RegionInfoBuilder.FIRST_META_REGIONINFO, hsa1);
  ServerName hsa2 = ServerName.valueOf("localhost", 1235, -1L);
  HRegionLocation hsl2 = new HRegionLocation(RegionInfoBuilder.FIRST_META_REGIONINFO, hsa2);
  assertEquals(0, hsl1.compareTo(hsl1));
  assertEquals(0, hsl2.compareTo(hsl2));
  int compare1 = hsl1.compareTo(hsl2);
  int compare2 = hsl2.compareTo(hsl1);
  assertTrue((compare1 > 0) ? compare2 < 0 : compare2 > 0);
}
 
Example 5
Source File: TestMaster.java    From hbase with Apache License 2.0 5 votes vote down vote up
@Test
public void testMoveRegionWhenNotInitialized() {
  MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();
  HMaster m = cluster.getMaster();
  try {
    m.setInitialized(false); // fake it, set back later
    RegionInfo meta = RegionInfoBuilder.FIRST_META_REGIONINFO;
    m.move(meta.getEncodedNameAsBytes(), null);
    fail("Region should not be moved since master is not initialized");
  } catch (IOException ioe) {
    assertTrue(ioe instanceof PleaseHoldException);
  } finally {
    m.setInitialized(true);
  }
}
 
Example 6
Source File: TestRegionObserverPreFlushAndPreCompact.java    From hbase with Apache License 2.0 5 votes vote down vote up
private RegionCoprocessorHost getRegionCoprocessorHost() {
  // Make up an HRegion instance. Use the hbase:meta first region as our RegionInfo. Use
  // hbase:meta table name for building the TableDescriptor our mock returns when asked schema
  // down inside RegionCoprocessorHost. Pass in mocked RegionServerServices too.
  RegionInfo ri = RegionInfoBuilder.FIRST_META_REGIONINFO;
  HRegion mockedHRegion = Mockito.mock(HRegion.class);
  Mockito.when(mockedHRegion.getRegionInfo()).thenReturn(ri);
  TableDescriptor td = TableDescriptorBuilder.newBuilder(ri.getTable()).build();
  Mockito.when(mockedHRegion.getTableDescriptor()).thenReturn(td);
  RegionServerServices mockedServices = Mockito.mock(RegionServerServices.class);
  Configuration conf = HBaseConfiguration.create();
  // Load our test coprocessor defined above.
  conf.set(REGION_COPROCESSOR_CONF_KEY, TestRegionObserver.class.getName());
  return new RegionCoprocessorHost(mockedHRegion, mockedServices, conf);
}
 
Example 7
Source File: TestRegionInfo.java    From hbase with Apache License 2.0 5 votes vote down vote up
@Test
public void testIsOverlap() {
  byte [] a = Bytes.toBytes("a");
  byte [] b = Bytes.toBytes("b");
  byte [] c = Bytes.toBytes("c");
  byte [] d = Bytes.toBytes("d");
  org.apache.hadoop.hbase.client.RegionInfo all =
      RegionInfoBuilder.FIRST_META_REGIONINFO;
  org.apache.hadoop.hbase.client.RegionInfo ari =
      org.apache.hadoop.hbase.client.RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).
          setEndKey(a).build();
  org.apache.hadoop.hbase.client.RegionInfo abri =
      org.apache.hadoop.hbase.client.RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).
          setStartKey(a).setEndKey(b).build();
  org.apache.hadoop.hbase.client.RegionInfo adri =
      org.apache.hadoop.hbase.client.RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).
          setStartKey(a).setEndKey(d).build();
  org.apache.hadoop.hbase.client.RegionInfo cdri =
      org.apache.hadoop.hbase.client.RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).
          setStartKey(c).setEndKey(d).build();
  org.apache.hadoop.hbase.client.RegionInfo dri =
      org.apache.hadoop.hbase.client.RegionInfoBuilder.newBuilder(TableName.META_TABLE_NAME).
          setStartKey(d).build();
  assertTrue(all.isOverlap(all));
  assertTrue(all.isOverlap(abri));
  assertFalse(abri.isOverlap(cdri));
  assertTrue(all.isOverlap(ari));
  assertFalse(ari.isOverlap(abri));
  assertFalse(ari.isOverlap(abri));
  assertTrue(ari.isOverlap(all));
  assertTrue(dri.isOverlap(all));
  assertTrue(abri.isOverlap(adri));
  assertFalse(dri.isOverlap(ari));
  assertTrue(abri.isOverlap(adri));
  assertTrue(adri.isOverlap(abri));
}
 
Example 8
Source File: TestRegionInfo.java    From hbase with Apache License 2.0 5 votes vote down vote up
@Test
public void testPb() throws DeserializationException {
  RegionInfo hri = RegionInfoBuilder.FIRST_META_REGIONINFO;
  byte [] bytes = RegionInfo.toByteArray(hri);
  RegionInfo pbhri = RegionInfo.parseFrom(bytes);
  assertTrue(hri.equals(pbhri));
}
 
Example 9
Source File: TestRegionInfo.java    From hbase with Apache License 2.0 5 votes vote down vote up
@Test
public void testReadAndWriteHRegionInfoFile() throws IOException, InterruptedException {
  HBaseTestingUtility htu = new HBaseTestingUtility();
  RegionInfo hri = RegionInfoBuilder.FIRST_META_REGIONINFO;
  Path basedir = htu.getDataTestDir();
  // Create a region.  That'll write the .regioninfo file.
  FSTableDescriptors fsTableDescriptors = new FSTableDescriptors(htu.getConfiguration());
  FSTableDescriptors.tryUpdateMetaTableDescriptor(htu.getConfiguration());
  HRegion r = HBaseTestingUtility.createRegionAndWAL(hri, basedir, htu.getConfiguration(),
      fsTableDescriptors.get(TableName.META_TABLE_NAME));
  // Get modtime on the file.
  long modtime = getModTime(r);
  HBaseTestingUtility.closeRegionAndWAL(r);
  Thread.sleep(1001);
  r = HRegion.openHRegion(basedir, hri, fsTableDescriptors.get(TableName.META_TABLE_NAME),
      null, htu.getConfiguration());
  // Ensure the file is not written for a second time.
  long modtime2 = getModTime(r);
  assertEquals(modtime, modtime2);
  // Now load the file.
  org.apache.hadoop.hbase.client.RegionInfo deserializedHri =
    HRegionFileSystem.loadRegionInfoFileContent(
      r.getRegionFileSystem().getFileSystem(), r.getRegionFileSystem().getRegionDir());
  assertEquals(0,
    org.apache.hadoop.hbase.client.RegionInfo.COMPARATOR.compare(hri, deserializedHri));
  HBaseTestingUtility.closeRegionAndWAL(r);
}
 
Example 10
Source File: ProtobufUtil.java    From hbase with Apache License 2.0 5 votes vote down vote up
/**
 * Convert HBaseProto.RegionInfo to a RegionInfo
 *
 * @param proto the RegionInfo to convert
 * @return the converted RegionInfo
 */
public static org.apache.hadoop.hbase.client.RegionInfo toRegionInfo(final HBaseProtos.RegionInfo proto) {
  if (proto == null) {
    return null;
  }
  TableName tableName = ProtobufUtil.toTableName(proto.getTableName());
  long regionId = proto.getRegionId();
  int defaultReplicaId = org.apache.hadoop.hbase.client.RegionInfo.DEFAULT_REPLICA_ID;
  int replicaId = proto.hasReplicaId()? proto.getReplicaId(): defaultReplicaId;
  if (tableName.equals(TableName.META_TABLE_NAME) && replicaId == defaultReplicaId) {
    return RegionInfoBuilder.FIRST_META_REGIONINFO;
  }
  byte[] startKey = null;
  byte[] endKey = null;
  if (proto.hasStartKey()) {
    startKey = proto.getStartKey().toByteArray();
  }
  if (proto.hasEndKey()) {
    endKey = proto.getEndKey().toByteArray();
  }
  boolean split = false;
  if (proto.hasSplit()) {
    split = proto.getSplit();
  }
  RegionInfoBuilder rib = RegionInfoBuilder.newBuilder(tableName)
  .setStartKey(startKey)
  .setEndKey(endKey)
  .setRegionId(regionId)
  .setReplicaId(replicaId)
  .setSplit(split);
  if (proto.hasOffline()) {
    rib.setOffline(proto.getOffline());
  }
  return rib.build();
}
 
Example 11
Source File: AssignmentManager.java    From hbase with Apache License 2.0 4 votes vote down vote up
private RegionInfo getMetaForRegion(final RegionInfo regionInfo) {
  //if (regionInfo.isMetaRegion()) return regionInfo;
  // TODO: handle multiple meta. if the region provided is not meta lookup
  // which meta the region belongs to.
  return RegionInfoBuilder.FIRST_META_REGIONINFO;
}
 
Example 12
Source File: TestHRegionLocation.java    From hbase with Apache License 2.0 4 votes vote down vote up
@Test
public void testToString() {
  ServerName hsa1 = ServerName.valueOf("localhost", 1234, -1L);
  HRegionLocation hrl1 = new HRegionLocation(RegionInfoBuilder.FIRST_META_REGIONINFO, hsa1);
  System.out.println(hrl1.toString());
}