diff --git a/changelog/unreleased/SOLR-18103.yml b/changelog/unreleased/SOLR-18103.yml
new file mode 100644
index 00000000000..2e057434a8f
--- /dev/null
+++ b/changelog/unreleased/SOLR-18103.yml
@@ -0,0 +1,8 @@
+# See https://github.com/apache/solr/blob/main/dev-docs/changelog.adoc
+title: Remove deprecated hiddenSysProps setting under "metrics" in solr.xml. It remains a standard top level config setting.
+type: removed # added, changed, fixed, deprecated, removed, dependency_update, security, other
+authors:
+ - name: Eric Pugh
+links:
+ - name: SOLR-18103
+ url: https://issues.apache.org/jira/browse/SOLR-18103
diff --git a/solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java b/solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java
index 459b58f13c5..f58286f172f 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java
@@ -165,10 +165,6 @@ public static NodeConfig fromConfig(
configBuilder.setBackupRepositoryPlugins(
getBackupRepositoryPluginInfos(root.get("backup").getAll("repository")));
configBuilder.setClusterPlugins(getClusterPlugins(loader, root));
- // will be removed in Solr 10, but until then, use it if a
- // is not provided under .
- // Remove this line in 10.0
- configBuilder.setHiddenSysProps(getHiddenSysProps(root.get("metrics")));
configBuilder.setMetricsConfig(getMetricsConfig(root.get("metrics")));
configBuilder.setCachesConfig(getCachesConfig(loader, root.get("caches")));
configBuilder.setDefaultZkHost(defaultZkHost);
@@ -747,26 +743,6 @@ private static Object decodeNullValue(Object o) {
return o;
}
- /**
- * Deprecated as of 9.3, will be removed in 10.0
- *
- * @param metrics configNode for the metrics
- * @return a comma-separated list of hidden Sys Props
- */
- @Deprecated(forRemoval = true, since = "9.3")
- private static String getHiddenSysProps(ConfigNode metrics) {
- ConfigNode p = metrics.get("hiddenSysProps");
- if (!p.exists()) return null;
- Set props = new HashSet<>();
- p.forEachChild(
- it -> {
- if (it.name().equals("str") && StrUtils.isNotNullOrEmpty(it.txt()))
- props.add(Pattern.quote(it.txt()));
- return Boolean.TRUE;
- });
- return String.join(",", props);
- }
-
private static PluginInfo getPluginInfo(ConfigNode cfg) {
if (cfg == null || !cfg.exists()) return null;
final var pluginInfo = new PluginInfo(cfg, cfg.name(), false, true);