HBASE-22643 : Delete region without archiving only if regiondir is present
Signed-off-by: Wellington Chevreuil <wchevreuil@apache.org> Signed-off-by: Xu Cang <xucang@apache.org>
This commit is contained in:
parent
f017e7b8aa
commit
8b37958161
|
@ -121,7 +121,9 @@ public class HFileArchiver {
|
||||||
if (tableDir == null || regionDir == null) {
|
if (tableDir == null || regionDir == null) {
|
||||||
LOG.error("No archive directory could be found because tabledir (" + tableDir
|
LOG.error("No archive directory could be found because tabledir (" + tableDir
|
||||||
+ ") or regiondir (" + regionDir + "was null. Deleting files instead.");
|
+ ") or regiondir (" + regionDir + "was null. Deleting files instead.");
|
||||||
|
if (regionDir != null) {
|
||||||
deleteRegionWithoutArchiving(fs, regionDir);
|
deleteRegionWithoutArchiving(fs, regionDir);
|
||||||
|
}
|
||||||
// we should have archived, but failed to. Doesn't matter if we deleted
|
// we should have archived, but failed to. Doesn't matter if we deleted
|
||||||
// the archived files correctly or not.
|
// the archived files correctly or not.
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -517,6 +517,50 @@ public class TestHFileArchiving {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testArchiveRegionTableAndRegionDirsNull() throws IOException {
|
||||||
|
Path rootDir = UTIL.getDataTestDirOnTestFS("testCleaningRace");
|
||||||
|
FileSystem fileSystem = UTIL.getTestFileSystem();
|
||||||
|
// Try to archive the file but with null regionDir, can't delete sourceFile
|
||||||
|
assertFalse(HFileArchiver.archiveRegion(fileSystem, rootDir, null, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testArchiveRegionWithTableDirNull() throws IOException {
|
||||||
|
Path regionDir = new Path(FSUtils.getTableDir(new Path("./"),
|
||||||
|
TableName.valueOf(name.getMethodName())), "xyzabc");
|
||||||
|
Path familyDir = new Path(regionDir, "rd");
|
||||||
|
Path rootDir = UTIL.getDataTestDirOnTestFS("testCleaningRace");
|
||||||
|
Path file = new Path(familyDir, "1");
|
||||||
|
Path sourceFile = new Path(rootDir, file);
|
||||||
|
FileSystem fileSystem = UTIL.getTestFileSystem();
|
||||||
|
fileSystem.createNewFile(sourceFile);
|
||||||
|
Path sourceRegionDir = new Path(rootDir, regionDir);
|
||||||
|
fileSystem.mkdirs(sourceRegionDir);
|
||||||
|
// Try to archive the file
|
||||||
|
assertFalse(HFileArchiver.archiveRegion(fileSystem, rootDir, null, sourceRegionDir));
|
||||||
|
assertFalse(fileSystem.exists(sourceRegionDir));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testArchiveRegionWithRegionDirNull() throws IOException {
|
||||||
|
Path regionDir = new Path(FSUtils.getTableDir(new Path("./"),
|
||||||
|
TableName.valueOf(name.getMethodName())), "elgn4nf");
|
||||||
|
Path familyDir = new Path(regionDir, "rdar");
|
||||||
|
Path rootDir = UTIL.getDataTestDirOnTestFS("testCleaningRace");
|
||||||
|
Path file = new Path(familyDir, "2");
|
||||||
|
Path sourceFile = new Path(rootDir, file);
|
||||||
|
FileSystem fileSystem = UTIL.getTestFileSystem();
|
||||||
|
fileSystem.createNewFile(sourceFile);
|
||||||
|
Path sourceRegionDir = new Path(rootDir, regionDir);
|
||||||
|
fileSystem.mkdirs(sourceRegionDir);
|
||||||
|
// Try to archive the file but with null regionDir, can't delete sourceFile
|
||||||
|
assertFalse(HFileArchiver.archiveRegion(fileSystem, rootDir, sourceRegionDir.getParent(),
|
||||||
|
null));
|
||||||
|
assertTrue(fileSystem.exists(sourceRegionDir));
|
||||||
|
fileSystem.delete(sourceRegionDir, true);
|
||||||
|
}
|
||||||
|
|
||||||
private void clearArchiveDirectory() throws IOException {
|
private void clearArchiveDirectory() throws IOException {
|
||||||
UTIL.getTestFileSystem().delete(
|
UTIL.getTestFileSystem().delete(
|
||||||
new Path(UTIL.getDefaultRootDirPath(), HConstants.HFILE_ARCHIVE_DIRECTORY), true);
|
new Path(UTIL.getDefaultRootDirPath(), HConstants.HFILE_ARCHIVE_DIRECTORY), true);
|
||||||
|
|
Loading…
Reference in New Issue