You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2017/08/09 14:07:57 UTC
lucene-solr:master: SOLR-11061: Add a spins metric for data directory
paths.
Repository: lucene-solr
Updated Branches:
refs/heads/master 5a36775d6 -> d4b478294
SOLR-11061: Add a spins metric for data directory paths.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/d4b47829
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/d4b47829
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/d4b47829
Branch: refs/heads/master
Commit: d4b4782943f79787d0931b24b839e9cc99e81c20
Parents: 5a36775
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Wed Aug 9 16:07:35 2017 +0200
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Wed Aug 9 16:07:35 2017 +0200
----------------------------------------------------------------------
solr/CHANGES.txt | 2 ++
.../java/org/apache/solr/core/CoreContainer.java | 18 ++++++++++++++++++
.../src/java/org/apache/solr/core/SolrCore.java | 9 +++++++++
.../solr/metrics/SolrMetricsIntegrationTest.java | 12 ++++++++++++
4 files changed, 41 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d4b47829/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 9e401c2..6962e2f 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -134,6 +134,8 @@ Other Changes
* SOLR-11090: Add Replica.getProperty accessor. (Christine Poerschke)
+* SOLR-11061: Add a spins metric for data directory paths. (ab)
+
================== 7.0.0 ==================
Versions of Major Components
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d4b47829/solr/core/src/java/org/apache/solr/core/CoreContainer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index 6013b28..bf24db8 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -568,12 +568,30 @@ public class CoreContainer {
true, "usableSpace", SolrInfoBean.Category.CONTAINER.toString(), "fs");
metricManager.registerGauge(null, registryName, () -> dataHome.toAbsolutePath().toString(),
true, "path", SolrInfoBean.Category.CONTAINER.toString(), "fs");
+ metricManager.registerGauge(null, registryName, () -> {
+ try {
+ return org.apache.lucene.util.IOUtils.spins(dataHome.toAbsolutePath());
+ } catch (IOException e) {
+ // default to spinning
+ return true;
+ }
+ },
+ true, "spins", SolrInfoBean.Category.CONTAINER.toString(), "fs");
metricManager.registerGauge(null, registryName, () -> cfg.getCoreRootDirectory().toFile().getTotalSpace(),
true, "totalSpace", SolrInfoBean.Category.CONTAINER.toString(), "fs", "coreRoot");
metricManager.registerGauge(null, registryName, () -> cfg.getCoreRootDirectory().toFile().getUsableSpace(),
true, "usableSpace", SolrInfoBean.Category.CONTAINER.toString(), "fs", "coreRoot");
metricManager.registerGauge(null, registryName, () -> cfg.getCoreRootDirectory().toAbsolutePath().toString(),
true, "path", SolrInfoBean.Category.CONTAINER.toString(), "fs", "coreRoot");
+ metricManager.registerGauge(null, registryName, () -> {
+ try {
+ return org.apache.lucene.util.IOUtils.spins(cfg.getCoreRootDirectory().toAbsolutePath());
+ } catch (IOException e) {
+ // default to spinning
+ return true;
+ }
+ },
+ true, "spins", SolrInfoBean.Category.CONTAINER.toString(), "fs", "coreRoot");
// add version information
metricManager.registerGauge(null, registryName, () -> this.getClass().getPackage().getSpecificationVersion(),
true, "specification", SolrInfoBean.Category.CONTAINER.toString(), "version");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d4b47829/solr/core/src/java/org/apache/solr/core/SolrCore.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index cc6a9c2..e8f1358 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -1162,6 +1162,15 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
File dataDirFile = dataDirPath.toFile();
manager.registerGauge(this, registry, () -> dataDirFile.getTotalSpace(), true, "totalSpace", Category.CORE.toString(), "fs");
manager.registerGauge(this, registry, () -> dataDirFile.getUsableSpace(), true, "usableSpace", Category.CORE.toString(), "fs");
+ manager.registerGauge(this, registry, () -> dataDirPath.toAbsolutePath().toString(), true, "fs", "dataDir");
+ manager.registerGauge(this, registry, () -> {
+ try {
+ return org.apache.lucene.util.IOUtils.spins(dataDirPath.toAbsolutePath());
+ } catch (IOException e) {
+ // default to spinning
+ return true;
+ }
+ }, true, "spins", Category.CORE.toString(), "fs", "dataDir");
}
private void checkVersionFieldExistsInSchema(IndexSchema schema, CoreDescriptor coreDescriptor) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d4b47829/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java b/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java
index 1a8eda8..1184402 100644
--- a/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java
+++ b/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java
@@ -27,6 +27,7 @@ import com.codahale.metrics.Metric;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
import org.apache.commons.io.FileUtils;
+import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.TestUtil;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.core.CoreContainer;
@@ -166,12 +167,23 @@ public class SolrMetricsIntegrationTest extends SolrTestCaseJ4 {
assertTrue(metrics.containsKey("CONTAINER.fs.totalSpace"));
assertTrue(metrics.containsKey("CONTAINER.fs.usableSpace"));
assertTrue(metrics.containsKey("CONTAINER.fs.path"));
+ assertTrue(metrics.containsKey("CONTAINER.fs.spins"));
assertTrue(metrics.containsKey("CONTAINER.fs.coreRoot.totalSpace"));
assertTrue(metrics.containsKey("CONTAINER.fs.coreRoot.usableSpace"));
assertTrue(metrics.containsKey("CONTAINER.fs.coreRoot.path"));
+ assertTrue(metrics.containsKey("CONTAINER.fs.coreRoot.spins"));
assertTrue(metrics.containsKey("CONTAINER.version.specification"));
assertTrue(metrics.containsKey("CONTAINER.version.implementation"));
Gauge<?> g = (Gauge<?>)metrics.get("CONTAINER.fs.path");
assertEquals(g.getValue(), cc.getResourceLoader().getInstancePath().toAbsolutePath().toString());
+ boolean spins = IOUtils.spins(cc.getCoreRootDirectory());
+ g = (Gauge<?>)metrics.get("CONTAINER.fs.coreRoot.spins");
+ g = (Gauge<?>)metrics.get("CONTAINER.fs.coreRoot.spins");
+ assertEquals(spins, g.getValue());
+ if (cc.getConfig().getSolrDataHome() != null) {
+ spins = IOUtils.spins(cc.getConfig().getSolrDataHome());
+ g = (Gauge<?>)metrics.get("CONTAINER.fs.spins");
+ assertEquals(spins, g.getValue());
+ }
}
}