You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by cu...@apache.org on 2006/03/21 22:40:28 UTC
svn commit: r387629 -
/lucene/hadoop/trunk/src/java/org/apache/hadoop/io/SequenceFile.java
Author: cutting
Date: Tue Mar 21 13:40:26 2006
New Revision: 387629
URL: http://svn.apache.org/viewcvs?rev=387629&view=rev
Log:
Fix for HADOOP-87. Dont' pass large buffers through to deflater as this is inefficient.
Modified:
lucene/hadoop/trunk/src/java/org/apache/hadoop/io/SequenceFile.java
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/io/SequenceFile.java
URL: http://svn.apache.org/viewcvs/lucene/hadoop/trunk/src/java/org/apache/hadoop/io/SequenceFile.java?rev=387629&r1=387628&r2=387629&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/io/SequenceFile.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/io/SequenceFile.java Tue Mar 21 13:40:26 2006
@@ -57,9 +57,11 @@
private Class valClass;
private boolean deflateValues;
- private DataOutputBuffer deflateIn = new DataOutputBuffer();
- private byte[] deflateOut = new byte[8192];
private Deflater deflater = new Deflater(Deflater.BEST_SPEED);
+ private DeflaterOutputStream deflateFilter =
+ new DeflaterOutputStream(buffer, deflater);
+ private DataOutputStream deflateOut =
+ new DataOutputStream(new BufferedOutputStream(deflateFilter));
// Insert a globally unique 16-byte value every few entries, so that one
// can seek into the middle of a file and then synchronize with record
@@ -155,15 +157,10 @@
throw new IOException("zero length keys not allowed: " + key);
if (deflateValues) {
- deflateIn.reset();
- val.write(deflateIn);
deflater.reset();
- deflater.setInput(deflateIn.getData(), 0, deflateIn.getLength());
- deflater.finish();
- while (!deflater.finished()) {
- int count = deflater.deflate(deflateOut);
- buffer.write(deflateOut, 0, count);
- }
+ val.write(deflateOut);
+ deflateOut.flush();
+ deflateFilter.finish();
} else {
val.write(buffer);
}