HBASE-20006 TestRestoreSnapshotFromClientWithRegionReplicas is flakey

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
Signed-off-by: Sean Busbey <busbey@apache.org>
This commit is contained in:
Toshihiro Suzuki 2018-03-04 14:30:07 +09:00 committed by Sean Busbey
parent 24eb141bac
commit 22e7ae0311
4 changed files with 51 additions and 25 deletions

View File

@ -157,13 +157,12 @@ public class StoreFileInfo {
/**
* Create a Store File Info from an HFileLink
* @param conf the {@link Configuration} to use
* @param fs The current file system to use.
* @param conf The {@link Configuration} to use
* @param fs The current file system to use
* @param fileStatus The {@link FileStatus} of the file
*/
public StoreFileInfo(final Configuration conf, final FileSystem fs, final FileStatus fileStatus,
final HFileLink link)
throws IOException {
final HFileLink link) {
this.fs = fs;
this.conf = conf;
// initialPath can be null only if we get a link.
@ -175,15 +174,13 @@ public class StoreFileInfo {
/**
* Create a Store File Info from an HFileLink
* @param conf
* @param fs
* @param fileStatus
* @param reference
* @throws IOException
* @param conf The {@link Configuration} to use
* @param fs The current file system to use
* @param fileStatus The {@link FileStatus} of the file
* @param reference The reference instance
*/
public StoreFileInfo(final Configuration conf, final FileSystem fs, final FileStatus fileStatus,
final Reference reference)
throws IOException {
final Reference reference) {
this.fs = fs;
this.conf = conf;
this.initialPath = fileStatus.getPath();
@ -192,6 +189,24 @@ public class StoreFileInfo {
this.link = null;
}
/**
* Create a Store File Info from an HFileLink and a Reference
* @param conf The {@link Configuration} to use
* @param fs The current file system to use
* @param fileStatus The {@link FileStatus} of the file
* @param reference The reference instance
* @param link The link instance
*/
public StoreFileInfo(final Configuration conf, final FileSystem fs, final FileStatus fileStatus,
final Reference reference, final HFileLink link) {
this.fs = fs;
this.conf = conf;
this.initialPath = fileStatus.getPath();
this.createdTimestamp = fileStatus.getModificationTime();
this.reference = reference;
this.link = link;
}
/**
* Sets the region coprocessor env.
* @param coprocessorHost

View File

@ -128,15 +128,28 @@ public class ServerRegionReplicaUtil extends RegionReplicaUtil {
}
// else create a store file link. The link file does not exists on filesystem though.
HFileLink link = HFileLink.build(conf, regionInfoForFs.getTable(),
regionInfoForFs.getEncodedName(), familyName, path.getName());
if (StoreFileInfo.isReference(path)) {
if (HFileLink.isHFileLink(path) || StoreFileInfo.isHFile(path)) {
HFileLink link = HFileLink
.build(conf, regionInfoForFs.getTable(), regionInfoForFs.getEncodedName(), familyName,
path.getName());
return new StoreFileInfo(conf, fs, link.getFileStatus(fs), link);
} else if (StoreFileInfo.isReference(path)) {
Reference reference = Reference.read(fs, path);
return new StoreFileInfo(conf, fs, link.getFileStatus(fs), reference);
Path referencePath = StoreFileInfo.getReferredToFile(path);
if (HFileLink.isHFileLink(referencePath)) {
// HFileLink Reference
HFileLink link = HFileLink.buildFromHFileLinkPattern(conf, referencePath);
return new StoreFileInfo(conf, fs, link.getFileStatus(fs), reference, link);
} else {
// Reference
HFileLink link = HFileLink
.build(conf, regionInfoForFs.getTable(), regionInfoForFs.getEncodedName(), familyName,
path.getName());
return new StoreFileInfo(conf, fs, link.getFileStatus(fs), reference);
}
} else {
throw new IOException("path=" + path + " doesn't look like a valid StoreFile");
}
return new StoreFileInfo(conf, fs, link.getFileStatus(fs), link);
}
/**

View File

@ -25,12 +25,10 @@ import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.testclassification.ClientTests;
import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.junit.ClassRule;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@Ignore // Disabled because flakey. See HBASE-20006.
@Category({LargeTests.class, ClientTests.class})
public class TestRestoreSnapshotFromClientWithRegionReplicas extends
TestRestoreSnapshotFromClient {

View File

@ -1578,7 +1578,7 @@ public class TestHRegionReplayEvents {
.addStoreFlushes(StoreFlushDescriptor.newBuilder()
.setFamilyName(UnsafeByteOperations.unsafeWrap(families[0]))
.setStoreHomeDir("/store_home_dir")
.addFlushOutput("/foo/baz/bar")
.addFlushOutput("/foo/baz/123")
.build())
.build());
}
@ -1593,8 +1593,8 @@ public class TestHRegionReplayEvents {
.setEncodedRegionName(
UnsafeByteOperations.unsafeWrap(primaryRegion.getRegionInfo().getEncodedNameAsBytes()))
.setFamilyName(UnsafeByteOperations.unsafeWrap(families[0]))
.addCompactionInput("/foo")
.addCompactionOutput("/bar")
.addCompactionInput("/123")
.addCompactionOutput("/456")
.setStoreHomeDir("/store_home_dir")
.setRegionName(UnsafeByteOperations.unsafeWrap(primaryRegion.getRegionInfo().getRegionName()))
.build()
@ -1617,7 +1617,7 @@ public class TestHRegionReplayEvents {
.addStores(StoreDescriptor.newBuilder()
.setFamilyName(UnsafeByteOperations.unsafeWrap(families[0]))
.setStoreHomeDir("/store_home_dir")
.addStoreFile("/foo")
.addStoreFile("/123")
.build())
.build());
}
@ -1634,7 +1634,7 @@ public class TestHRegionReplayEvents {
.addStores(StoreDescriptor.newBuilder()
.setFamilyName(UnsafeByteOperations.unsafeWrap(families[0]))
.setStoreHomeDir("/store_home_dir")
.addStoreFile("/foo")
.addStoreFile("/123")
.build())
.build());
}