lucene4: fixed SwitchDirectory and CompressedDirectory (except fileLength method)

This commit is contained in:
Igor Motov 2012-10-30 21:42:58 -04:00 committed by Shay Banon
parent e8092fe290
commit be424c4564
3 changed files with 16 additions and 57 deletions

View File

@ -1,5 +1,6 @@
package org.elasticsearch.common.compress; package org.elasticsearch.common.compress;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import org.apache.lucene.store.*; import org.apache.lucene.store.*;
import org.elasticsearch.index.store.support.ForceSyncDirectory; import org.elasticsearch.index.store.support.ForceSyncDirectory;
@ -60,16 +61,6 @@ public class CompressedDirectory extends Directory implements ForceSyncDirectory
return dir.fileExists(name); return dir.fileExists(name);
} }
@Override
public long fileModified(String name) throws IOException {
return dir.fileModified(name);
}
@Override
public void touchFile(String name) throws IOException {
dir.touchFile(name);
}
@Override @Override
public void deleteFile(String name) throws IOException { public void deleteFile(String name) throws IOException {
dir.deleteFile(name); dir.deleteFile(name);
@ -97,24 +88,19 @@ public class CompressedDirectory extends Directory implements ForceSyncDirectory
dir.sync(names); dir.sync(names);
} }
@Override
public void sync(String name) throws IOException {
dir.sync(name);
}
@Override @Override
public void forceSync(String name) throws IOException { public void forceSync(String name) throws IOException {
if (dir instanceof ForceSyncDirectory) { if (dir instanceof ForceSyncDirectory) {
((ForceSyncDirectory) dir).forceSync(name); ((ForceSyncDirectory) dir).forceSync(name);
} else { } else {
dir.sync(name); dir.sync(ImmutableList.of(name));
} }
} }
@Override @Override
public IndexInput openInput(String name) throws IOException { public IndexInput openInput(String name, IOContext context) throws IOException {
if (decompressExtensions.contains(getExtension(name))) { if (decompressExtensions.contains(getExtension(name))) {
IndexInput in = dir.openInput(name); IndexInput in = dir.openInput(name, context);
Compressor compressor1 = CompressorFactory.compressor(in); Compressor compressor1 = CompressorFactory.compressor(in);
if (compressor1 != null) { if (compressor1 != null) {
return compressor1.indexInput(in); return compressor1.indexInput(in);
@ -122,29 +108,15 @@ public class CompressedDirectory extends Directory implements ForceSyncDirectory
return in; return in;
} }
} }
return dir.openInput(name); return dir.openInput(name, context);
} }
@Override @Override
public IndexInput openInput(String name, int bufferSize) throws IOException { public IndexOutput createOutput(String name, IOContext context) throws IOException {
if (decompressExtensions.contains(getExtension(name))) {
IndexInput in = dir.openInput(name, bufferSize);
Compressor compressor1 = CompressorFactory.compressor(in);
if (compressor1 != null) {
return compressor1.indexInput(in);
} else {
return in;
}
}
return dir.openInput(name, bufferSize);
}
@Override
public IndexOutput createOutput(String name) throws IOException {
if (compress && compressExtensions.contains(getExtension(name))) { if (compress && compressExtensions.contains(getExtension(name))) {
return compressor.indexOutput(dir.createOutput(name)); return compressor.indexOutput(dir.createOutput(name, context));
} }
return dir.createOutput(name); return dir.createOutput(name, context);
} }
// can't override this one, we need to open the correct compression // can't override this one, we need to open the correct compression

View File

@ -203,7 +203,7 @@ public abstract class CompressedIndexInput<T extends CompressorContext> extends
protected abstract int uncompress(IndexInput in, byte[] out) throws IOException; protected abstract int uncompress(IndexInput in, byte[] out) throws IOException;
@Override @Override
public Object clone() { public IndexInput clone() {
// we clone and we need to make sure we keep the same positions! // we clone and we need to make sure we keep the same positions!
CompressedIndexInput cloned = (CompressedIndexInput) super.clone(); CompressedIndexInput cloned = (CompressedIndexInput) super.clone();
cloned.uncompressed = new byte[uncompressedLength]; cloned.uncompressed = new byte[uncompressedLength];

View File

@ -19,8 +19,10 @@
package org.elasticsearch.common.lucene.store; package org.elasticsearch.common.lucene.store;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import org.apache.lucene.store.Directory; import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IOContext;
import org.apache.lucene.store.IndexInput; import org.apache.lucene.store.IndexInput;
import org.apache.lucene.store.IndexOutput; import org.apache.lucene.store.IndexOutput;
import org.elasticsearch.index.store.support.ForceSyncDirectory; import org.elasticsearch.index.store.support.ForceSyncDirectory;
@ -123,16 +125,6 @@ public class SwitchDirectory extends Directory implements ForceSyncDirectory {
return getDirectory(name).fileExists(name); return getDirectory(name).fileExists(name);
} }
@Override
public long fileModified(String name) throws IOException {
return getDirectory(name).fileModified(name);
}
@Override
public void touchFile(String name) throws IOException {
getDirectory(name).touchFile(name);
}
@Override @Override
public void deleteFile(String name) throws IOException { public void deleteFile(String name) throws IOException {
getDirectory(name).deleteFile(name); getDirectory(name).deleteFile(name);
@ -144,8 +136,8 @@ public class SwitchDirectory extends Directory implements ForceSyncDirectory {
} }
@Override @Override
public IndexOutput createOutput(String name) throws IOException { public IndexOutput createOutput(String name, IOContext context) throws IOException {
return getDirectory(name).createOutput(name); return getDirectory(name).createOutput(name, context);
} }
@Override @Override
@ -163,23 +155,18 @@ public class SwitchDirectory extends Directory implements ForceSyncDirectory {
secondaryDir.sync(secondaryNames); secondaryDir.sync(secondaryNames);
} }
@Override
public void sync(String name) throws IOException {
getDirectory(name).sync(name);
}
@Override @Override
public void forceSync(String name) throws IOException { public void forceSync(String name) throws IOException {
Directory dir = getDirectory(name); Directory dir = getDirectory(name);
if (dir instanceof ForceSyncDirectory) { if (dir instanceof ForceSyncDirectory) {
((ForceSyncDirectory) dir).forceSync(name); ((ForceSyncDirectory) dir).forceSync(name);
} else { } else {
dir.sync(name); dir.sync(ImmutableList.of(name));
} }
} }
@Override @Override
public IndexInput openInput(String name) throws IOException { public IndexInput openInput(String name, IOContext context) throws IOException {
return getDirectory(name).openInput(name); return getDirectory(name).openInput(name, context);
} }
} }