You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by tf...@apache.org on 2020/08/28 23:12:10 UTC
[lucene-solr] branch branch_8x updated: SOLR-14774: Create
HealthCheckHandler in CoreContainer (#1774)
This is an automated email from the ASF dual-hosted git repository.
tflobbe pushed a commit to branch branch_8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/branch_8x by this push:
new 1dfd899 SOLR-14774: Create HealthCheckHandler in CoreContainer (#1774)
1dfd899 is described below
commit 1dfd899a02526e2475a94dc448b212a65be65871
Author: Tomas Fernandez Lobbe <tf...@apache.org>
AuthorDate: Fri Aug 28 15:59:56 2020 -0700
SOLR-14774: Create HealthCheckHandler in CoreContainer (#1774)
This commit does two things:
* Allow users to plug-in different implementations of the handler (they must extend HealthCheckHandler)
* Remove the HealthCheckHandler from the implicit SolrCore plugins
---
solr/CHANGES.txt | 3 +++
solr/core/src/java/org/apache/solr/core/CoreContainer.java | 5 +++++
.../src/java/org/apache/solr/handler/admin/HealthCheckHandler.java | 3 ---
solr/core/src/java/org/apache/solr/handler/admin/InfoHandler.java | 5 ++++-
solr/core/src/resources/ImplicitPlugins.json | 4 ----
solr/core/src/test/org/apache/solr/core/SolrCoreTest.java | 1 -
solr/solr-ref-guide/src/implicit-requesthandlers.adoc | 4 +---
solr/solrj/src/resources/apispec/node.Info.json | 2 +-
8 files changed, 14 insertions(+), 13 deletions(-)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 5bfdc58..ad5c581 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -85,6 +85,9 @@ Bug Fixes
* SOLR-14752: Fix error in Zookeeper status when Prometheus plugin is enabled in ZK (Philipp Trulson via janhoy)
+* SOLR-14774: HealthCheckHandler is no longer an implicit SolrCore handler and can be configured from solr.xml
+ (Tomás Fernándex Löbbe)
+
Other Changes
---------------------
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 1695067..67bb49b 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -724,6 +724,11 @@ public class CoreContainer {
createHandler(ZK_PATH, ZookeeperInfoHandler.class.getName(), ZookeeperInfoHandler.class);
createHandler(ZK_STATUS_PATH, ZookeeperStatusHandler.class.getName(), ZookeeperStatusHandler.class);
collectionsHandler = createHandler(COLLECTIONS_HANDLER_PATH, cfg.getCollectionsHandlerClass(), CollectionsHandler.class);
+ /*
+ * HealthCheckHandler needs to be initialized before InfoHandler, since the later one will call CoreContainer.getHealthCheckHandler().
+ * We don't register the handler here because it'll be registered inside InfoHandler
+ */
+ healthCheckHandler = loader.newInstance(cfg.getHealthCheckHandlerClass(), HealthCheckHandler.class, null, new Class<?>[]{CoreContainer.class}, new Object[]{this});
infoHandler = createHandler(INFO_HANDLER_PATH, cfg.getInfoHandlerClass(), InfoHandler.class);
coreAdminHandler = createHandler(CORES_HANDLER_PATH, cfg.getCoreAdminHandlerClass(), CoreAdminHandler.class);
configSetsHandler = createHandler(CONFIGSETS_HANDLER_PATH, cfg.getConfigSetsHandlerClass(), ConfigSetsHandler.class);
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/HealthCheckHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/HealthCheckHandler.java
index ddf22ef..21a8d64 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/HealthCheckHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/HealthCheckHandler.java
@@ -70,10 +70,7 @@ public class HealthCheckHandler extends RequestHandlerBase {
CoreContainer coreContainer;
- public HealthCheckHandler() {}
-
public HealthCheckHandler(final CoreContainer coreContainer) {
- super();
this.coreContainer = coreContainer;
}
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/InfoHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/InfoHandler.java
index 98c320e..2d514b1 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/InfoHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/InfoHandler.java
@@ -50,7 +50,10 @@ public class InfoHandler extends RequestHandlerBase {
handlers.put("properties", new PropertiesRequestHandler());
handlers.put("logging", new LoggingHandler(coreContainer));
handlers.put("system", new SystemInfoHandler(coreContainer));
- handlers.put("health", new HealthCheckHandler(coreContainer));
+ if (coreContainer.getHealthCheckHandler() == null) {
+ throw new IllegalStateException("HealthCheckHandler needs to be initialized before creating InfoHandler");
+ }
+ handlers.put("health", coreContainer.getHealthCheckHandler());
}
diff --git a/solr/core/src/resources/ImplicitPlugins.json b/solr/core/src/resources/ImplicitPlugins.json
index 1796477..0cfc009 100644
--- a/solr/core/src/resources/ImplicitPlugins.json
+++ b/solr/core/src/resources/ImplicitPlugins.json
@@ -89,10 +89,6 @@
"class": "solr.LoggingHandler",
"useParams":"_ADMIN_LOGGING"
},
- "/admin/health": {
- "class": "solr.HealthCheckHandler",
- "useParams":"_ADMIN_HEALTH"
- },
"/admin/file": {
"class": "solr.ShowFileRequestHandler",
"useParams":"_ADMIN_FILE"
diff --git a/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java b/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java
index 09b481c..b42a4aa 100644
--- a/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java
+++ b/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java
@@ -87,7 +87,6 @@ public class SolrCoreTest extends SolrTestCaseJ4 {
int ihCount = 0;
{
- ++ihCount; assertEquals(pathToClassMap.get("/admin/health"), "solr.HealthCheckHandler");
++ihCount; assertEquals(pathToClassMap.get("/admin/file"), "solr.ShowFileRequestHandler");
++ihCount; assertEquals(pathToClassMap.get("/admin/logging"), "solr.LoggingHandler");
++ihCount; assertEquals(pathToClassMap.get("/admin/luke"), "solr.LukeRequestHandler");
diff --git a/solr/solr-ref-guide/src/implicit-requesthandlers.adoc b/solr/solr-ref-guide/src/implicit-requesthandlers.adoc
index f763d1f..ec1be5f 100644
--- a/solr/solr-ref-guide/src/implicit-requesthandlers.adoc
+++ b/solr/solr-ref-guide/src/implicit-requesthandlers.adoc
@@ -44,11 +44,9 @@ Health:: Reporting the health of the node (_available only in SolrCloud mode_)
|API Endpoints |Class & Javadocs |Paramset
|v1: `solr/admin/info/health`
-v2: `api/node/health` |{solr-javadocs}/solr-core/org/apache/solr/handler/admin/HealthCheckHandler.html[HealthCheckHandler] |`_ADMIN_HEALTH`
+v2: `api/node/health` |{solr-javadocs}/solr-core/org/apache/solr/handler/admin/HealthCheckHandler.html[HealthCheckHandler] |
|===
+
-This endpoint can also take the collection or core name in the path (`solr/<collection>/admin/health` or `solr/<core>/admin/health`).
-+
This endpoint also accepts additional request parameters. Please see {solr-javadocs}/solr-core/org/apache/solr/handler/admin/HealthCheckHandler.html[Javadocs] for details.
Logging:: Retrieve and modify registered loggers.
diff --git a/solr/solrj/src/resources/apispec/node.Info.json b/solr/solrj/src/resources/apispec/node.Info.json
index 7d0c2c0..9fa3e94 100644
--- a/solr/solrj/src/resources/apispec/node.Info.json
+++ b/solr/solrj/src/resources/apispec/node.Info.json
@@ -1,5 +1,5 @@
{
- "description": "Provides information about system properties, threads, logging settings, system details and health (available in Solrcloud mode) for a node.",
+ "description": "Provides information about system properties, threads, logging settings, system details and health (available in SolrCloud mode) for a node.",
"methods": ["GET"],
"url": {
"paths": [