private HRegion openRegion() {
    HRegion region = null;
    boolean compactionEnabled =
      ((HRegionServer) server).getCompactSplitThread().isCompactionsEnabled();
    this.server.getConfiguration().setBoolean(HBASE_REGION_SERVER_ENABLE_COMPACTION,
      compactionEnabled);
    try {
      // Instantiate the region. This also periodically tickles OPENING
      // state so master doesn't timeout this region in transition.
      region =
        HRegion.openHRegion(this.regionInfo, this.htd, this.rsServices.getWAL(this.regionInfo),
          this.server.getConfiguration(), this.rsServices, new CancelableProgressable() {
            @Override
            public boolean progress() {
              if (!isRegionStillOpening()) {
                LOG.warn("Open region aborted since it isn't opening any more");
                return false;
              }
              return true;
            }
          });
    } catch (Throwable t) {
      // We failed open. Our caller will see the 'null' return value
      // and transition the node back to FAILED_OPEN. If that fails,
      // we rely on the Timeout Monitor in the master to reassign.
      LOG.error("Failed open of region=" + this.regionInfo.getRegionNameAsString(), t);
    }
    return region;
  }
Returns Instance of HRegion if successful open else null.
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java