diff --git a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java index e375f3dea072..faf2e20c0806 100644 --- a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java +++ b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java @@ -445,7 +445,8 @@ public class CommonAnalysisPlugin extends Plugin implements AnalysisPlugin, Scri "[delimited_payload_filter] is not supported for new indices, use [delimited_payload] instead"); } if (version.onOrAfter(Version.V_6_2_0)) { - deprecationLogger.deprecated("Deprecated [delimited_payload_filter] used, replaced by [delimited_payload]"); + deprecationLogger.deprecatedAndMaybeLog("analysis_delimited_payload_filter", + "Deprecated [delimited_payload_filter] used, replaced by [delimited_payload]"); } return new DelimitedPayloadTokenFilter(input, DelimitedPayloadTokenFilterFactory.DEFAULT_DELIMITER, diff --git a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/LegacyDelimitedPayloadTokenFilterFactory.java b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/LegacyDelimitedPayloadTokenFilterFactory.java index ae20a5fbf5a8..111c94c529f1 100644 --- a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/LegacyDelimitedPayloadTokenFilterFactory.java +++ b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/LegacyDelimitedPayloadTokenFilterFactory.java @@ -38,7 +38,8 @@ public class LegacyDelimitedPayloadTokenFilterFactory extends DelimitedPayloadTo "[delimited_payload_filter] is not supported for new indices, use [delimited_payload] instead"); } if (indexSettings.getIndexVersionCreated().onOrAfter(Version.V_6_2_0)) { - deprecationLogger.deprecated("Deprecated [delimited_payload_filter] used, replaced by [delimited_payload]"); + deprecationLogger.deprecatedAndMaybeLog("analysis_legacy_delimited_payload_filter", + "Deprecated [delimited_payload_filter] used, replaced by [delimited_payload]"); } } } diff --git a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/NGramTokenFilterFactory.java b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/NGramTokenFilterFactory.java index 6abf2cbd37cb..1154bf0a88a3 100644 --- a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/NGramTokenFilterFactory.java +++ b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/NGramTokenFilterFactory.java @@ -53,7 +53,8 @@ public class NGramTokenFilterFactory extends AbstractTokenFilterFactory { + maxAllowedNgramDiff + "] but was [" + ngramDiff + "]. This limit can be set by changing the [" + IndexSettings.MAX_NGRAM_DIFF_SETTING.getKey() + "] index level setting."); } else { - deprecationLogger.deprecated("Deprecated big difference between max_gram and min_gram in NGram Tokenizer," + deprecationLogger.deprecatedAndMaybeLog("ngram_big_difference", + "Deprecated big difference between max_gram and min_gram in NGram Tokenizer," + "expected difference must be less than or equal to: [" + maxAllowedNgramDiff + "]"); } } diff --git a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/NGramTokenizerFactory.java b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/NGramTokenizerFactory.java index c904e52cd453..7a5c72e689e9 100644 --- a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/NGramTokenizerFactory.java +++ b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/NGramTokenizerFactory.java @@ -118,7 +118,8 @@ public class NGramTokenizerFactory extends AbstractTokenizerFactory { + maxAllowedNgramDiff + "] but was [" + ngramDiff + "]. This limit can be set by changing the [" + IndexSettings.MAX_NGRAM_DIFF_SETTING.getKey() + "] index level setting."); } else { - deprecationLogger.deprecated("Deprecated big difference between max_gram and min_gram in NGram Tokenizer," + deprecationLogger.deprecatedAndMaybeLog("ngram_big_difference", + "Deprecated big difference between max_gram and min_gram in NGram Tokenizer," + "expected difference must be less than or equal to: [" + maxAllowedNgramDiff + "]"); } } diff --git a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/SynonymTokenFilterFactory.java b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/SynonymTokenFilterFactory.java index 0d7dd672b5af..681b2785116f 100644 --- a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/SynonymTokenFilterFactory.java +++ b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/SynonymTokenFilterFactory.java @@ -59,7 +59,8 @@ public class SynonymTokenFilterFactory extends AbstractTokenFilterFactory { this.settings = settings; if (settings.get("ignore_case") != null) { - DEPRECATION_LOGGER.deprecated( + DEPRECATION_LOGGER.deprecatedAndMaybeLog( + "synonym_ignore_case_option", "The ignore_case option on the synonym_graph filter is deprecated. " + "Instead, insert a lowercase filter in the filter chain before the synonym_graph filter."); } diff --git a/modules/ingest-user-agent/src/main/java/org/elasticsearch/ingest/useragent/UserAgentProcessor.java b/modules/ingest-user-agent/src/main/java/org/elasticsearch/ingest/useragent/UserAgentProcessor.java index 1d5b1e0fbc50..85cb7a414f2e 100644 --- a/modules/ingest-user-agent/src/main/java/org/elasticsearch/ingest/useragent/UserAgentProcessor.java +++ b/modules/ingest-user-agent/src/main/java/org/elasticsearch/ingest/useragent/UserAgentProcessor.java @@ -315,7 +315,8 @@ public class UserAgentProcessor extends AbstractProcessor { } if (useECS == false) { - deprecationLogger.deprecated("setting [ecs] to false for non-common schema " + + deprecationLogger.deprecatedAndMaybeLog("ecs_false_non_common_schema", + "setting [ecs] to false for non-common schema " + "format is deprecated and will be removed in 8.0, set to true or remove to use the non-deprecated format"); } @@ -356,7 +357,9 @@ public class UserAgentProcessor extends AbstractProcessor { try { Property value = valueOf(propertyName.toUpperCase(Locale.ROOT)); if (DEPRECATED_PROPERTIES.contains(value)) { - deprecationLogger.deprecated("the [{}] property is deprecated for the user-agent processor", propertyName); + final String key = "user_agent_processor_property_" + propertyName.replaceAll("[^\\w_]+", "_"); + deprecationLogger.deprecatedAndMaybeLog(key, + "the [{}] property is deprecated for the user-agent processor", propertyName); } return value; } diff --git a/modules/reindex/src/main/java/org/elasticsearch/index/reindex/ReindexValidator.java b/modules/reindex/src/main/java/org/elasticsearch/index/reindex/ReindexValidator.java index fffd79e861ad..64e7fd319445 100644 --- a/modules/reindex/src/main/java/org/elasticsearch/index/reindex/ReindexValidator.java +++ b/modules/reindex/src/main/java/org/elasticsearch/index/reindex/ReindexValidator.java @@ -67,7 +67,7 @@ class ReindexValidator { state); SearchSourceBuilder searchSource = request.getSearchRequest().source(); if (searchSource != null && searchSource.sorts() != null && searchSource.sorts().isEmpty() == false) { - deprecationLogger.deprecated(SORT_DEPRECATED_MESSAGE); + deprecationLogger.deprecatedAndMaybeLog("reindex_sort", SORT_DEPRECATED_MESSAGE); } } diff --git a/modules/reindex/src/main/java/org/elasticsearch/index/reindex/remote/RemoteRequestBuilders.java b/modules/reindex/src/main/java/org/elasticsearch/index/reindex/remote/RemoteRequestBuilders.java index 8d04941cf360..12aa47f63e81 100644 --- a/modules/reindex/src/main/java/org/elasticsearch/index/reindex/remote/RemoteRequestBuilders.java +++ b/modules/reindex/src/main/java/org/elasticsearch/index/reindex/remote/RemoteRequestBuilders.java @@ -186,7 +186,7 @@ final class RemoteRequestBuilders { private static String encodeIndex(String s) { if (s.contains("%")) { // already encoded, pass-through to allow this in mixed version clusters checkIndexOrType("Index", s); - DEPRECATION_LOGGER.deprecated(DEPRECATED_URL_ENCODED_INDEX_WARNING); + DEPRECATION_LOGGER.deprecatedAndMaybeLog("reindex_url_encoded_index", DEPRECATED_URL_ENCODED_INDEX_WARNING); return s; } try { diff --git a/plugins/analysis-icu/src/main/java/org/elasticsearch/index/analysis/IcuNormalizerTokenFilterFactory.java b/plugins/analysis-icu/src/main/java/org/elasticsearch/index/analysis/IcuNormalizerTokenFilterFactory.java index 66746854c61f..f8cfc96b5c63 100644 --- a/plugins/analysis-icu/src/main/java/org/elasticsearch/index/analysis/IcuNormalizerTokenFilterFactory.java +++ b/plugins/analysis-icu/src/main/java/org/elasticsearch/index/analysis/IcuNormalizerTokenFilterFactory.java @@ -62,7 +62,8 @@ public class IcuNormalizerTokenFilterFactory extends AbstractTokenFilterFactory String unicodeSetFilter = settings.get("unicodeSetFilter"); if (indexSettings.getIndexVersionCreated().onOrAfter(Version.V_7_0_0)) { if (unicodeSetFilter != null) { - deprecationLogger.deprecated("[unicodeSetFilter] has been deprecated in favor of [unicode_set_filter]"); + deprecationLogger.deprecatedAndMaybeLog("icu_normalizer_unicode_set_filter", + "[unicodeSetFilter] has been deprecated in favor of [unicode_set_filter]"); } else { unicodeSetFilter = settings.get("unicode_set_filter"); } diff --git a/plugins/discovery-azure-classic/src/main/java/org/elasticsearch/plugin/discovery/azure/classic/AzureDiscoveryPlugin.java b/plugins/discovery-azure-classic/src/main/java/org/elasticsearch/plugin/discovery/azure/classic/AzureDiscoveryPlugin.java index 9e080af0ed56..af30a0b378eb 100644 --- a/plugins/discovery-azure-classic/src/main/java/org/elasticsearch/plugin/discovery/azure/classic/AzureDiscoveryPlugin.java +++ b/plugins/discovery-azure-classic/src/main/java/org/elasticsearch/plugin/discovery/azure/classic/AzureDiscoveryPlugin.java @@ -48,7 +48,7 @@ public class AzureDiscoveryPlugin extends Plugin implements DiscoveryPlugin { public AzureDiscoveryPlugin(Settings settings) { this.settings = settings; - deprecationLogger.deprecated("azure classic discovery plugin is deprecated."); + deprecationLogger.deprecatedAndMaybeLog("azure_discovery_plugin", "azure classic discovery plugin is deprecated."); logger.trace("starting azure classic discovery plugin..."); } diff --git a/plugins/discovery-ec2/src/main/java/org/elasticsearch/discovery/ec2/Ec2ClientSettings.java b/plugins/discovery-ec2/src/main/java/org/elasticsearch/discovery/ec2/Ec2ClientSettings.java index 3de5b2ccaf91..494e564937d0 100644 --- a/plugins/discovery-ec2/src/main/java/org/elasticsearch/discovery/ec2/Ec2ClientSettings.java +++ b/plugins/discovery-ec2/src/main/java/org/elasticsearch/discovery/ec2/Ec2ClientSettings.java @@ -135,11 +135,13 @@ final class Ec2ClientSettings { return null; } else { if (key.length() == 0) { - deprecationLogger.deprecated("Setting [{}] is set but [{}] is not, which will be unsupported in future", + deprecationLogger.deprecatedAndMaybeLog("ec2_invalid_settings", + "Setting [{}] is set but [{}] is not, which will be unsupported in future", SECRET_KEY_SETTING.getKey(), ACCESS_KEY_SETTING.getKey()); } if (secret.length() == 0) { - deprecationLogger.deprecated("Setting [{}] is set but [{}] is not, which will be unsupported in future", + deprecationLogger.deprecatedAndMaybeLog("ec2_invalid_settings", + "Setting [{}] is set but [{}] is not, which will be unsupported in future", ACCESS_KEY_SETTING.getKey(), SECRET_KEY_SETTING.getKey()); } diff --git a/plugins/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3Repository.java b/plugins/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3Repository.java index cff2d6037b07..0d8e620c8921 100644 --- a/plugins/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3Repository.java +++ b/plugins/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3Repository.java @@ -249,7 +249,8 @@ class S3Repository extends BlobStoreRepository { if (S3ClientSettings.checkDeprecatedCredentials(metadata.settings())) { // provided repository settings - deprecationLogger.deprecated("Using s3 access/secret key from repository settings. Instead " + deprecationLogger.deprecatedAndMaybeLog("s3_repository_secret_settings", + "Using s3 access/secret key from repository settings. Instead " + "store these in named clients and the elasticsearch keystore for secure settings."); } diff --git a/qa/evil-tests/src/test/java/org/elasticsearch/common/logging/EvilLoggerTests.java b/qa/evil-tests/src/test/java/org/elasticsearch/common/logging/EvilLoggerTests.java index 2e35ac9581f9..537f91c050e9 100644 --- a/qa/evil-tests/src/test/java/org/elasticsearch/common/logging/EvilLoggerTests.java +++ b/qa/evil-tests/src/test/java/org/elasticsearch/common/logging/EvilLoggerTests.java @@ -104,33 +104,6 @@ public class EvilLoggerTests extends ESTestCase { assertLogLine(events.get(4), Level.TRACE, location, "This is a trace message"); } - public void testDeprecationLogger() throws IOException, UserException { - setupLogging("deprecation"); - - final DeprecationLogger deprecationLogger = new DeprecationLogger(LogManager.getLogger("deprecation")); - - final int deprecatedIterations = randomIntBetween(0, 256); - for (int i = 0; i < deprecatedIterations; i++) { - deprecationLogger.deprecated("This is a deprecation message"); - assertWarnings("This is a deprecation message"); - } - - final String deprecationPath = - System.getProperty("es.logs.base_path") + - System.getProperty("file.separator") + - System.getProperty("es.logs.cluster_name") + - "_deprecation.log"; - final List deprecationEvents = Files.readAllLines(PathUtils.get(deprecationPath)); - assertThat(deprecationEvents.size(), equalTo(deprecatedIterations)); - for (int i = 0; i < deprecatedIterations; i++) { - assertLogLine( - deprecationEvents.get(i), - Level.WARN, - "org.elasticsearch.common.logging.DeprecationLogger\\$2\\.run", - "This is a deprecation message"); - } - } - public void testConcurrentDeprecationLogger() throws IOException, UserException, BrokenBarrierException, InterruptedException { setupLogging("deprecation"); diff --git a/qa/smoke-test-http/src/test/java/org/elasticsearch/http/TestDeprecatedQueryBuilder.java b/qa/smoke-test-http/src/test/java/org/elasticsearch/http/TestDeprecatedQueryBuilder.java index 7d8115a20c9e..729687408745 100644 --- a/qa/smoke-test-http/src/test/java/org/elasticsearch/http/TestDeprecatedQueryBuilder.java +++ b/qa/smoke-test-http/src/test/java/org/elasticsearch/http/TestDeprecatedQueryBuilder.java @@ -80,7 +80,7 @@ public class TestDeprecatedQueryBuilder extends AbstractQueryBuilder source = parser.map(); if (source.containsKey("deprecated_settings")) { - deprecationLogger.deprecated(DEPRECATED_USAGE); + deprecationLogger.deprecatedAndMaybeLog("deprecated_settings", DEPRECATED_USAGE); settings = (List)source.get("deprecated_settings"); } else { diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequest.java b/server/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequest.java index c0187ec87f65..a5b3d47c235d 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequest.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequest.java @@ -343,7 +343,8 @@ public class PutIndexTemplateRequest extends MasterNodeRequest descriptor.matchesIndexPattern(index)) .collect(toList()); if (matchingDescriptors.isEmpty() && (isHidden == null || isHidden == Boolean.FALSE)) { - DEPRECATION_LOGGER.deprecated("index name [{}] starts with a dot '.', in the next major version, index names " + + DEPRECATION_LOGGER.deprecatedAndMaybeLog("index_name_starts_with_dot", + "index name [{}] starts with a dot '.', in the next major version, index names " + "starting with a dot are reserved for hidden indices and system indices", index); } else if (matchingDescriptors.size() > 1) { // This should be prevented by erroring on overlapping patterns at startup time, but is here just in case. diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataIndexTemplateService.java b/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataIndexTemplateService.java index d9186344a39f..06f119f587c0 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataIndexTemplateService.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataIndexTemplateService.java @@ -368,7 +368,7 @@ public class MetadataIndexTemplateService { .collect(Collectors.joining(",")), name); logger.warn(warning); - deprecationLogger.deprecated(warning); + deprecationLogger.deprecatedAndMaybeLog("index_template_pattern_overlap", warning); } IndexTemplateV2 finalIndexTemplate = template; @@ -593,7 +593,7 @@ public class MetadataIndexTemplateService { .collect(Collectors.joining(",")), request.name); logger.warn(warning); - deprecationLogger.deprecated(warning); + deprecationLogger.deprecatedAndMaybeLog("index_template_pattern_overlap", warning); } else { // Otherwise, this is a hard error, the user should use V2 index templates instead String error = String.format(Locale.ROOT, "template [%s] has index patterns %s matching patterns" + diff --git a/server/src/main/java/org/elasticsearch/cluster/routing/OperationRouting.java b/server/src/main/java/org/elasticsearch/cluster/routing/OperationRouting.java index ce368d29c1a3..3f2a71c6a802 100644 --- a/server/src/main/java/org/elasticsearch/cluster/routing/OperationRouting.java +++ b/server/src/main/java/org/elasticsearch/cluster/routing/OperationRouting.java @@ -67,7 +67,8 @@ public class OperationRouting { if (ignoreAwarenessAttr == false) { awarenessAttributes = AwarenessAllocationDecider.CLUSTER_ROUTING_ALLOCATION_AWARENESS_ATTRIBUTE_SETTING.get(settings); if (awarenessAttributes.isEmpty() == false) { - deprecationLogger.deprecated(IGNORE_AWARENESS_ATTRIBUTES_DEPRECATION_MESSAGE); + deprecationLogger.deprecatedAndMaybeLog("searches_not_routed_on_awareness_attributes", + IGNORE_AWARENESS_ATTRIBUTES_DEPRECATION_MESSAGE); } clusterSettings.addSettingsUpdateConsumer(AwarenessAllocationDecider.CLUSTER_ROUTING_ALLOCATION_AWARENESS_ATTRIBUTE_SETTING, this::setAwarenessAttributes); @@ -91,7 +92,8 @@ public class OperationRouting { boolean ignoreAwarenessAttr = parseBoolean(System.getProperty(IGNORE_AWARENESS_ATTRIBUTES_PROPERTY), false); if (ignoreAwarenessAttr == false) { if (this.awarenessAttributes.isEmpty() && awarenessAttributes.isEmpty() == false) { - deprecationLogger.deprecated(IGNORE_AWARENESS_ATTRIBUTES_DEPRECATION_MESSAGE); + deprecationLogger.deprecatedAndMaybeLog("searches_not_routed_on_awareness_attributes", + IGNORE_AWARENESS_ATTRIBUTES_DEPRECATION_MESSAGE); } this.awarenessAttributes = awarenessAttributes; } diff --git a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/DiskThresholdMonitor.java b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/DiskThresholdMonitor.java index c42d71feb444..aa880af74249 100644 --- a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/DiskThresholdMonitor.java +++ b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/DiskThresholdMonitor.java @@ -101,7 +101,8 @@ public class DiskThresholdMonitor { this.diskThresholdSettings = new DiskThresholdSettings(settings, clusterSettings); this.client = client; if (diskThresholdSettings.isAutoReleaseIndexEnabled() == false) { - deprecationLogger.deprecated("[{}] will be removed in version {}", + deprecationLogger.deprecatedAndMaybeLog(DiskThresholdSettings.AUTO_RELEASE_INDEX_ENABLED_KEY.replace(".", "_"), + "[{}] will be removed in version {}", DiskThresholdSettings.AUTO_RELEASE_INDEX_ENABLED_KEY, Version.V_7_4_0.major + 1); } } @@ -292,7 +293,9 @@ public class DiskThresholdMonitor { logger.info("releasing read-only-allow-delete block on indices: [{}]", indicesToAutoRelease); updateIndicesReadOnly(indicesToAutoRelease, listener, false); } else { - deprecationLogger.deprecated("[{}] will be removed in version {}", + deprecationLogger.deprecatedAndMaybeLog( + DiskThresholdSettings.AUTO_RELEASE_INDEX_ENABLED_KEY.replace(".", "_"), + "[{}] will be removed in version {}", DiskThresholdSettings.AUTO_RELEASE_INDEX_ENABLED_KEY, Version.V_7_4_0.major + 1); logger.debug("[{}] disabled, not releasing read-only-allow-delete block on indices: [{}]", DiskThresholdSettings.AUTO_RELEASE_INDEX_ENABLED_KEY, indicesToAutoRelease); diff --git a/server/src/main/java/org/elasticsearch/common/logging/DeprecationLogger.java b/server/src/main/java/org/elasticsearch/common/logging/DeprecationLogger.java index fcc537e94aa4..bfaccb106555 100644 --- a/server/src/main/java/org/elasticsearch/common/logging/DeprecationLogger.java +++ b/server/src/main/java/org/elasticsearch/common/logging/DeprecationLogger.java @@ -28,6 +28,7 @@ import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.tasks.Task; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.BitSet; @@ -110,15 +111,8 @@ public class DeprecationLogger { this.logger = LogManager.getLogger(name); } - /** - * Logs a deprecation message, adding a formatted warning message as a response header on the thread context. - */ - public void deprecated(String msg, Object... params) { - deprecated(THREAD_CONTEXT, msg, params); - } - // LRU set of keys used to determine if a deprecation message should be emitted to the deprecation logs - private Set keys = Collections.newSetFromMap(Collections.synchronizedMap(new LinkedHashMap() { + private final Set keys = Collections.newSetFromMap(Collections.synchronizedMap(new LinkedHashMap() { @Override protected boolean removeEldestEntry(final Map.Entry eldest) { return size() > 128; @@ -135,8 +129,8 @@ public class DeprecationLogger { */ public void deprecatedAndMaybeLog(final String key, final String msg, final Object... params) { String xOpaqueId = getXOpaqueId(THREAD_CONTEXT); - boolean log = keys.add(xOpaqueId + key); - deprecated(THREAD_CONTEXT, msg, log, params); + boolean shouldLog = keys.add(xOpaqueId + key); + deprecated(THREAD_CONTEXT, msg, shouldLog, params); } /* @@ -234,7 +228,7 @@ public class DeprecationLogger { deprecated(threadContexts, message, true, params); } - void deprecated(final Set threadContexts, final String message, final boolean log, final Object... params) { + void deprecated(final Set threadContexts, final String message, final boolean shouldLog, final Object... params) { final Iterator iterator = threadContexts.iterator(); if (iterator.hasNext()) { final String formattedMessage = LoggerMessageFormat.format(message, params); @@ -251,12 +245,12 @@ public class DeprecationLogger { } } - if (log) { + if (shouldLog) { AccessController.doPrivileged(new PrivilegedAction() { @SuppressLoggerChecks(reason = "safely delegates to logger") @Override public Void run() { - /** + /* * There should be only one threadContext (in prod env), @see DeprecationLogger#setThreadContext */ String opaqueId = getXOpaqueId(threadContexts); @@ -360,7 +354,7 @@ public class DeprecationLogger { assert doesNotNeedEncoding.get('%') == false : doesNotNeedEncoding; } - private static final Charset UTF_8 = Charset.forName("UTF-8"); + private static final Charset UTF_8 = StandardCharsets.UTF_8; /** * Encode a string containing characters outside of the legal characters for an RFC 7230 quoted-string. diff --git a/server/src/main/java/org/elasticsearch/common/unit/ByteSizeValue.java b/server/src/main/java/org/elasticsearch/common/unit/ByteSizeValue.java index b9cc727c64cc..6248ca83cbe4 100644 --- a/server/src/main/java/org/elasticsearch/common/unit/ByteSizeValue.java +++ b/server/src/main/java/org/elasticsearch/common/unit/ByteSizeValue.java @@ -245,7 +245,8 @@ public class ByteSizeValue implements Writeable, Comparable, ToXC } catch (final NumberFormatException e) { try { final double doubleValue = Double.parseDouble(s); - DeprecationLoggerHolder.deprecationLogger.deprecated( + DeprecationLoggerHolder.deprecationLogger.deprecatedAndMaybeLog( + "fractional_byte_values", "Fractional bytes values are deprecated. Use non-fractional bytes values instead: [{}] found for setting [{}]", initialInput, settingName); return new ByteSizeValue((long) (doubleValue * unit.toBytes(1))); diff --git a/server/src/main/java/org/elasticsearch/common/xcontent/LoggingDeprecationHandler.java b/server/src/main/java/org/elasticsearch/common/xcontent/LoggingDeprecationHandler.java index 5feca4bfaab5..57ef66456e8e 100644 --- a/server/src/main/java/org/elasticsearch/common/xcontent/LoggingDeprecationHandler.java +++ b/server/src/main/java/org/elasticsearch/common/xcontent/LoggingDeprecationHandler.java @@ -53,21 +53,21 @@ public class LoggingDeprecationHandler implements DeprecationHandler { @Override public void usedDeprecatedName(String parserName, Supplier location, String usedName, String modernName) { String prefix = parserName == null ? "" : "[" + parserName + "][" + location.get() + "] "; - deprecationLogger.deprecated("{}Deprecated field [{}] used, expected [{}] instead", + deprecationLogger.deprecatedAndMaybeLog("deprecated_field", "{}Deprecated field [{}] used, expected [{}] instead", prefix, usedName, modernName); } @Override public void usedDeprecatedField(String parserName, Supplier location, String usedName, String replacedWith) { String prefix = parserName == null ? "" : "[" + parserName + "][" + location.get() + "] "; - deprecationLogger.deprecated("{}Deprecated field [{}] used, replaced by [{}]", + deprecationLogger.deprecatedAndMaybeLog("deprecated_field", "{}Deprecated field [{}] used, replaced by [{}]", prefix, usedName, replacedWith); } @Override public void usedDeprecatedField(String parserName, Supplier location, String usedName) { String prefix = parserName == null ? "" : "[" + parserName + "][" + location.get() + "] "; - deprecationLogger.deprecated("{}Deprecated field [{}] used, this field is unused and will be removed entirely", - prefix, usedName); + deprecationLogger.deprecatedAndMaybeLog("deprecated_field", + "{}Deprecated field [{}] used, this field is unused and will be removed entirely", prefix, usedName); } } diff --git a/server/src/main/java/org/elasticsearch/http/HttpInfo.java b/server/src/main/java/org/elasticsearch/http/HttpInfo.java index e2b7c60fd43c..7ed3c462aee2 100644 --- a/server/src/main/java/org/elasticsearch/http/HttpInfo.java +++ b/server/src/main/java/org/elasticsearch/http/HttpInfo.java @@ -73,7 +73,8 @@ public class HttpInfo implements ReportingService.Info { String publishAddressString = publishAddress.toString(); String hostString = publishAddress.address().getHostString(); if (CNAME_IN_PUBLISH_HOST) { - deprecationLogger.deprecated( + deprecationLogger.deprecatedAndMaybeLog( + "cname_in_publish_address", "es.http.cname_in_publish_address system property is deprecated and no longer affects http.publish_address " + "formatting. Remove this property to get rid of this deprecation warning." ); diff --git a/server/src/main/java/org/elasticsearch/index/analysis/ShingleTokenFilterFactory.java b/server/src/main/java/org/elasticsearch/index/analysis/ShingleTokenFilterFactory.java index 37a163eac978..6ff289f7f79e 100644 --- a/server/src/main/java/org/elasticsearch/index/analysis/ShingleTokenFilterFactory.java +++ b/server/src/main/java/org/elasticsearch/index/analysis/ShingleTokenFilterFactory.java @@ -51,7 +51,8 @@ public class ShingleTokenFilterFactory extends AbstractTokenFilterFactory { + " must be less than or equal to: [" + maxAllowedShingleDiff + "] but was [" + shingleDiff + "]. This limit" + " can be set by changing the [" + IndexSettings.MAX_SHINGLE_DIFF_SETTING.getKey() + "] index level setting."); } else { - deprecationLogger.deprecated("Deprecated big difference between maxShingleSize and minShingleSize" + + deprecationLogger.deprecatedAndMaybeLog("excessive_shingle_diff", + "Deprecated big difference between maxShingleSize and minShingleSize" + " in Shingle TokenFilter, expected difference must be less than or equal to: [" + maxAllowedShingleDiff + "]"); } } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/CompletionFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/CompletionFieldMapper.java index fed93898dd00..a9a9e8fbeeb8 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/CompletionFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/CompletionFieldMapper.java @@ -419,7 +419,8 @@ public class CompletionFieldMapper extends FieldMapper implements ArrayValueMapp private void checkCompletionContextsLimit(BuilderContext context) { if (this.contextMappings != null && this.contextMappings.size() > COMPLETION_CONTEXTS_LIMIT) { - deprecationLogger.deprecated("You have defined more than [" + COMPLETION_CONTEXTS_LIMIT + "] completion contexts" + + deprecationLogger.deprecatedAndMaybeLog("excessive_completion_contexts", + "You have defined more than [" + COMPLETION_CONTEXTS_LIMIT + "] completion contexts" + " in the mapping for index [" + context.indexSettings().get(IndexMetadata.SETTING_INDEX_PROVIDED_NAME) + "]. " + "The maximum allowed number of completion contexts in a mapping will be limited to " + "[" + COMPLETION_CONTEXTS_LIMIT + "] starting in version [8.0]."); diff --git a/server/src/main/java/org/elasticsearch/index/mapper/DynamicTemplate.java b/server/src/main/java/org/elasticsearch/index/mapper/DynamicTemplate.java index 868bc123a88c..2c6794357f6a 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/DynamicTemplate.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/DynamicTemplate.java @@ -208,8 +208,9 @@ public class DynamicTemplate implements ToXContentObject { if (indexVersionCreated.onOrAfter(Version.V_6_0_0_alpha1)) { throw e; } else { - deprecationLogger.deprecated("match_mapping_type [" + matchMappingType + "] is invalid and will be ignored: " - + e.getMessage()); + deprecationLogger.deprecatedAndMaybeLog("invalid_mapping_type", + "match_mapping_type [" + matchMappingType + "] is invalid and will be ignored: " + + e.getMessage()); // this template is on an unknown type so it will never match anything // null indicates that the template should be ignored return null; diff --git a/server/src/main/java/org/elasticsearch/index/mapper/FieldNamesFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/FieldNamesFieldMapper.java index 3c1adf259ff5..9a1b7faf69c5 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/FieldNamesFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/FieldNamesFieldMapper.java @@ -185,7 +185,8 @@ public class FieldNamesFieldMapper extends MetadataFieldMapper { if (isEnabled() == false) { throw new IllegalStateException("Cannot run [exists] queries if the [_field_names] field is disabled"); } - deprecationLogger.deprecated( + deprecationLogger.deprecatedAndMaybeLog( + "terms_query_on_field_names", "terms query on the _field_names field is deprecated and will be removed, use exists query instead"); return super.termQuery(value, context); } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/LegacyGeoShapeFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/LegacyGeoShapeFieldMapper.java index 907a7b2e901b..8764033f2b8f 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/LegacyGeoShapeFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/LegacyGeoShapeFieldMapper.java @@ -170,8 +170,8 @@ public class LegacyGeoShapeFieldMapper extends AbstractGeometryFieldMapper { - deprecationLogger.deprecated("The [classic] similarity is now deprecated in favour of BM25, which is generally " + deprecationLogger.deprecatedAndMaybeLog("classic_similarity", + "The [classic] similarity is now deprecated in favour of BM25, which is generally " + "accepted as a better alternative. Use the [BM25] similarity or build a custom [scripted] similarity " + "instead."); return similarity; @@ -90,7 +91,8 @@ public final class SimilarityService extends AbstractIndexComponent { throw new IllegalArgumentException("The [classic] similarity may not be used anymore. Please use the [BM25] " + "similarity or build a custom [scripted] similarity instead."); } else { - deprecationLogger.deprecated("The [classic] similarity is now deprecated in favour of BM25, which is generally " + deprecationLogger.deprecatedAndMaybeLog("classic_similarity", + "The [classic] similarity is now deprecated in favour of BM25, which is generally " + "accepted as a better alternative. Use the [BM25] similarity or build a custom [scripted] similarity " + "instead."); return SimilarityProviders.createClassicSimilarity(settings, version); @@ -154,7 +156,8 @@ public final class SimilarityService extends AbstractIndexComponent { defaultSimilarity = (providers.get("default") != null) ? providers.get("default").get() : providers.get(SimilarityService.DEFAULT_SIMILARITY).get(); if (providers.get("base") != null) { - deprecationLogger.deprecated("The [base] similarity is ignored since query normalization and coords have been removed"); + deprecationLogger.deprecatedAndMaybeLog("base_similarity_ignored", + "The [base] similarity is ignored since query normalization and coords have been removed"); } } @@ -270,7 +273,7 @@ public final class SimilarityService extends AbstractIndexComponent { if (indexCreatedVersion.onOrAfter(Version.V_7_0_0)) { throw new IllegalArgumentException(message); } else if (indexCreatedVersion.onOrAfter(Version.V_6_5_0)) { - deprecationLogger.deprecated(message); + deprecationLogger.deprecatedAndMaybeLog("similarity_failure", message); } } diff --git a/server/src/main/java/org/elasticsearch/rest/DeprecationRestHandler.java b/server/src/main/java/org/elasticsearch/rest/DeprecationRestHandler.java index 2408f83d2b54..c88fbef28a1a 100644 --- a/server/src/main/java/org/elasticsearch/rest/DeprecationRestHandler.java +++ b/server/src/main/java/org/elasticsearch/rest/DeprecationRestHandler.java @@ -57,7 +57,7 @@ public class DeprecationRestHandler implements RestHandler { */ @Override public void handleRequest(RestRequest request, RestChannel channel, NodeClient client) throws Exception { - deprecationLogger.deprecated(deprecationMessage); + deprecationLogger.deprecatedAndMaybeLog("deprecated_route", deprecationMessage); handler.handleRequest(request, channel, client); } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestGetMappingAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestGetMappingAction.java index 690755147bae..e935f7f812af 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestGetMappingAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestGetMappingAction.java @@ -89,7 +89,8 @@ public class RestGetMappingAction extends BaseRestHandler { boolean includeTypeName = request.paramAsBoolean(INCLUDE_TYPE_NAME_PARAMETER, DEFAULT_INCLUDE_TYPE_NAME_POLICY); if (request.method().equals(HEAD)) { - deprecationLogger.deprecated("Type exists requests are deprecated, as types have been deprecated."); + deprecationLogger.deprecatedAndMaybeLog("get_mapping_types_removal", + "Type exists requests are deprecated, as types have been deprecated."); } else if (includeTypeName == false && types.length > 0) { throw new IllegalArgumentException("Types cannot be provided in get mapping requests, unless" + " include_type_name is set to true."); diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestPutIndexTemplateAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestPutIndexTemplateAction.java index 36458cf7ce36..1b1faedd850b 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestPutIndexTemplateAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestPutIndexTemplateAction.java @@ -69,7 +69,8 @@ public class RestPutIndexTemplateAction extends BaseRestHandler { deprecationLogger.deprecatedAndMaybeLog("put_index_template_with_types", TYPES_DEPRECATION_MESSAGE); } if (request.hasParam("template")) { - deprecationLogger.deprecated("Deprecated parameter[template] used, replaced by [index_patterns]"); + deprecationLogger.deprecatedAndMaybeLog("put_index_template_deprecated_parameter", + "Deprecated parameter [template] used, replaced by [index_patterns]"); putRequest.patterns(Collections.singletonList(request.param("template"))); } else { putRequest.patterns(Arrays.asList(request.paramAsStringArray("index_patterns", Strings.EMPTY_ARRAY))); diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestResizeHandler.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestResizeHandler.java index 7d708b440ca4..a6d314c155c8 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestResizeHandler.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestResizeHandler.java @@ -71,7 +71,8 @@ public abstract class RestResizeHandler extends BaseRestHandler { throw new IllegalArgumentException("parameter [copy_settings] can not be explicitly set to [false]"); } } - deprecationLogger.deprecated("parameter [copy_settings] is deprecated and will be removed in 8.0.0"); + deprecationLogger.deprecatedAndMaybeLog("resize_deprecated_parameter", + "parameter [copy_settings] is deprecated and will be removed in 8.0.0"); } resizeRequest.setCopySettings(copySettings); request.applyContentParser(resizeRequest::fromXContent); diff --git a/server/src/main/java/org/elasticsearch/rest/action/cat/RestNodesAction.java b/server/src/main/java/org/elasticsearch/rest/action/cat/RestNodesAction.java index e7d4ab51784b..c1b6c08580e0 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/cat/RestNodesAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/cat/RestNodesAction.java @@ -96,7 +96,7 @@ public class RestNodesAction extends AbstractCatAction { final ClusterStateRequest clusterStateRequest = new ClusterStateRequest(); clusterStateRequest.clear().nodes(true); if (request.hasParam("local")) { - deprecationLogger.deprecated(LOCAL_DEPRECATED_MESSAGE); + deprecationLogger.deprecatedAndMaybeLog("cat_nodes_local_parameter", LOCAL_DEPRECATED_MESSAGE); } clusterStateRequest.local(request.paramAsBoolean("local", clusterStateRequest.local())); clusterStateRequest.masterNodeTimeout(request.paramAsTime("master_timeout", clusterStateRequest.masterNodeTimeout())); diff --git a/server/src/main/java/org/elasticsearch/rest/action/document/RestMultiGetAction.java b/server/src/main/java/org/elasticsearch/rest/action/document/RestMultiGetAction.java index 5eabf37e2061..95bd24bcff1a 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/document/RestMultiGetAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/document/RestMultiGetAction.java @@ -96,7 +96,7 @@ public class RestMultiGetAction extends BaseRestHandler { for (MultiGetRequest.Item item : multiGetRequest.getItems()) { if (item.type() != null) { - deprecationLogger.deprecated(TYPES_DEPRECATION_MESSAGE); + deprecationLogger.deprecatedAndMaybeLog("multi_get_types_removal", TYPES_DEPRECATION_MESSAGE); break; } } diff --git a/server/src/main/java/org/elasticsearch/script/ScriptMetadata.java b/server/src/main/java/org/elasticsearch/script/ScriptMetadata.java index 7558ca72d0cd..3a61494d4270 100644 --- a/server/src/main/java/org/elasticsearch/script/ScriptMetadata.java +++ b/server/src/main/java/org/elasticsearch/script/ScriptMetadata.java @@ -219,9 +219,9 @@ public final class ScriptMetadata implements Metadata.Custom, Writeable, ToXCont if (source.getSource().isEmpty()) { if (source.getLang().equals(Script.DEFAULT_TEMPLATE_LANG)) { - deprecationLogger.deprecated("empty templates should no longer be used"); + deprecationLogger.deprecatedAndMaybeLog("empty_templates","empty templates should no longer be used"); } else { - deprecationLogger.deprecated("empty scripts should no longer be used"); + deprecationLogger.deprecatedAndMaybeLog("empty_scripts", "empty scripts should no longer be used"); } } } diff --git a/server/src/main/java/org/elasticsearch/script/StoredScriptSource.java b/server/src/main/java/org/elasticsearch/script/StoredScriptSource.java index e730446f1098..e6de5ac2d313 100644 --- a/server/src/main/java/org/elasticsearch/script/StoredScriptSource.java +++ b/server/src/main/java/org/elasticsearch/script/StoredScriptSource.java @@ -145,9 +145,9 @@ public class StoredScriptSource extends AbstractDiffable imp if (source == null) { if (ignoreEmpty || Script.DEFAULT_TEMPLATE_LANG.equals(lang)) { if (Script.DEFAULT_TEMPLATE_LANG.equals(lang)) { - deprecationLogger.deprecated("empty templates should no longer be used"); + deprecationLogger.deprecatedAndMaybeLog("empty_templates", "empty templates should no longer be used"); } else { - deprecationLogger.deprecated("empty scripts should no longer be used"); + deprecationLogger.deprecatedAndMaybeLog("empty_scripts", "empty scripts should no longer be used"); } } else { throw new IllegalArgumentException("must specify source for stored script"); @@ -155,9 +155,9 @@ public class StoredScriptSource extends AbstractDiffable imp } else if (source.isEmpty()) { if (ignoreEmpty || Script.DEFAULT_TEMPLATE_LANG.equals(lang)) { if (Script.DEFAULT_TEMPLATE_LANG.equals(lang)) { - deprecationLogger.deprecated("empty templates should no longer be used"); + deprecationLogger.deprecatedAndMaybeLog("empty_templates", "empty templates should no longer be used"); } else { - deprecationLogger.deprecated("empty scripts should no longer be used"); + deprecationLogger.deprecatedAndMaybeLog("empty_scripts", "empty scripts should no longer be used"); } } else { throw new IllegalArgumentException("source cannot be empty"); @@ -257,7 +257,7 @@ public class StoredScriptSource extends AbstractDiffable imp token = parser.nextToken(); if (token == Token.END_OBJECT) { - deprecationLogger.deprecated("empty templates should no longer be used"); + deprecationLogger.deprecatedAndMaybeLog("empty_templates", "empty templates should no longer be used"); return new StoredScriptSource(Script.DEFAULT_TEMPLATE_LANG, "", Collections.emptyMap()); } diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/InternalOrder.java b/server/src/main/java/org/elasticsearch/search/aggregations/InternalOrder.java index e2d3303e4cda..1f3295e0d273 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/InternalOrder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/InternalOrder.java @@ -574,7 +574,8 @@ public abstract class InternalOrder extends BucketOrder { } // _term and _time order deprecated in 6.0; replaced by _key if ("_term".equals(orderKey) || "_time".equals(orderKey)) { - deprecationLogger.deprecated("Deprecated aggregation order key [{}] used, replaced by [_key]", orderKey); + deprecationLogger.deprecatedAndMaybeLog("aggregation_order_key", + "Deprecated aggregation order key [{}] used, replaced by [_key]", orderKey); } switch (orderKey) { case "_term": diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregatorFactory.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregatorFactory.java index c74c3dc07423..46ea8bbb54b2 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregatorFactory.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregatorFactory.java @@ -387,7 +387,8 @@ public class SignificantTermsAggregatorFactory extends ValuesSourceAggregatorFac if ("global_ordinals".equals(value)) { return GLOBAL_ORDINALS; } else if ("global_ordinals_hash".equals(value)) { - deprecationLogger.deprecated("global_ordinals_hash is deprecated. Please use [global_ordinals] instead."); + deprecationLogger.deprecatedAndMaybeLog("global_ordinals_hash", + "global_ordinals_hash is deprecated. Please use [global_ordinals] instead."); return GLOBAL_ORDINALS; } else if ("map".equals(value)) { return MAP; diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/pipeline/MovAvgPipelineAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/pipeline/MovAvgPipelineAggregationBuilder.java index ec7f7a7f06c6..b0bc6cf93839 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/pipeline/MovAvgPipelineAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/pipeline/MovAvgPipelineAggregationBuilder.java @@ -301,7 +301,8 @@ public class MovAvgPipelineAggregationBuilder extends AbstractPipelineAggregatio Integer predict = null; Boolean minimize = null; - DEPRECATION_LOGGER.deprecated("The moving_avg aggregation has been deprecated in favor of the moving_fn aggregation."); + DEPRECATION_LOGGER.deprecatedAndMaybeLog("moving_avg_aggregation", + "The moving_avg aggregation has been deprecated in favor of the moving_fn aggregation."); while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) { if (token == XContentParser.Token.FIELD_NAME) { diff --git a/server/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java b/server/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java index 25b33116477d..0208dc0ce179 100644 --- a/server/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java @@ -1106,7 +1106,7 @@ public final class SearchSourceBuilder implements Writeable, ToXContentObject, R scriptFields.add(new ScriptField(parser)); } } else if (INDICES_BOOST_FIELD.match(currentFieldName, parser.getDeprecationHandler())) { - deprecationLogger.deprecated( + deprecationLogger.deprecatedAndMaybeLog("indices_boost_object_format", "Object format in indices_boost is deprecated, please use array format instead"); while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) { if (token == XContentParser.Token.FIELD_NAME) { diff --git a/server/src/main/java/org/elasticsearch/search/fetch/subphase/FetchDocValuesPhase.java b/server/src/main/java/org/elasticsearch/search/fetch/subphase/FetchDocValuesPhase.java index f0b26a468db9..3d734e247198 100644 --- a/server/src/main/java/org/elasticsearch/search/fetch/subphase/FetchDocValuesPhase.java +++ b/server/src/main/java/org/elasticsearch/search/fetch/subphase/FetchDocValuesPhase.java @@ -87,7 +87,8 @@ public final class FetchDocValuesPhase implements FetchSubPhase { .filter(USE_DEFAULT_FORMAT::equals) .findAny() .isPresent()) { - DEPRECATION_LOGGER.deprecated("[" + USE_DEFAULT_FORMAT + "] is a special format that was only used to " + + DEPRECATION_LOGGER.deprecatedAndMaybeLog("explicit_default_format", + "[" + USE_DEFAULT_FORMAT + "] is a special format that was only used to " + "ease the transition to 7.x. It has become the default and shouldn't be set explicitly anymore."); } diff --git a/server/src/main/java/org/elasticsearch/search/slice/SliceBuilder.java b/server/src/main/java/org/elasticsearch/search/slice/SliceBuilder.java index 40e10eb58900..d2755fbbac15 100644 --- a/server/src/main/java/org/elasticsearch/search/slice/SliceBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/slice/SliceBuilder.java @@ -263,7 +263,8 @@ public class SliceBuilder implements Writeable, ToXContentObject { if (context.getIndexSettings().getIndexVersionCreated().onOrAfter(Version.V_7_0_0)) { throw new IllegalArgumentException("Computing slices on the [_uid] field is illegal for 7.x indices, use [_id] instead"); } - DEPRECATION_LOG.deprecated("Computing slices on the [_uid] field is deprecated for 6.x indices, use [_id] instead"); + DEPRECATION_LOG.deprecatedAndMaybeLog("slice_on_uid", + "Computing slices on the [_uid] field is deprecated for 6.x indices, use [_id] instead"); useTermQuery = true; } else if (IdFieldMapper.NAME.equals(field)) { useTermQuery = true; diff --git a/server/src/main/java/org/elasticsearch/search/sort/FieldSortBuilder.java b/server/src/main/java/org/elasticsearch/search/sort/FieldSortBuilder.java index cbf5173d3171..2bca9400193b 100644 --- a/server/src/main/java/org/elasticsearch/search/sort/FieldSortBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/sort/FieldSortBuilder.java @@ -693,14 +693,16 @@ public class FieldSortBuilder extends SortBuilder { static { PARSER.declareField(FieldSortBuilder::missing, XContentParser::objectText, MISSING, ValueType.VALUE); PARSER.declareString((fieldSortBuilder, nestedPath) -> { - deprecationLogger.deprecated("[nested_path] has been deprecated in favor of the [nested] parameter"); + deprecationLogger.deprecatedAndMaybeLog("field_sort_nested_path", + "[nested_path] has been deprecated in favor of the [nested] parameter"); fieldSortBuilder.setNestedPath(nestedPath); }, NESTED_PATH_FIELD); PARSER.declareString(FieldSortBuilder::unmappedType , UNMAPPED_TYPE); PARSER.declareString((b, v) -> b.order(SortOrder.fromString(v)) , ORDER_FIELD); PARSER.declareString((b, v) -> b.sortMode(SortMode.fromString(v)), SORT_MODE); PARSER.declareObject(FieldSortBuilder::setNestedFilter, (p, c) -> { - deprecationLogger.deprecated("[nested_filter] has been deprecated in favour for the [nested] parameter"); + deprecationLogger.deprecatedAndMaybeLog("field_sort_nested_filter", + "[nested_filter] has been deprecated in favour for the [nested] parameter"); return SortBuilder.parseNestedFilter(p); }, NESTED_FILTER_FIELD); PARSER.declareObject(FieldSortBuilder::setNestedSort, (p, c) -> NestedSortBuilder.fromXContent(p), NESTED_FIELD); diff --git a/server/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java b/server/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java index e85a3b5a0305..d6fbbe81e677 100644 --- a/server/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java @@ -491,7 +491,8 @@ public class GeoDistanceSortBuilder extends SortBuilder fieldName = currentName; } else if (token == XContentParser.Token.START_OBJECT) { if (NESTED_FILTER_FIELD.match(currentName, parser.getDeprecationHandler())) { - deprecationLogger.deprecated("[nested_filter] has been deprecated in favour of the [nested] parameter"); + deprecationLogger.deprecatedAndMaybeLog("geo_distance_nested_filter", + "[nested_filter] has been deprecated in favour of the [nested] parameter"); nestedFilter = parseInnerQueryBuilder(parser); } else if (NESTED_FIELD.match(currentName, parser.getDeprecationHandler())) { nestedSort = NestedSortBuilder.fromXContent(parser); @@ -521,7 +522,8 @@ public class GeoDistanceSortBuilder extends SortBuilder } else if (SORTMODE_FIELD.match(currentName, parser.getDeprecationHandler())) { sortMode = SortMode.fromString(parser.text()); } else if (NESTED_PATH_FIELD.match(currentName, parser.getDeprecationHandler())) { - deprecationLogger.deprecated("[nested_path] has been deprecated in favour of the [nested] parameter"); + deprecationLogger.deprecatedAndMaybeLog("geo_distance_nested_path", + "[nested_path] has been deprecated in favour of the [nested] parameter"); nestedPath = parser.text(); } else if (IGNORE_UNMAPPED.match(currentName, parser.getDeprecationHandler())) { ignoreUnmapped = parser.booleanValue(); diff --git a/server/src/main/java/org/elasticsearch/search/sort/ScriptSortBuilder.java b/server/src/main/java/org/elasticsearch/search/sort/ScriptSortBuilder.java index 51874f85d6dc..25b8cd92d424 100644 --- a/server/src/main/java/org/elasticsearch/search/sort/ScriptSortBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/sort/ScriptSortBuilder.java @@ -281,11 +281,13 @@ public class ScriptSortBuilder extends SortBuilder { PARSER.declareString((b, v) -> b.order(SortOrder.fromString(v)), ORDER_FIELD); PARSER.declareString((b, v) -> b.sortMode(SortMode.fromString(v)), SORTMODE_FIELD); PARSER.declareString((fieldSortBuilder, nestedPath) -> { - deprecationLogger.deprecated("[nested_path] has been deprecated in favor of the [nested] parameter"); + deprecationLogger.deprecatedAndMaybeLog("script_nested_path", + "[nested_path] has been deprecated in favor of the [nested] parameter"); fieldSortBuilder.setNestedPath(nestedPath); }, NESTED_PATH_FIELD); PARSER.declareObject(ScriptSortBuilder::setNestedFilter, (p, c) -> { - deprecationLogger.deprecated("[nested_filter] has been deprecated in favour for the [nested] parameter"); + deprecationLogger.deprecatedAndMaybeLog("script_nested_filter", + "[nested_filter] has been deprecated in favour for the [nested] parameter"); return SortBuilder.parseNestedFilter(p); }, NESTED_FILTER_FIELD); PARSER.declareObject(ScriptSortBuilder::setNestedSort, (p, c) -> NestedSortBuilder.fromXContent(p), NESTED_FIELD); diff --git a/server/src/main/java/org/elasticsearch/transport/TransportInfo.java b/server/src/main/java/org/elasticsearch/transport/TransportInfo.java index 607321fc9549..449f58851f2d 100644 --- a/server/src/main/java/org/elasticsearch/transport/TransportInfo.java +++ b/server/src/main/java/org/elasticsearch/transport/TransportInfo.java @@ -103,7 +103,7 @@ public class TransportInfo implements ReportingService.Info { if (cnameInPublishAddress) { publishAddressString = hostString + '/' + publishAddress.toString(); } else { - deprecationLogger.deprecated( + deprecationLogger.deprecatedAndMaybeLog("cname_in_publish_address", propertyName + " was printed as [ip:port] instead of [hostname/ip:port]. " + "This format is deprecated and will change to [hostname/ip:port] in a future version. " + "Use -Des.transport.cname_in_publish_address=true to enforce non-deprecated formatting." diff --git a/server/src/test/java/org/elasticsearch/action/admin/indices/TransportAnalyzeActionTests.java b/server/src/test/java/org/elasticsearch/action/admin/indices/TransportAnalyzeActionTests.java index 57d2dc689aaf..857836a7f009 100644 --- a/server/src/test/java/org/elasticsearch/action/admin/indices/TransportAnalyzeActionTests.java +++ b/server/src/test/java/org/elasticsearch/action/admin/indices/TransportAnalyzeActionTests.java @@ -118,13 +118,15 @@ public class TransportAnalyzeActionTests extends ESTestCase { @Override public TokenStream create(TokenStream tokenStream) { - deprecationLogger.deprecated("Using deprecated token filter [deprecated]"); + deprecationLogger.deprecatedAndMaybeLog("deprecated_token_filter_create", + "Using deprecated token filter [deprecated]"); return tokenStream; } @Override public TokenStream normalize(TokenStream tokenStream) { - deprecationLogger.deprecated("Using deprecated token filter [deprecated]"); + deprecationLogger.deprecatedAndMaybeLog("deprecated_token_filter_normalize", + "Using deprecated token filter [deprecated]"); return tokenStream; } } diff --git a/server/src/test/java/org/elasticsearch/common/logging/DeprecationLoggerTests.java b/server/src/test/java/org/elasticsearch/common/logging/DeprecationLoggerTests.java index 70bbe93fdce4..6d1e350bdf72 100644 --- a/server/src/test/java/org/elasticsearch/common/logging/DeprecationLoggerTests.java +++ b/server/src/test/java/org/elasticsearch/common/logging/DeprecationLoggerTests.java @@ -166,7 +166,7 @@ public class DeprecationLoggerTests extends ESTestCase { ThreadContext threadContext = new ThreadContext(Settings.EMPTY); DeprecationLogger.setThreadContext(threadContext); - logger.deprecated(expected); + logger.deprecatedAndMaybeLog("testCanRemoveThreadContext_key1", expected); { final Map> responseHeaders = threadContext.getResponseHeaders(); @@ -178,7 +178,7 @@ public class DeprecationLoggerTests extends ESTestCase { } DeprecationLogger.removeThreadContext(threadContext); - logger.deprecated(unexpected); + logger.deprecatedAndMaybeLog("testCanRemoveThreadContext_key2", unexpected); { final Map> responseHeaders = threadContext.getResponseHeaders(); @@ -340,7 +340,7 @@ public class DeprecationLoggerTests extends ESTestCase { new ProtectionDomain[]{new ProtectionDomain(null, new Permissions())} ); AccessController.doPrivileged((PrivilegedAction) () -> { - deprecationLogger.deprecated("foo", "bar"); + deprecationLogger.deprecatedAndMaybeLog("testLogPermissions_key", "foo", "bar"); return null; }, noPermissionsAcc); assertThat("supplier called", supplierCalled.get(), is(true)); diff --git a/server/src/test/java/org/elasticsearch/index/analysis/AnalysisRegistryTests.java b/server/src/test/java/org/elasticsearch/index/analysis/AnalysisRegistryTests.java index 34b219c28a6e..bcdb8b6682e3 100644 --- a/server/src/test/java/org/elasticsearch/index/analysis/AnalysisRegistryTests.java +++ b/server/src/test/java/org/elasticsearch/index/analysis/AnalysisRegistryTests.java @@ -81,8 +81,8 @@ public class AnalysisRegistryTests extends ESTestCase { public List getPreConfiguredTokenFilters() { return singletonList(PreConfiguredTokenFilter.singleton("reverse", true, ReverseStringFilter::new)); } - } - + } + private static IndexSettings indexSettingsOfCurrentVersion(Settings.Builder settings) { return IndexSettingsModule.newIndexSettings("index", settings .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) @@ -154,29 +154,29 @@ public class AnalysisRegistryTests extends ESTestCase { emptyMap(), emptyMap(), emptyMap())); assertEquals("analyzer [default] contains filters [my_filter] that are not allowed to run in all mode.", ex.getMessage()); } - - + + public void testNameClashNormalizer() throws IOException { - + // Test out-of-the-box normalizer works OK. IndexAnalyzers indexAnalyzers = nonEmptyRegistry.build(IndexSettingsModule.newIndexSettings("index", Settings.EMPTY)); assertNotNull(indexAnalyzers.getNormalizer("lowercase")); assertThat(indexAnalyzers.getNormalizer("lowercase").normalize("field", "AbC").utf8ToString(), equalTo("abc")); - - // Test that a name clash with a custom normalizer will favour the index's normalizer rather than the out-of-the-box - // one of the same name. (However this "feature" will be removed with https://github.com/elastic/elasticsearch/issues/22263 ) + + // Test that a name clash with a custom normalizer will favour the index's normalizer rather than the out-of-the-box + // one of the same name. (However this "feature" will be removed with https://github.com/elastic/elasticsearch/issues/22263 ) Settings settings = Settings.builder() // Deliberately bad choice of normalizer name for the job it does. .put("index.analysis.normalizer.lowercase.type", "custom") .putList("index.analysis.normalizer.lowercase.filter", "reverse") .build(); - + indexAnalyzers = nonEmptyRegistry.build(IndexSettingsModule.newIndexSettings("index", settings)); assertNotNull(indexAnalyzers.getNormalizer("lowercase")); assertThat(indexAnalyzers.getNormalizer("lowercase").normalize("field","AbC").utf8ToString(), equalTo("CbA")); - } + } + - public void testOverrideDefaultIndexAnalyzerIsUnsupported() { Version version = VersionUtils.randomVersionBetween(random(), Version.V_6_0_0_alpha1, Version.CURRENT); Settings settings = Settings.builder().put(IndexMetadata.SETTING_VERSION_CREATED, version).build(); @@ -326,7 +326,7 @@ public class AnalysisRegistryTests extends ESTestCase { @Override public TokenStream create(TokenStream tokenStream) { if (indexSettings.getIndexVersionCreated().equals(Version.CURRENT)) { - deprecationLogger.deprecated("Using deprecated token filter [deprecated]"); + deprecationLogger.deprecatedAndMaybeLog("deprecated_token_filter", "Using deprecated token filter [deprecated]"); } return tokenStream; } @@ -354,7 +354,7 @@ public class AnalysisRegistryTests extends ESTestCase { @Override public TokenStream create(TokenStream tokenStream) { - deprecationLogger.deprecated("Using deprecated token filter [unused]"); + deprecationLogger.deprecatedAndMaybeLog("unused_token_filter", "Using deprecated token filter [unused]"); return tokenStream; } } @@ -367,7 +367,8 @@ public class AnalysisRegistryTests extends ESTestCase { @Override public TokenStream create(TokenStream tokenStream) { - deprecationLogger.deprecated("Using deprecated token filter [deprecated_normalizer]"); + deprecationLogger.deprecatedAndMaybeLog("deprecated_normalizer", + "Using deprecated token filter [deprecated_normalizer]"); return tokenStream; } diff --git a/server/src/test/java/org/elasticsearch/rest/DeprecationRestHandlerTests.java b/server/src/test/java/org/elasticsearch/rest/DeprecationRestHandlerTests.java index 0dc108ff587c..cbce81f7d2f4 100644 --- a/server/src/test/java/org/elasticsearch/rest/DeprecationRestHandlerTests.java +++ b/server/src/test/java/org/elasticsearch/rest/DeprecationRestHandlerTests.java @@ -77,7 +77,7 @@ public class DeprecationRestHandlerTests extends ESTestCase { InOrder inOrder = inOrder(handler, request, channel, deprecationLogger); // log, then forward - inOrder.verify(deprecationLogger).deprecated(deprecationMessage); + inOrder.verify(deprecationLogger).deprecatedAndMaybeLog("deprecated_route", deprecationMessage); inOrder.verify(handler).handleRequest(request, channel, client); inOrder.verifyNoMoreInteractions(); } diff --git a/x-pack/plugin/async-search/qa/rest/src/main/java/org/elasticsearch/query/DeprecatedQueryBuilder.java b/x-pack/plugin/async-search/qa/rest/src/main/java/org/elasticsearch/query/DeprecatedQueryBuilder.java index 7b4d1ed0ebfa..db5ec14dcbd9 100644 --- a/x-pack/plugin/async-search/qa/rest/src/main/java/org/elasticsearch/query/DeprecatedQueryBuilder.java +++ b/x-pack/plugin/async-search/qa/rest/src/main/java/org/elasticsearch/query/DeprecatedQueryBuilder.java @@ -54,7 +54,7 @@ public class DeprecatedQueryBuilder extends AbstractQueryBuilder builder.field(TransformField.COUNT.getPreferredName(), invalidTransforms.size()); builder.field(TransformField.TRANSFORMS.getPreferredName(), invalidTransforms); builder.endObject(); - deprecationLogger.deprecated(INVALID_TRANSFORMS_DEPRECATION_WARNING, invalidTransforms.size()); + deprecationLogger.deprecatedAndMaybeLog( + "invalid_transforms", + INVALID_TRANSFORMS_DEPRECATION_WARNING, + invalidTransforms.size() + ); } builder.endObject(); diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/job/JobManager.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/job/JobManager.java index b7e235b78062..b810815e21e6 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/job/JobManager.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/job/JobManager.java @@ -246,7 +246,8 @@ public class JobManager { Job job = request.getJobBuilder().build(new Date()); if (job.getDataDescription() != null && job.getDataDescription().getFormat() == DataDescription.DataFormat.DELIMITED) { - deprecationLogger.deprecated("Creating jobs with delimited data format is deprecated. Please use xcontent instead."); + deprecationLogger.deprecatedAndMaybeLog("ml_create_job_delimited_data", + "Creating jobs with delimited data format is deprecated. Please use xcontent instead."); } // Check for the job in the cluster state first diff --git a/x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/rollup/action/TransportPutRollupJobAction.java b/x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/rollup/action/TransportPutRollupJobAction.java index 57a048487a8c..c9453e178e63 100644 --- a/x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/rollup/action/TransportPutRollupJobAction.java +++ b/x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/rollup/action/TransportPutRollupJobAction.java @@ -132,7 +132,8 @@ public class TransportPutRollupJobAction extends TransportMasterNodeAction location, String usedName, String modernName) { String prefix = parserName == null ? "" : "[" + parserName + "][" + location.get() + "] "; - deprecationLogger.deprecated("{}Deprecated field [{}] used in api key [{}], expected [{}] instead", + deprecationLogger.deprecatedAndMaybeLog("api_key_field", + "{}Deprecated field [{}] used in api key [{}], expected [{}] instead", prefix, usedName, apiKeyId, modernName); } @Override public void usedDeprecatedField(String parserName, Supplier location, String usedName, String replacedWith) { String prefix = parserName == null ? "" : "[" + parserName + "][" + location.get() + "] "; - deprecationLogger.deprecated("{}Deprecated field [{}] used in api key [{}], replaced by [{}]", + deprecationLogger.deprecatedAndMaybeLog("api_key_field", + "{}Deprecated field [{}] used in api key [{}], replaced by [{}]", prefix, usedName, apiKeyId, replacedWith); } @Override public void usedDeprecatedField(String parserName, Supplier location, String usedName) { String prefix = parserName == null ? "" : "[" + parserName + "][" + location.get() + "] "; - deprecationLogger.deprecated( + deprecationLogger.deprecatedAndMaybeLog("api_key_field", "{}Deprecated field [{}] used in api key [{}], which is unused and will be removed entirely", prefix, usedName); } diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/Realms.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/Realms.java index cb157cea6951..e0f0828ee724 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/Realms.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/Realms.java @@ -347,7 +347,7 @@ public class Realms implements Iterable { private void logDeprecationIfFound(Set missingOrderRealmSettingKeys, Map> orderToRealmOrderSettingKeys) { if (missingOrderRealmSettingKeys.size() > 0) { - deprecationLogger.deprecated("Found realms without order config: [{}]. " + + deprecationLogger.deprecatedAndMaybeLog("unordered_realm_config", "Found realms without order config: [{}]. " + "In next major release, node will fail to start with missing realm order.", String.join("; ", missingOrderRealmSettingKeys) ); @@ -359,7 +359,8 @@ public class Realms implements Iterable { .sorted() .collect(Collectors.toList()); if (false == duplicatedRealmOrderSettingKeys.isEmpty()) { - deprecationLogger.deprecated("Found multiple realms configured with the same order: [{}]. " + + deprecationLogger.deprecatedAndMaybeLog("duplicate_realm_order", + "Found multiple realms configured with the same order: [{}]. " + "In next major release, node will fail to start with duplicated realm order.", String.join("; ", duplicatedRealmOrderSettingKeys)); } diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/ldap/ActiveDirectorySessionFactory.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/ldap/ActiveDirectorySessionFactory.java index d1f11ca65c40..7aa1491e8ce9 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/ldap/ActiveDirectorySessionFactory.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/ldap/ActiveDirectorySessionFactory.java @@ -523,9 +523,10 @@ class ActiveDirectorySessionFactory extends PoolingSessionFactory { super(config, timeout, ignoreReferralErrors, logger, groupsResolver, metadataResolver, domainDN, ActiveDirectorySessionFactorySettings.AD_UPN_USER_SEARCH_FILTER_SETTING, UPN_USER_FILTER, threadPool); if (userSearchFilter.contains("{0}")) { - new DeprecationLogger(logger).deprecated("The use of the account name variable {0} in the setting [" - + RealmSettings.getFullSettingKey(config, ActiveDirectorySessionFactorySettings.AD_UPN_USER_SEARCH_FILTER_SETTING) + - "] has been deprecated and will be removed in a future version!"); + new DeprecationLogger(logger).deprecatedAndMaybeLog("ldap_settings", + "The use of the account name variable {0} in the setting [" + + RealmSettings.getFullSettingKey(config, ActiveDirectorySessionFactorySettings.AD_UPN_USER_SEARCH_FILTER_SETTING) + + "] has been deprecated and will be removed in a future version!"); } } diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/ldap/support/SessionFactory.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/ldap/support/SessionFactory.java index 2df8cf18b60e..31affff20dd2 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/ldap/support/SessionFactory.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/ldap/support/SessionFactory.java @@ -157,10 +157,14 @@ public abstract class SessionFactory { options.setSSLSocketVerifier(new HostNameSSLSocketVerifier(true)); } } else if (hostnameVerificationExists) { - new DeprecationLogger(logger).deprecated("the setting [{}] has been deprecated and " + - "will be removed in a future version. use [{}] instead", - RealmSettings.getFullSettingKey(config, SessionFactorySettings.HOSTNAME_VERIFICATION_SETTING), - RealmSettings.getFullSettingKey(config, SSLConfigurationSettings.VERIFICATION_MODE_SETTING_REALM)); + final String fullSettingKey = RealmSettings.getFullSettingKey(config, SessionFactorySettings.HOSTNAME_VERIFICATION_SETTING); + final String deprecationKey = "deprecated_setting_" + fullSettingKey.replace('.', '_'); + new DeprecationLogger(logger).deprecatedAndMaybeLog( + deprecationKey, + "the setting [{}] has been deprecated and " + "will be removed in a future version. use [{}] instead", + fullSettingKey, + RealmSettings.getFullSettingKey(config, SSLConfigurationSettings.VERIFICATION_MODE_SETTING_REALM) + ); if (config.getSetting(SessionFactorySettings.HOSTNAME_VERIFICATION_SETTING)) { options.setSSLSocketVerifier(new HostNameSSLSocketVerifier(true)); } diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authz/store/DeprecationRoleDescriptorConsumer.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authz/store/DeprecationRoleDescriptorConsumer.java index 86e4fb22b278..04925984017c 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authz/store/DeprecationRoleDescriptorConsumer.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authz/store/DeprecationRoleDescriptorConsumer.java @@ -206,7 +206,7 @@ public final class DeprecationRoleDescriptorConsumer implements Consumer