You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2021/02/19 03:03:02 UTC
[lucene-solr] branch reference_impl_dev updated: @1353 Enable
metric history handler test for non Nightly.
This is an automated email from the ASF dual-hosted git repository.
markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/reference_impl_dev by this push:
new 8511118 @1353 Enable metric history handler test for non Nightly.
8511118 is described below
commit 85111188caf24933e945a52fa5211991b49e4be7
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Thu Feb 18 21:02:39 2021 -0600
@1353 Enable metric history handler test for non Nightly.
---
solr/cloud-dev/cloud.sh | 5 ++--
.../solr/handler/admin/MetricsHistoryHandler.java | 27 ++++++++++++----------
.../org/apache/solr/cloud/DeleteShardTest.java | 1 +
.../handler/admin/MetricsHistoryHandlerTest.java | 22 ++++++++++++++----
4 files changed, 36 insertions(+), 19 deletions(-)
diff --git a/solr/cloud-dev/cloud.sh b/solr/cloud-dev/cloud.sh
index e278225..e4db8c7 100755
--- a/solr/cloud-dev/cloud.sh
+++ b/solr/cloud-dev/cloud.sh
@@ -274,8 +274,9 @@ copyTarball() {
echo "baz"
pushd # back to original dir to properly resolve vcs working dir
echo "foobar:"$(pwd)
- if [[ ! -f $(ls "$VCS_WORK"/solr/packaging/build/distributions/solr-*.tgz) ]]; then
- echo "No solr tarball found try again with -r"; popd; exit 10;
+ tarball=$(ls "$VCS_WORK"/solr/packaging/build/distributions/solr-*.tgz)
+ if [[ ! -f "${tarball}" ]]; then
+ echo "No solr tarball found try again with -r location=${tarball}"; popd; exit 10;
fi
cp "$VCS_WORK"/solr/packaging/build/distributions/solr-*.tgz ${CLUSTER_WD}
pushd # back into cluster wd to unpack
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/MetricsHistoryHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/MetricsHistoryHandler.java
index 6707659..e675d0a 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/MetricsHistoryHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/MetricsHistoryHandler.java
@@ -239,6 +239,9 @@ public class MetricsHistoryHandler extends RequestHandlerBase implements Permiss
// check that .system exists
public void checkSystemCollection() {
+ if (this.overseer == null) {
+ return;
+ }
if (cloudManager != null) {
try {
if (cloudManager.isClosed() || Thread.interrupted()) {
@@ -312,7 +315,7 @@ public class MetricsHistoryHandler extends RequestHandlerBase implements Permiss
private void collectMetrics() {
- log.debug("-- collectMetrics");
+ if (log.isDebugEnabled()) log.debug("-- collectMetrics");
// Make sure we are a solr server thread, so we can use PKI auth, SOLR-12860
// This is a workaround since we could not instrument the ScheduledThreadPoolExecutor in ExecutorUtils
ExecutorUtil.setServerThreadFlag(true);
@@ -342,7 +345,7 @@ public class MetricsHistoryHandler extends RequestHandlerBase implements Permiss
if (Thread.interrupted()) {
return;
}
- log.debug("-- collecting local {}...", group);
+ if (log.isDebugEnabled()) log.debug("-- collecting local {}...", group);
ModifiableSolrParams params = new ModifiableSolrParams();
params.add(MetricsHandler.GROUP_PARAM, group.toString());
params.add(MetricsHandler.COMPACT_PARAM, "true");
@@ -357,7 +360,7 @@ public class MetricsHistoryHandler extends RequestHandlerBase implements Permiss
});
NamedList nl = (NamedList)result.get();
if (nl != null) {
- try (ParWork worker = new ParWork(this)) {
+ try (ParWork worker = new ParWork(this, false, false)) {
for (Iterator<Map.Entry<String, Object>> it = nl.iterator(); it.hasNext(); ) {
Map.Entry<String, Object> entry = it.next();
String key = entry.getKey();
@@ -416,7 +419,7 @@ public class MetricsHistoryHandler extends RequestHandlerBase implements Permiss
}
private void collectGlobalMetrics() {
- if (overseer != null && overseer.isClosed()) {
+ if (overseer == null || !overseer.getCoreContainer().getZkController().isOverseerLeader()) {
return;
}
Set<String> nodes = new HashSet<>(cloudManager.getClusterStateProvider().getLiveNodes());
@@ -752,14 +755,14 @@ public class MetricsHistoryHandler extends RequestHandlerBase implements Permiss
}
// when using in-memory DBs non-overseer node has no access to overseer DBs - in this case
// forward the request to Overseer leader if available
-// if (!factory.isPersistent()) {
-// String leader = getOverseerLeader();
-// if (leader != null && !amIOverseerLeader(leader)) {
-// // get & merge remote response
-// NamedList<Object> remoteRes = handleRemoteRequest(leader, req);
-// mergeRemoteRes(rsp, remoteRes);
-// }
-// }
+ // if (!factory.isPersistent()) {
+ // String leader = getOverseerLeader();
+ // if (leader != null && !amIOverseerLeader(leader)) {
+ // // get & merge remote response
+ // NamedList<Object> remoteRes = handleRemoteRequest(leader, req);
+ // mergeRemoteRes(rsp, remoteRes);
+ // }
+ // }
SimpleOrderedMap<Object> apiState = new SimpleOrderedMap<>();
apiState.add("enableReplicas", enableReplicas);
apiState.add("enableNodes", enableNodes);
diff --git a/solr/core/src/test/org/apache/solr/cloud/DeleteShardTest.java b/solr/core/src/test/org/apache/solr/cloud/DeleteShardTest.java
index 839ae40..457f7cb 100644
--- a/solr/core/src/test/org/apache/solr/cloud/DeleteShardTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/DeleteShardTest.java
@@ -41,6 +41,7 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+// MRM TODO: set slice state same way as efficient state updates
public class DeleteShardTest extends SolrCloudTestCase {
// TODO: Custom hash slice deletion test
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/MetricsHistoryHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/MetricsHistoryHandlerTest.java
index 603857d..cb93268 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/MetricsHistoryHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/MetricsHistoryHandlerTest.java
@@ -22,8 +22,8 @@ import javax.management.MBeanServerFactory;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.TimeUnit;
-import org.apache.lucene.util.LuceneTestCase;
import org.apache.solr.SolrTestUtil;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.cloud.SolrCloudManager;
@@ -32,6 +32,7 @@ import org.apache.solr.cloud.SolrCloudTestCase;
import org.apache.solr.common.params.CollectionAdminParams;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.util.Pair;
+import org.apache.solr.common.util.TimeOut;
import org.apache.solr.common.util.TimeSource;
import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.metrics.SolrMetricManager;
@@ -46,7 +47,6 @@ import org.rrd4j.core.RrdDb;
*
*/
@LogLevel("org.apache.solr.cloud=DEBUG")
-@LuceneTestCase.Nightly
public class MetricsHistoryHandlerTest extends SolrCloudTestCase {
private volatile static SolrCloudManager cloudManager;
@@ -64,15 +64,18 @@ public class MetricsHistoryHandlerTest extends SolrCloudTestCase {
@BeforeClass
public static void beforeClass() throws Exception {
System.setProperty("solr.disableDefaultJmxReporter", "false");
+ System.setProperty("solr.enableMetrics", "true");
+
TEST_MBEAN_SERVER = MBeanServerFactory.createMBeanServer();
simulated = TEST_NIGHTLY ? random().nextBoolean() : true;
Map<String, Object> args = new HashMap<>();
args.put(MetricsHistoryHandler.SYNC_PERIOD_PROP, 1);
args.put(MetricsHistoryHandler.COLLECT_PERIOD_PROP, 1);
+ args.put(MetricsHistoryHandler.ENABLE_NODES_PROP, "true");
configureCluster(1)
.addConfig("conf", SolrTestUtil.configset("cloud-minimal"))
.configure();
-
+
cloudManager = cluster.getJettySolrRunner(0).getCoreContainer().getZkController().getSolrCloudManager();
metricManager = cluster.getJettySolrRunner(0).getCoreContainer().getMetricManager();
solrClient = cluster.getSolrClient();
@@ -81,6 +84,7 @@ public class MetricsHistoryHandlerTest extends SolrCloudTestCase {
null);
SolrMetricsContext solrMetricsContext = new SolrMetricsContext(metricManager, SolrInfoBean.Group.node.toString(), "");
handler.initializeMetrics(solrMetricsContext, CommonParams.METRICS_HISTORY_PATH);
+ solrMetricsContext.getMetricsSnapshot();
SPEED = 1;
timeSource = cloudManager.getTimeSource();
@@ -109,10 +113,18 @@ public class MetricsHistoryHandlerTest extends SolrCloudTestCase {
@Test
//Commented 14-Oct-2018 @BadApple(bugUrl="https://issues.apache.org/jira/browse/SOLR-12028") // added 15-Sep-2018
public void testBasic() throws Exception {
- timeSource.sleep(10000);
List<Pair<String, Long>> list = handler.getFactory().list(100);
+
+ if (list.size() == 0) {
+ TimeOut timeout = new TimeOut(1000, TimeUnit.MILLISECONDS, TimeSource.NANO_TIME);
+ while (!timeout.hasTimedOut() && list.size() == 0) {
+ Thread.sleep(10);
+ list = handler.getFactory().list(100);
+ }
+ }
// solr.jvm, solr.node, solr.collection..system
- assertEquals(list.toString(), 3, list.size());
+ // Ahem - replicas are disabled by default, nodes too, though I enabled - solr.jvm is not populated, we make this request handler ourselves.
+ assertEquals(list.toString(), 1, list.size());
for (Pair<String, Long> p : list) {
RrdDb db = RrdDb.getBuilder().setPath(MetricsHistoryHandler.URI_PREFIX + p.first()).setReadOnly(true).setBackendFactory( handler.getFactory()).setUsePool(true).build();
int dsCount = db.getDsCount();