SOLR-3990: Moves getIndexSize() from ReplicationHandler to SolrCore

This commit is contained in:
Dennis Gove 2017-01-04 12:31:14 -05:00
parent eb2a8ba2ee
commit bd39ae9c9d
3 changed files with 23 additions and 18 deletions

View File

@ -386,6 +386,7 @@ Other Changes
* SOLR-9915: PeerSync alreadyInSync check is not backwards compatible and results in full replication during a rolling restart * SOLR-9915: PeerSync alreadyInSync check is not backwards compatible and results in full replication during a rolling restart
(Tim Owen via noble) (Tim Owen via noble)
* SOLR-3990: Moves getIndexSize() from ReplicationHandler to SolrCore (Shawn Heisey)
================== 6.3.0 ================== ================== 6.3.0 ==================

View File

@ -146,6 +146,7 @@ import org.apache.solr.update.processor.UpdateRequestProcessorChain;
import org.apache.solr.update.processor.UpdateRequestProcessorChain.ProcessorInfo; import org.apache.solr.update.processor.UpdateRequestProcessorChain.ProcessorInfo;
import org.apache.solr.update.processor.UpdateRequestProcessorFactory; import org.apache.solr.update.processor.UpdateRequestProcessorFactory;
import org.apache.solr.util.DefaultSolrThreadFactory; import org.apache.solr.util.DefaultSolrThreadFactory;
import org.apache.solr.util.NumberUtils;
import org.apache.solr.util.PropertiesInputStream; import org.apache.solr.util.PropertiesInputStream;
import org.apache.solr.util.RefCounted; import org.apache.solr.util.RefCounted;
import org.apache.solr.util.plugin.NamedListInitializedPlugin; import org.apache.solr.util.plugin.NamedListInitializedPlugin;
@ -392,6 +393,22 @@ public final class SolrCore implements SolrInfoMBean, Closeable {
return indexReaderFactory; return indexReaderFactory;
} }
public long getIndexSize() {
Directory dir;
long size = 0;
try {
dir = directoryFactory.get(getIndexDir(), DirContext.DEFAULT, solrConfig.indexConfig.lockType);
try {
size = DirectoryFactory.sizeOfDirectory(dir);
} finally {
directoryFactory.release(dir);
}
} catch (IOException e) {
SolrException.log(log, "IO error while trying to get the size of the Directory", e);
}
return size;
}
@Override @Override
public String getName() { public String getName() {
return name; return name;
@ -2653,6 +2670,9 @@ public final class SolrCore implements SolrInfoMBean, Closeable {
lst.add("refCount", getOpenCount()); lst.add("refCount", getOpenCount());
lst.add("instanceDir", resourceLoader.getInstancePath()); lst.add("instanceDir", resourceLoader.getInstancePath());
lst.add("indexDir", getIndexDir()); lst.add("indexDir", getIndexDir());
long size = getIndexSize();
lst.add("sizeInBytes", size);
lst.add("size", NumberUtils.readableSize(size));
CoreDescriptor cd = getCoreDescriptor(); CoreDescriptor cd = getCoreDescriptor();
if (cd != null) { if (cd != null) {

View File

@ -813,22 +813,6 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
numTimesReplicated++; numTimesReplicated++;
} }
long getIndexSize() {
Directory dir;
long size = 0;
try {
dir = core.getDirectoryFactory().get(core.getIndexDir(), DirContext.DEFAULT, core.getSolrConfig().indexConfig.lockType);
try {
size = core.getDirectoryFactory().size(dir);
} finally {
core.getDirectoryFactory().release(dir);
}
} catch (IOException e) {
SolrException.log(LOG, "IO error while trying to get the size of the Directory", e);
}
return size;
}
@Override @Override
public String getDescription() { public String getDescription() {
return "ReplicationHandler provides replication of index and configuration files from Master to Slaves"; return "ReplicationHandler provides replication of index and configuration files from Master to Slaves";
@ -855,7 +839,7 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
public NamedList getStatistics() { public NamedList getStatistics() {
NamedList list = super.getStatistics(); NamedList list = super.getStatistics();
if (core != null) { if (core != null) {
list.add("indexSize", NumberUtils.readableSize(getIndexSize())); list.add("indexSize", NumberUtils.readableSize(core.getIndexSize()));
CommitVersionInfo vInfo = (core != null && !core.isClosed()) ? getIndexVersion(): null; CommitVersionInfo vInfo = (core != null && !core.isClosed()) ? getIndexVersion(): null;
list.add("indexVersion", null == vInfo ? 0 : vInfo.version); list.add("indexVersion", null == vInfo ? 0 : vInfo.version);
list.add(GENERATION, null == vInfo ? 0 : vInfo.generation); list.add(GENERATION, null == vInfo ? 0 : vInfo.generation);
@ -907,7 +891,7 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
NamedList<Object> master = new SimpleOrderedMap<>(); NamedList<Object> master = new SimpleOrderedMap<>();
NamedList<Object> slave = new SimpleOrderedMap<>(); NamedList<Object> slave = new SimpleOrderedMap<>();
details.add("indexSize", NumberUtils.readableSize(getIndexSize())); details.add("indexSize", NumberUtils.readableSize(core.getIndexSize()));
details.add("indexPath", core.getIndexDir()); details.add("indexPath", core.getIndexDir());
details.add(CMD_SHOW_COMMITS, getCommits()); details.add(CMD_SHOW_COMMITS, getCommits());
details.add("isMaster", String.valueOf(isMaster)); details.add("isMaster", String.valueOf(isMaster));