refactor node data location of index and shard into common code
This commit is contained in:
parent
6804c02e97
commit
6e0180db6a
|
@ -25,6 +25,8 @@ import org.elasticsearch.ElasticSearchIllegalStateException;
|
|||
import org.elasticsearch.common.component.AbstractComponent;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.Index;
|
||||
import org.elasticsearch.index.shard.ShardId;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
@ -98,6 +100,14 @@ public class NodeEnvironment extends AbstractComponent {
|
|||
return nodeFile;
|
||||
}
|
||||
|
||||
public File indexLocation(Index index) {
|
||||
return new File(new File(nodeDataLocation(), "indices"), index.name());
|
||||
}
|
||||
|
||||
public File shardLocation(ShardId shardId) {
|
||||
return new File(indexLocation(shardId.index()), Integer.toString(shardId.id()));
|
||||
}
|
||||
|
||||
public void close() {
|
||||
if (lock != null) {
|
||||
try {
|
||||
|
|
|
@ -38,12 +38,15 @@ import java.io.IOException;
|
|||
*/
|
||||
public abstract class FsIndexStore extends AbstractIndexStore {
|
||||
|
||||
private final NodeEnvironment nodeEnv;
|
||||
|
||||
private final File location;
|
||||
|
||||
public FsIndexStore(Index index, @IndexSettings Settings indexSettings, IndexService indexService, NodeEnvironment nodeEnv) {
|
||||
super(index, indexSettings, indexService);
|
||||
this.nodeEnv = nodeEnv;
|
||||
if (nodeEnv.hasNodeFile()) {
|
||||
this.location = new File(new File(nodeEnv.nodeDataLocation(), "indices"), index.name());
|
||||
this.location = nodeEnv.indexLocation(index);
|
||||
} else {
|
||||
this.location = null;
|
||||
}
|
||||
|
@ -86,7 +89,7 @@ public abstract class FsIndexStore extends AbstractIndexStore {
|
|||
}
|
||||
|
||||
public File shardLocation(ShardId shardId) {
|
||||
return new File(location, Integer.toString(shardId.id()));
|
||||
return nodeEnv.shardLocation(shardId);
|
||||
}
|
||||
|
||||
public File shardIndexLocation(ShardId shardId) {
|
||||
|
|
|
@ -60,7 +60,7 @@ public class FsTranslog extends AbstractIndexShardComponent implements Translog
|
|||
|
||||
@Inject public FsTranslog(ShardId shardId, @IndexSettings Settings indexSettings, NodeEnvironment nodeEnv) {
|
||||
super(shardId, indexSettings);
|
||||
this.location = new File(new File(new File(new File(nodeEnv.nodeDataLocation(), "indices"), shardId.index().name()), Integer.toString(shardId.id())), "translog");
|
||||
this.location = new File(nodeEnv.shardLocation(shardId), "translog");
|
||||
this.location.mkdirs();
|
||||
this.useStream = componentSettings.getAsBoolean("use_stream", false);
|
||||
}
|
||||
|
|
|
@ -153,7 +153,7 @@ public class TransportNodesListShardStoreMetaData extends TransportNodesOperatio
|
|||
if (!storeType.contains("fs")) {
|
||||
return new StoreFilesMetaData(false, shardId, ImmutableMap.<String, StoreFileMetaData>of());
|
||||
}
|
||||
File indexFile = new File(new File(new File(new File(nodeEnv.nodeDataLocation(), "indices"), shardId.index().name()), Integer.toString(shardId.id())), "index");
|
||||
File indexFile = new File(nodeEnv.shardLocation(shardId), "index");
|
||||
if (!indexFile.exists()) {
|
||||
return new StoreFilesMetaData(false, shardId, ImmutableMap.<String, StoreFileMetaData>of());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue