HDFS-8867. Enable optimized block reports. Contributed by Daryn Sharp.
(cherry picked from commitf61120d964
) (cherry picked from commitc0a4cd978a
)
This commit is contained in:
parent
7409ed783e
commit
4c005a4e16
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 =
|
||||
|
|
Loading…
Reference in New Issue