fix SequenceFile#createWriter with boolean createParent arg to respect createParent. ------------------------------------------------------------------------------------
Key: HADOOP-7870 URL: https://issues.apache.org/jira/browse/HADOOP-7870 Project: Hadoop Common Issue Type: Bug Reporter: Jonathan Hsieh After HBASE-6840, one set of calls to createNonRecursive(...) seems fishy - the new boolean createParent variable from the signature isn't used at all. {code} + public static Writer + createWriter(FileSystem fs, Configuration conf, Path name, + Class keyClass, Class valClass, int bufferSize, + short replication, long blockSize, boolean createParent, + CompressionType compressionType, CompressionCodec codec, + Metadata metadata) throws IOException { + if ((codec instanceof GzipCodec) && + !NativeCodeLoader.isNativeCodeLoaded() && + !ZlibFactory.isNativeZlibLoaded(conf)) { + throw new IllegalArgumentException("SequenceFile doesn't work with " + + "GzipCodec without native-hadoop code!"); + } + + switch (compressionType) { + case NONE: + return new Writer(conf, + fs.createNonRecursive(name, true, bufferSize, replication, blockSize, null), + keyClass, valClass, metadata).ownStream(); + case RECORD: + return new RecordCompressWriter(conf, + fs.createNonRecursive(name, true, bufferSize, replication, blockSize, null), + keyClass, valClass, codec, metadata).ownStream(); + case BLOCK: + return new BlockCompressWriter(conf, + fs.createNonRecursive(name, true, bufferSize, replication, blockSize, null), + keyClass, valClass, codec, metadata).ownStream(); + default: + return null; + } + } + {code} Nicolas Spiegelberg suggest changing it to {code} if (createParent) { use fs.createNonRecursive(); } else { use fs.create() } {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira