HDFS-8867. Enable optimized block reports. Contributed by Daryn Sharp.

(cherry picked from commit f61120d964)
This commit is contained in:
Jing Zhao 2015-08-19 10:36:56 -07:00
parent 10a0ddbac3
commit c0a4cd978a
3 changed files with 23 additions and 5 deletions

View File

@ -861,6 +861,8 @@ Release 2.7.2 - UNRELEASED
HDFS-8852. HDFS architecture documentation of version 2.x is outdated HDFS-8852. HDFS architecture documentation of version 2.x is outdated
about append write support. (Ajith S via aajisaka) about append write support. (Ajith S via aajisaka)
HDFS-8867. Enable optimized block reports. (Daryn Sharp via jing9)
Release 2.7.1 - 2015-07-06 Release 2.7.1 - 2015-07-06
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -47,18 +47,27 @@ public class NamespaceInfo extends StorageInfo {
// only authoritative on the server-side to determine advertisement to // only authoritative on the server-side to determine advertisement to
// clients. enum will update the supported values // clients. enum will update the supported values
private static long CAPABILITIES_SUPPORTED = 0; private static final long CAPABILITIES_SUPPORTED = getSupportedCapabilities();
private static long getSupportedCapabilities() {
long mask = 0;
for (Capability c : Capability.values()) {
if (c.supported) {
mask |= c.mask;
}
}
return mask;
}
public enum Capability { public enum Capability {
UNKNOWN(false), UNKNOWN(false),
STORAGE_BLOCK_REPORT_BUFFERS(true); // use optimized ByteString buffers STORAGE_BLOCK_REPORT_BUFFERS(true); // use optimized ByteString buffers
private final boolean supported;
private final long mask; private final long mask;
Capability(boolean isSupported) { Capability(boolean isSupported) {
supported = isSupported;
int bits = ordinal() - 1; int bits = ordinal() - 1;
mask = (bits < 0) ? 0 : (1L << bits); mask = (bits < 0) ? 0 : (1L << bits);
if (isSupported) {
CAPABILITIES_SUPPORTED |= mask;
}
} }
public long getMask() { public long getMask() {
return mask; return mask;

View File

@ -187,7 +187,14 @@ public class TestBlockListAsLongs {
} }
assertTrue(reportReplicas.isEmpty()); assertTrue(reportReplicas.isEmpty());
} }
@Test
public void testCapabilitiesInited() {
NamespaceInfo nsInfo = new NamespaceInfo();
assertTrue(
nsInfo.isCapabilitySupported(Capability.STORAGE_BLOCK_REPORT_BUFFERS));
}
@Test @Test
public void testDatanodeDetect() throws ServiceException, IOException { public void testDatanodeDetect() throws ServiceException, IOException {
final AtomicReference<BlockReportRequestProto> request = final AtomicReference<BlockReportRequestProto> request =