Index: hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java (revision 1389119) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java (working copy) @@ -41,6 +41,7 @@ import org.apache.hadoop.hbase.ServerName; import org.apache.hadoop.hbase.regionserver.wal.HLog; import org.apache.hadoop.hdfs.DFSClient; +import org.apache.hadoop.hdfs.DFSConfigKeys; import org.apache.hadoop.hdfs.DistributedFileSystem; import org.apache.hadoop.hdfs.protocol.ClientProtocol; import org.apache.hadoop.hdfs.protocol.DatanodeInfo; @@ -76,9 +77,12 @@ // By default, any operation to this FilterFileSystem occurs on // the underlying filesystem that has checksums switched on. this.fs = FileSystem.get(conf); - this.useHBaseChecksum = useHBaseChecksum; + this.useHBaseChecksum = useHBaseChecksum + && conf.getBoolean(DFSConfigKeys.DFS_CLIENT_READ_SHORTCIRCUIT_KEY, + DFSConfigKeys.DFS_CLIENT_READ_SHORTCIRCUIT_DEFAULT); fs.initialize(getDefaultUri(conf), conf); + addLocationsOrderInterceptor(conf); // If hbase checksum verification is switched on, then create a new // filesystem object that has cksum verification turned off. @@ -89,12 +93,13 @@ // This manifests itself in that incorrect data is read and HFileBlocks won't be able to read // their header magic numbers. See HBASE-5885 if (useHBaseChecksum && !(fs instanceof LocalFileSystem)) { + conf = new Configuration(conf); + conf.setBoolean(DFSConfigKeys.DFS_CLIENT_READ_SHORTCIRCUIT_SKIP_CHECKSUM_KEY, true); this.noChecksumFs = newInstanceFileSystem(conf); this.noChecksumFs.setVerifyChecksum(false); } else { this.noChecksumFs = fs; } - addLocationsOrderInterceptor(conf); } /**