You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ds...@apache.org on 2020/10/01 12:34:19 UTC
[lucene-solr] branch branch_8x updated: SOLR-12987: Deprecated
plugins are logged once and with log category org.apache.solr.DEPRECATED
(#1927)
This is an automated email from the ASF dual-hosted git repository.
dsmiley 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 798b67b SOLR-12987: Deprecated plugins are logged once and with log category org.apache.solr.DEPRECATED (#1927)
798b67b is described below
commit 798b67b97ad31c16f10dcb74dc212f065e3edfd3
Author: David Smiley <ds...@apache.org>
AuthorDate: Thu Oct 1 08:31:39 2020 -0400
SOLR-12987: Deprecated plugins are logged once and with log category org.apache.solr.DEPRECATED (#1927)
(cherry picked from commit 9cadbf04b6556b227580a7d72f7af51fcf3083f3)
---
solr/CHANGES.txt | 3 ++
.../org/apache/solr/core/SolrResourceLoader.java | 5 ++-
.../org/apache/solr/logging/DeprecationLog.java | 50 ++++++++++++++++++++++
3 files changed, 56 insertions(+), 2 deletions(-)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index c7496a2..a92e139 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -170,6 +170,9 @@ Other Changes
Also, Deprecate unused constants NULL_COLLAPSE, NULL_IGNORE, NULL_EXPAND, HINT_MULTI_DOCVALUES in collapse parser.
(Guna Sekhar Dora Kovvuru, Munendra S N, Mike Drob)
+* SOLR-12987: Deprecated plugins/features are now logged once and with log category org.apache.solr.DEPRECATED
+ (David Smiley)
+
================== 8.6.2 ==================
Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.
diff --git a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
index ccc1bd9..52706c7 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -46,6 +46,7 @@ import org.apache.solr.common.SolrException;
import org.apache.solr.common.cloud.SolrClassLoader;
import org.apache.solr.handler.component.SearchComponent;
import org.apache.solr.handler.component.ShardHandlerFactory;
+import org.apache.solr.logging.DeprecationLog;
import org.apache.solr.pkg.PackageListeningClassLoader;
import org.apache.solr.request.SolrRequestHandler;
import org.apache.solr.response.QueryResponseWriter;
@@ -552,8 +553,8 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
// print warning if class is deprecated
if (clazz.isAnnotationPresent(Deprecated.class)) {
- log.warn("Solr loaded a deprecated plugin/analysis class [{}]. Please consult documentation how to replace it accordingly.",
- cname);
+ DeprecationLog.log(cname,
+ "Solr loaded a deprecated plugin/analysis class [" + cname + "]. Please consult documentation how to replace it accordingly.");
}
}
}
diff --git a/solr/core/src/java/org/apache/solr/logging/DeprecationLog.java b/solr/core/src/java/org/apache/solr/logging/DeprecationLog.java
new file mode 100644
index 0000000..20c775e
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/logging/DeprecationLog.java
@@ -0,0 +1,50 @@
+/*
+ * 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.logging;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Utility to log a deprecation.
+ */
+public class DeprecationLog {
+
+ public static final String LOG_PREFIX = "org.apache.solr.DEPRECATED.";
+
+ // featureId -> message. Don't really need the message
+ private static final Map<String, String> alreadyLogged = new ConcurrentHashMap<>();
+
+ /**
+ * Logs a deprecation warning for the provided feature, but only the first time.
+ * The logger name used is {@value LOG_PREFIX} + {@code featureId}.
+ * Remember that logger names are disable-able via configuration if needed.
+ * @return true if logged
+ */
+ public static boolean log(String featureId, String message) {
+ if (alreadyLogged.putIfAbsent(featureId, message) != null) {
+ return false;
+ }
+ Logger log = LoggerFactory.getLogger(LOG_PREFIX + featureId);
+ log.warn(message);
+ return true;
+ }
+}