@Override
  public StoreFileInfo getStoreFileInfo(FileStatus fileStatus, Path initialPath,
    boolean primaryReplica) throws IOException {
    FileSystem fs = this.ctx.getRegionFileSystem().getFileSystem();
    assert fs != null;
    assert initialPath != null;
    assert conf != null;
    Reference reference = null;
    HFileLink link = null;
    long createdTimestamp = 0;
    long size = 0;
    Path p = initialPath;
    if (HFileLink.isHFileLink(p)) {
      // HFileLink
      reference = null;
      link = HFileLink.buildFromHFileLinkPattern(conf, p);
      LOG.trace("{} is a link", p);
    } else if (StoreFileInfo.isReference(p)) {
      reference = readReference(p);
      Path referencePath = StoreFileInfo.getReferredToFile(p);
      if (HFileLink.isHFileLink(referencePath)) {
        // HFileLink Reference
        link = HFileLink.buildFromHFileLinkPattern(conf, referencePath);
      } else {
        // Reference
        link = null;
      }
      LOG.trace("{} is a {} reference to {}", p, reference.getFileRegion(), referencePath);
    } else
      if (StoreFileInfo.isHFile(p) || StoreFileInfo.isMobFile(p) || StoreFileInfo.isMobRefFile(p)) {
        // HFile
        if (fileStatus != null) {
          createdTimestamp = fileStatus.getModificationTime();
          size = fileStatus.getLen();
        } else {
          FileStatus fStatus = fs.getFileStatus(initialPath);
          createdTimestamp = fStatus.getModificationTime();
          size = fStatus.getLen();
        }
      } else {
        throw new IOException("path=" + p + " doesn't look like a valid StoreFile");
      }
    return new StoreFileInfo(conf, fs, createdTimestamp, initialPath, size, reference, link,
      isPrimaryReplica);
  }
Returns true if the specified family has reference files
@param familyName Column Family Name
@return true if family contains reference files
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/StoreFileTrackerBase.java