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
|
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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 =
|
||||||
|
|
Loading…
Reference in New Issue