HBASE-7604 Remove duplicated code from HFileLink (Matteo Bertozzi)

git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/hbase-7290@1445854 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jonathan Hsieh 2013-02-13 19:00:36 +00:00
parent f70ed5ab6d
commit bc37ac1553
2 changed files with 3 additions and 47 deletions

View File

@ -142,50 +142,6 @@ public class HFileLink extends FileLink {
return m.groupCount() > 2 && m.group(3) != null && m.group(2) != null && m.group(1) != null;
}
/**
* The returned path can be the "original" file path like: /hbase/table/region/cf/hfile
* or a path to the archived file like: /hbase/.archive/table/region/cf/hfile
*
* @param fs {@link FileSystem} on which to check the HFileLink
* @param conf {@link Configuration} from which to extract specific archive locations
* @param path HFileLink path
* @return Referenced path (original path or archived path)
* @throws IOException on unexpected error.
*/
public static Path getReferencedPath(final Configuration conf, final FileSystem fs,
final Path path) throws IOException {
return getReferencedPath(fs, FSUtils.getRootDir(conf),
HFileArchiveUtil.getArchivePath(conf), path);
}
/**
* The returned path can be the "original" file path like: /hbase/table/region/cf/hfile
* or a path to the archived file like: /hbase/.archive/table/region/cf/hfile
*
* @param fs {@link FileSystem} on which to check the HFileLink
* @param rootDir root hbase directory
* @param archiveDir Path to the hbase archive directory
* @param path HFileLink path
* @return Referenced path (original path or archived path)
* @throws IOException on unexpected error.
*/
public static Path getReferencedPath(final FileSystem fs, final Path rootDir,
final Path archiveDir, final Path path) throws IOException {
Path hfilePath = getRelativeTablePath(path);
Path originPath = new Path(rootDir, hfilePath);
if (fs.exists(originPath)) {
return originPath;
}
Path archivePath = new Path(archiveDir, hfilePath);
if (fs.exists(archivePath)) {
return archivePath;
}
return new Path(new Path(rootDir, HConstants.HBASE_TEMP_DIRECTORY), hfilePath);
}
/**
* Convert a HFileLink path to a table relative path.
* e.g. the link: /hbase/test/0123/cf/testtb=4567-abcd

View File

@ -304,8 +304,8 @@ public final class ExportSnapshot extends Configured implements Tool {
private FileStatus getFileStatus(final FileSystem fs, final Path path) {
try {
if (HFileLink.isHFileLink(path)) {
Path refPath = HFileLink.getReferencedPath(fs, inputRoot, inputArchive, path);
return fs.getFileStatus(refPath);
HFileLink link = new HFileLink(inputRoot, inputArchive, path);
return link.getFileStatus(fs);
} else if (isHLogLinkPath(path)) {
String serverName = path.getParent().getName();
String logName = path.getName();
@ -375,7 +375,7 @@ public final class ExportSnapshot extends Configured implements Tool {
public void storeFile (final String region, final String family, final String hfile)
throws IOException {
Path path = new Path(family, HFileLink.createHFileLinkName(table, region, hfile));
long size = fs.getFileStatus(HFileLink.getReferencedPath(conf, fs, path)).getLen();
long size = new HFileLink(conf, path).getFileStatus(fs).getLen();
files.add(new Pair<Path, Long>(path, size));
}