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 1389604) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java (working copy) @@ -76,9 +76,11 @@ // 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("dfs.client.read.shortcircuit", false); 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 +91,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("dfs.client.read.shortcircuit.skip.checksum", true); this.noChecksumFs = newInstanceFileSystem(conf); this.noChecksumFs.setVerifyChecksum(false); } else { this.noChecksumFs = fs; } - addLocationsOrderInterceptor(conf); } /**