HDFS-9132. Pass genstamp to ReplicaAccessorBuilder. (Colin Patrick McCabe via Lei (Eddy) Xu)
This commit is contained in:
parent
878504dcaa
commit
5eb237d544
@ -36,6 +36,9 @@ public abstract class ReplicaAccessorBuilder {
|
||||
public abstract ReplicaAccessorBuilder
|
||||
setBlock(long blockId, String blockPoolId);
|
||||
|
||||
/** Set the genstamp of the block which is being opened. */
|
||||
public abstract ReplicaAccessorBuilder setGenerationStamp(long genstamp);
|
||||
|
||||
/**
|
||||
* Set whether checksums must be verified. Checksums should be skipped if
|
||||
* the user has disabled checksum verification in the configuration. Users
|
||||
|
@ -968,6 +968,9 @@ Release 2.8.0 - UNRELEASED
|
||||
HDFS-9112. Improve error message for Haadmin when multiple name service IDs
|
||||
are configured. (Anu Engineer via jing9)
|
||||
|
||||
HDFS-9132. Pass genstamp to ReplicaAccessorBuilder. (Colin Patrick McCabe via
|
||||
Lei (Eddy) Xu)
|
||||
|
||||
OPTIMIZATIONS
|
||||
|
||||
HDFS-8026. Trace FSOutputSummer#writeChecksumChunks rather than
|
||||
|
@ -383,6 +383,7 @@ private BlockReader tryToCreateExternalBlockReader() {
|
||||
ReplicaAccessor accessor = builder.
|
||||
setAllowShortCircuitReads(allowShortCircuitLocalReads).
|
||||
setBlock(block.getBlockId(), block.getBlockPoolId()).
|
||||
setGenerationStamp(block.getGenerationStamp()).
|
||||
setBlockAccessToken(tokenBytes).
|
||||
setClientName(clientName).
|
||||
setConfiguration(configuration).
|
||||
|
@ -81,6 +81,7 @@ public static class SyntheticReplicaAccessorBuilder
|
||||
String fileName;
|
||||
long blockId;
|
||||
String blockPoolId;
|
||||
long genstamp;
|
||||
boolean verifyChecksum;
|
||||
String clientName;
|
||||
boolean allowShortCircuit;
|
||||
@ -100,6 +101,12 @@ public ReplicaAccessorBuilder setBlock(long blockId, String blockPoolId) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReplicaAccessorBuilder setGenerationStamp(long genstamp) {
|
||||
this.genstamp = genstamp;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReplicaAccessorBuilder setVerifyChecksum(boolean verifyChecksum) {
|
||||
this.verifyChecksum = verifyChecksum;
|
||||
@ -154,12 +161,14 @@ public static class SyntheticReplicaAccessor extends ReplicaAccessor {
|
||||
int numCloses = 0;
|
||||
String error = "";
|
||||
String prefix = "";
|
||||
final long genstamp;
|
||||
|
||||
SyntheticReplicaAccessor(SyntheticReplicaAccessorBuilder builder) {
|
||||
this.length = builder.visibleLength;
|
||||
this.contents = DFSTestUtil.
|
||||
calculateFileContentsFromSeed(SEED, Ints.checkedCast(length));
|
||||
this.builder = builder;
|
||||
this.genstamp = builder.genstamp;
|
||||
String uuid = this.builder.conf.
|
||||
get(SYNTHETIC_BLOCK_READER_TEST_UUID_KEY);
|
||||
LinkedList<SyntheticReplicaAccessor> accessorsList =
|
||||
@ -235,6 +244,10 @@ synchronized String getError() {
|
||||
return error;
|
||||
}
|
||||
|
||||
long getGenerationStamp() {
|
||||
return genstamp;
|
||||
}
|
||||
|
||||
synchronized void addError(String text) {
|
||||
LOG.error("SyntheticReplicaAccessor error: " + text);
|
||||
error = error + prefix + text;
|
||||
@ -284,6 +297,8 @@ public void testExternalBlockReader() throws Exception {
|
||||
Assert.assertEquals(dfs.getClient().clientName,
|
||||
accessor.builder.clientName);
|
||||
Assert.assertEquals("/a", accessor.builder.fileName);
|
||||
Assert.assertEquals(block.getGenerationStamp(),
|
||||
accessor.getGenerationStamp());
|
||||
Assert.assertTrue(accessor.builder.verifyChecksum);
|
||||
Assert.assertEquals(1024L, accessor.builder.visibleLength);
|
||||
Assert.assertEquals(1024L, accessor.totalRead);
|
||||
|
Loading…
Reference in New Issue
Block a user