You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by cp...@apache.org on 2017/07/04 13:13:39 UTC
[1/2] lucene-solr:master: SOLR-10957: Changed SolrCoreParser.init to
use the resource loader from getSchema() instead of the resource loader from
getCore().
Repository: lucene-solr
Updated Branches:
refs/heads/master bc37e8b4c -> db71c5615
SOLR-10957: Changed SolrCoreParser.init to use the resource loader from getSchema() instead of the resource loader from getCore().
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/db71c561
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/db71c561
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/db71c561
Branch: refs/heads/master
Commit: db71c5615ac2f150e6e0b9f8e4126a0d46a29ef6
Parents: d3c67cf
Author: Christine Poerschke <cp...@apache.org>
Authored: Tue Jul 4 12:02:40 2017 +0100
Committer: Christine Poerschke <cp...@apache.org>
Committed: Tue Jul 4 14:13:00 2017 +0100
----------------------------------------------------------------------
solr/CHANGES.txt | 3 +++
solr/core/src/java/org/apache/solr/search/SolrCoreParser.java | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/db71c561/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 8c5f2c1..1517163 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -74,6 +74,9 @@ Other Changes
* SOLR-10827: Factor out abstract FilteringSolrMetricReporter class. (Christine Poerschke)
+* SOLR-10957: Changed SolrCoreParser.init to use the resource loader from getSchema()
+ instead of the resource loader from getCore(). (Christine Poerschke)
+
================== 7.0.0 ==================
Versions of Major Components
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/db71c561/solr/core/src/java/org/apache/solr/search/SolrCoreParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/SolrCoreParser.java b/solr/core/src/java/org/apache/solr/search/SolrCoreParser.java
index 0a2cf58..a5c2b03 100755
--- a/solr/core/src/java/org/apache/solr/search/SolrCoreParser.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrCoreParser.java
@@ -57,7 +57,7 @@ public class SolrCoreParser extends CoreParser implements NamedListInitializedPl
if (req == null) {
loader = new SolrResourceLoader();
} else {
- loader = req.getCore().getResourceLoader();
+ loader = req.getSchema().getResourceLoader();
}
final Iterable<Map.Entry<String,Object>> args = initArgs;
[2/2] lucene-solr:master: SOLR-10827: Factor out abstract
FilteringSolrMetricReporter class.
Posted by cp...@apache.org.
SOLR-10827: Factor out abstract FilteringSolrMetricReporter class.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/d3c67cf5
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/d3c67cf5
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/d3c67cf5
Branch: refs/heads/master
Commit: d3c67cf5e4c4f1809e7c7ff921c55562fa6cb13f
Parents: bc37e8b
Author: Christine Poerschke <cp...@apache.org>
Authored: Tue Jul 4 11:18:48 2017 +0100
Committer: Christine Poerschke <cp...@apache.org>
Committed: Tue Jul 4 14:13:00 2017 +0100
----------------------------------------------------------------------
solr/CHANGES.txt | 2 +-
.../metrics/FilteringSolrMetricReporter.java | 59 ++++++++++++++++++++
.../metrics/reporters/SolrGangliaReporter.java | 34 ++---------
.../metrics/reporters/SolrGraphiteReporter.java | 34 ++---------
.../solr/metrics/reporters/SolrJmxReporter.java | 51 +++++++----------
.../metrics/reporters/SolrSlf4jReporter.java | 34 ++---------
.../reporters/solr/SolrShardReporter.java | 26 ++++-----
7 files changed, 101 insertions(+), 139 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d3c67cf5/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 403b6cd..8c5f2c1 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -72,7 +72,7 @@ Optimizations
Other Changes
----------------------
-(No Changes)
+* SOLR-10827: Factor out abstract FilteringSolrMetricReporter class. (Christine Poerschke)
================== 7.0.0 ==================
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d3c67cf5/solr/core/src/java/org/apache/solr/metrics/FilteringSolrMetricReporter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/FilteringSolrMetricReporter.java b/solr/core/src/java/org/apache/solr/metrics/FilteringSolrMetricReporter.java
new file mode 100644
index 0000000..5f29f8e
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/metrics/FilteringSolrMetricReporter.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.solr.metrics;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.codahale.metrics.MetricFilter;
+
+public abstract class FilteringSolrMetricReporter extends SolrMetricReporter {
+
+ protected List<String> filters = new ArrayList<>();
+
+ public FilteringSolrMetricReporter(SolrMetricManager metricManager, String registryName) {
+ super(metricManager, registryName);
+ }
+
+ public void setFilter(List<String> filters) {
+ if (filters == null || filters.isEmpty()) {
+ return;
+ }
+ this.filters.addAll(filters);
+ }
+
+ public void setFilter(String filter) {
+ if (filter != null && !filter.isEmpty()) {
+ this.filters.add(filter);
+ }
+ }
+
+ /**
+ * Report only metrics with names matching any of the prefix filters.
+ * If the filters list is empty then all names will match.
+ */
+ protected MetricFilter newMetricFilter() {
+ final MetricFilter filter;
+ if (!filters.isEmpty()) {
+ filter = new SolrMetricManager.PrefixFilter(filters);
+ } else {
+ filter = MetricFilter.ALL;
+ }
+ return filter;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d3c67cf5/solr/core/src/java/org/apache/solr/metrics/reporters/SolrGangliaReporter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/reporters/SolrGangliaReporter.java b/solr/core/src/java/org/apache/solr/metrics/reporters/SolrGangliaReporter.java
index bf95ef4..8d77a02 100644
--- a/solr/core/src/java/org/apache/solr/metrics/reporters/SolrGangliaReporter.java
+++ b/solr/core/src/java/org/apache/solr/metrics/reporters/SolrGangliaReporter.java
@@ -17,26 +17,24 @@
package org.apache.solr.metrics.reporters;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
import java.util.concurrent.TimeUnit;
import com.codahale.metrics.MetricFilter;
import com.codahale.metrics.ganglia.GangliaReporter;
import info.ganglia.gmetric4j.gmetric.GMetric;
+
+import org.apache.solr.metrics.FilteringSolrMetricReporter;
import org.apache.solr.metrics.SolrMetricManager;
-import org.apache.solr.metrics.SolrMetricReporter;
/**
*
*/
-public class SolrGangliaReporter extends SolrMetricReporter {
+public class SolrGangliaReporter extends FilteringSolrMetricReporter {
private String host = null;
private int port = -1;
private boolean multicast;
private String instancePrefix = null;
- private List<String> filters = new ArrayList<>();
private boolean testing;
private GangliaReporter reporter;
@@ -68,25 +66,6 @@ public class SolrGangliaReporter extends SolrMetricReporter {
this.instancePrefix = prefix;
}
- /**
- * Report only metrics with names matching any of the prefix filters.
- * @param filters list of 0 or more prefixes. If the list is empty then
- * all names will match.
- */
- public void setFilter(List<String> filters) {
- if (filters == null || filters.isEmpty()) {
- return;
- }
- this.filters.addAll(filters);
- }
-
- // due to vagaries of SolrPluginUtils.invokeSetters we need this too
- public void setFilter(String filter) {
- if (filter != null && !filter.isEmpty()) {
- this.filters.add(filter);
- }
- }
-
public void setMulticast(boolean multicast) {
this.multicast = multicast;
}
@@ -141,12 +120,7 @@ public class SolrGangliaReporter extends SolrMetricReporter {
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.prefixedWith(instancePrefix);
- MetricFilter filter;
- if (!filters.isEmpty()) {
- filter = new SolrMetricManager.PrefixFilter(filters);
- } else {
- filter = MetricFilter.ALL;
- }
+ final MetricFilter filter = newMetricFilter();
builder = builder.filter(filter);
reporter = builder.build(ganglia);
reporter.start(period, TimeUnit.SECONDS);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d3c67cf5/solr/core/src/java/org/apache/solr/metrics/reporters/SolrGraphiteReporter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/reporters/SolrGraphiteReporter.java b/solr/core/src/java/org/apache/solr/metrics/reporters/SolrGraphiteReporter.java
index c097718..68111d5 100644
--- a/solr/core/src/java/org/apache/solr/metrics/reporters/SolrGraphiteReporter.java
+++ b/solr/core/src/java/org/apache/solr/metrics/reporters/SolrGraphiteReporter.java
@@ -17,8 +17,6 @@
package org.apache.solr.metrics.reporters;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
import java.util.concurrent.TimeUnit;
import com.codahale.metrics.MetricFilter;
@@ -26,19 +24,19 @@ import com.codahale.metrics.graphite.Graphite;
import com.codahale.metrics.graphite.GraphiteReporter;
import com.codahale.metrics.graphite.GraphiteSender;
import com.codahale.metrics.graphite.PickledGraphite;
+
+import org.apache.solr.metrics.FilteringSolrMetricReporter;
import org.apache.solr.metrics.SolrMetricManager;
-import org.apache.solr.metrics.SolrMetricReporter;
/**
* Metrics reporter that wraps {@link com.codahale.metrics.graphite.GraphiteReporter}.
*/
-public class SolrGraphiteReporter extends SolrMetricReporter {
+public class SolrGraphiteReporter extends FilteringSolrMetricReporter {
private String host = null;
private int port = -1;
private boolean pickled = false;
private String instancePrefix = null;
- private List<String> filters = new ArrayList<>();
private GraphiteReporter reporter = null;
private static final ReporterClientCache<GraphiteSender> serviceRegistry = new ReporterClientCache<>();
@@ -66,25 +64,6 @@ public class SolrGraphiteReporter extends SolrMetricReporter {
this.instancePrefix = prefix;
}
- /**
- * Report only metrics with names matching any of the prefix filters.
- * @param filters list of 0 or more prefixes. If the list is empty then
- * all names will match.
- */
- public void setFilter(List<String> filters) {
- if (filters == null || filters.isEmpty()) {
- return;
- }
- this.filters.addAll(filters);
- }
-
- public void setFilter(String filter) {
- if (filter != null && !filter.isEmpty()) {
- this.filters.add(filter);
- }
- }
-
-
public void setPickled(boolean pickled) {
this.pickled = pickled;
}
@@ -113,12 +92,7 @@ public class SolrGraphiteReporter extends SolrMetricReporter {
.prefixedWith(instancePrefix)
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS);
- MetricFilter filter;
- if (!filters.isEmpty()) {
- filter = new SolrMetricManager.PrefixFilter(filters);
- } else {
- filter = MetricFilter.ALL;
- }
+ final MetricFilter filter = newMetricFilter();
builder = builder.filter(filter);
reporter = builder.build(graphite);
reporter.start(period, TimeUnit.SECONDS);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d3c67cf5/solr/core/src/java/org/apache/solr/metrics/reporters/SolrJmxReporter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/reporters/SolrJmxReporter.java b/solr/core/src/java/org/apache/solr/metrics/reporters/SolrJmxReporter.java
index 170dd33..b7504b8 100644
--- a/solr/core/src/java/org/apache/solr/metrics/reporters/SolrJmxReporter.java
+++ b/solr/core/src/java/org/apache/solr/metrics/reporters/SolrJmxReporter.java
@@ -22,9 +22,7 @@ import javax.management.ObjectInstance;
import javax.management.ObjectName;
import java.lang.invoke.MethodHandles;
-import java.util.ArrayList;
import java.util.HashSet;
-import java.util.List;
import java.util.Locale;
import java.util.Set;
@@ -33,6 +31,8 @@ import com.codahale.metrics.JmxReporter;
import com.codahale.metrics.MetricFilter;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.MetricRegistryListener;
+
+import org.apache.solr.metrics.FilteringSolrMetricReporter;
import org.apache.solr.metrics.MetricsMap;
import org.apache.solr.metrics.SolrMetricManager;
import org.apache.solr.metrics.SolrMetricReporter;
@@ -46,7 +46,7 @@ import org.slf4j.LoggerFactory;
* <p>NOTE: {@link JmxReporter} that this class uses exports only newly added metrics (it doesn't
* process already existing metrics in a registry)</p>
*/
-public class SolrJmxReporter extends SolrMetricReporter {
+public class SolrJmxReporter extends FilteringSolrMetricReporter {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@@ -56,7 +56,6 @@ public class SolrJmxReporter extends SolrMetricReporter {
private String agentId;
private String serviceUrl;
private String rootName;
- private List<String> filters = new ArrayList<>();
private JmxReporter reporter;
private MetricRegistry registry;
@@ -103,16 +102,7 @@ public class SolrJmxReporter extends SolrMetricReporter {
}
JmxObjectNameFactory jmxObjectNameFactory = new JmxObjectNameFactory(pluginInfo.name, fullDomain);
registry = metricManager.registry(registryName);
- // filter out MetricsMap gauges - we have a better way of handling them
- MetricFilter mmFilter = (name, metric) -> !(metric instanceof MetricsMap);
- MetricFilter filter;
- if (filters.isEmpty()) {
- filter = mmFilter;
- } else {
- // apply also prefix filters
- SolrMetricManager.PrefixFilter prefixFilter = new SolrMetricManager.PrefixFilter(filters);
- filter = new SolrMetricManager.AndFilter(prefixFilter, mmFilter);
- }
+ final MetricFilter filter = newMetricFilter();
reporter = JmxReporter.forRegistry(registry)
.registerWith(mBeanServer)
@@ -128,6 +118,21 @@ public class SolrJmxReporter extends SolrMetricReporter {
log.info("JMX monitoring for '" + fullDomain + "' (registry '" + registryName + "') enabled at server: " + mBeanServer);
}
+ @Override
+ protected MetricFilter newMetricFilter() {
+ // filter out MetricsMap gauges - we have a better way of handling them
+ final MetricFilter mmFilter = (name, metric) -> !(metric instanceof MetricsMap);
+ final MetricFilter filter;
+ if (filters.isEmpty()) {
+ filter = mmFilter;
+ } else {
+ // apply also prefix filters
+ SolrMetricManager.PrefixFilter prefixFilter = new SolrMetricManager.PrefixFilter(filters);
+ filter = new SolrMetricManager.AndFilter(prefixFilter, mmFilter);
+ }
+ return filter;
+ }
+
/**
* Stops the reporter from publishing metrics.
*/
@@ -223,24 +228,6 @@ public class SolrJmxReporter extends SolrMetricReporter {
}
/**
- * Report only metrics with names matching any of the prefix filters.
- * @param filters list of 0 or more prefixes. If the list is empty then
- * all names will match.
- */
- public void setFilter(List<String> filters) {
- if (filters == null || filters.isEmpty()) {
- return;
- }
- this.filters.addAll(filters);
- }
-
- public void setFilter(String filter) {
- if (filter != null && !filter.isEmpty()) {
- this.filters.add(filter);
- }
- }
-
- /**
* Return the reporter's MBeanServer.
*
* @return the reporter's MBeanServer
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d3c67cf5/solr/core/src/java/org/apache/solr/metrics/reporters/SolrSlf4jReporter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/reporters/SolrSlf4jReporter.java b/solr/core/src/java/org/apache/solr/metrics/reporters/SolrSlf4jReporter.java
index e2c6015..930bd31 100644
--- a/solr/core/src/java/org/apache/solr/metrics/reporters/SolrSlf4jReporter.java
+++ b/solr/core/src/java/org/apache/solr/metrics/reporters/SolrSlf4jReporter.java
@@ -18,14 +18,13 @@ package org.apache.solr.metrics.reporters;
import java.io.IOException;
import java.lang.invoke.MethodHandles;
-import java.util.ArrayList;
-import java.util.List;
import java.util.concurrent.TimeUnit;
import com.codahale.metrics.MetricFilter;
import com.codahale.metrics.Slf4jReporter;
+
+import org.apache.solr.metrics.FilteringSolrMetricReporter;
import org.apache.solr.metrics.SolrMetricManager;
-import org.apache.solr.metrics.SolrMetricReporter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -42,14 +41,13 @@ import org.slf4j.LoggerFactory;
* metrics group, eg. <code>solr.jvm</code></li>
* </ul>
*/
-public class SolrSlf4jReporter extends SolrMetricReporter {
+public class SolrSlf4jReporter extends FilteringSolrMetricReporter {
@SuppressWarnings("unused") // we need this to pass validate-source-patterns
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private String instancePrefix = null;
private String logger = null;
- private List<String> filters = new ArrayList<>();
private Slf4jReporter reporter;
/**
@@ -67,25 +65,6 @@ public class SolrSlf4jReporter extends SolrMetricReporter {
this.instancePrefix = prefix;
}
- /**
- * Report only metrics with names matching any of the prefix filters.
- * @param filters list of 0 or more prefixes. If the list is empty then
- * all names will match.
- */
- public void setFilter(List<String> filters) {
- if (filters == null || filters.isEmpty()) {
- return;
- }
- this.filters.addAll(filters);
- }
-
- public void setFilter(String filter) {
- if (filter != null && !filter.isEmpty()) {
- this.filters.add(filter);
- }
- }
-
-
public void setLogger(String logger) {
this.logger = logger;
}
@@ -102,12 +81,7 @@ public class SolrSlf4jReporter extends SolrMetricReporter {
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS);
- MetricFilter filter;
- if (!filters.isEmpty()) {
- filter = new SolrMetricManager.PrefixFilter(filters);
- } else {
- filter = MetricFilter.ALL;
- }
+ final MetricFilter filter = newMetricFilter();
builder = builder.filter(filter);
if (logger == null || logger.isEmpty()) {
// construct logger name from Group
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d3c67cf5/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrShardReporter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrShardReporter.java b/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrShardReporter.java
index e9710b8..086c812 100644
--- a/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrShardReporter.java
+++ b/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrShardReporter.java
@@ -30,11 +30,13 @@ import org.apache.solr.common.cloud.DocCollection;
import org.apache.solr.common.cloud.Replica;
import org.apache.solr.core.SolrCore;
import org.apache.solr.handler.admin.MetricsCollectorHandler;
+import org.apache.solr.metrics.FilteringSolrMetricReporter;
import org.apache.solr.metrics.SolrMetricManager;
-import org.apache.solr.metrics.SolrMetricReporter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.codahale.metrics.MetricFilter;
+
/**
* This class reports selected metrics from replicas to shard leader.
* <p>The following configuration properties are supported:</p>
@@ -56,7 +58,7 @@ import org.slf4j.LoggerFactory;
* </reporter>
* </pre>
*/
-public class SolrShardReporter extends SolrMetricReporter {
+public class SolrShardReporter extends FilteringSolrMetricReporter {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
public static final List<String> DEFAULT_FILTERS = new ArrayList(){{
@@ -70,7 +72,6 @@ public class SolrShardReporter extends SolrMetricReporter {
}};
private String handler = MetricsCollectorHandler.HANDLER_PATH;
- private List<String> filters = new ArrayList<>();
private SolrReporter reporter;
@@ -89,19 +90,6 @@ public class SolrShardReporter extends SolrMetricReporter {
this.handler = handler;
}
- public void setFilter(List<String> filterConfig) {
- if (filterConfig == null || filterConfig.isEmpty()) {
- return;
- }
- filters.addAll(filterConfig);
- }
-
- public void setFilter(String filter) {
- if (filter != null && !filter.isEmpty()) {
- this.filters.add(filter);
- }
- }
-
@Override
protected void doInit() {
if (filters.isEmpty()) {
@@ -111,6 +99,12 @@ public class SolrShardReporter extends SolrMetricReporter {
}
@Override
+ protected MetricFilter newMetricFilter() {
+ // unsupported here since setCore(SolrCore) directly uses the this.filters
+ throw new UnsupportedOperationException(getClass().getCanonicalName()+".newMetricFilter() is not supported");
+ }
+
+ @Override
protected void validate() throws IllegalStateException {
// (period < 1) means "don't start reporter" and so no (period > 0) validation needed
}