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

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

View File

@ -25,6 +25,8 @@ Release 2.7.2 - UNRELEASED
HDFS-8852. HDFS architecture documentation of version 2.x is outdated
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
INCOMPATIBLE CHANGES

View File

@ -47,18 +47,27 @@ public class NamespaceInfo extends StorageInfo {
// only authoritative on the server-side to determine advertisement to
// 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 {
UNKNOWN(false),
STORAGE_BLOCK_REPORT_BUFFERS(true); // use optimized ByteString buffers
private final boolean supported;
private final long mask;
Capability(boolean isSupported) {
supported = isSupported;
int bits = ordinal() - 1;
mask = (bits < 0) ? 0 : (1L << bits);
if (isSupported) {
CAPABILITIES_SUPPORTED |= mask;
}
}
public long getMask() {
return mask;

View File

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