Description
After HBASE-6840, one set of calls to createNonRecursive(...) seems fishy - the new boolean createParent variable from the signature isn't used at all.
+ 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; + } + } +
Nicolas Spiegelberg suggests changing it to
if (createParent) { use fs.create() } else { use fs.createNonRecursive(); }
Attachments
Attachments
Issue Links
- depends upon
-
HADOOP-6840 Support non-recursive create() in FileSystem & SequenceFile.Writer
- Closed