diff --git a/docs/reference/index-modules/slowlog.asciidoc b/docs/reference/index-modules/slowlog.asciidoc index 34a6d89474c51..1eb27fb058597 100644 --- a/docs/reference/index-modules/slowlog.asciidoc +++ b/docs/reference/index-modules/slowlog.asciidoc @@ -22,12 +22,10 @@ index.search.slowlog.threshold.fetch.warn: 1s index.search.slowlog.threshold.fetch.info: 800ms index.search.slowlog.threshold.fetch.debug: 500ms index.search.slowlog.threshold.fetch.trace: 200ms - -index.search.slowlog.level: info -------------------------------------------------- All of the above settings are _dynamic_ and can be set for each index using the -<> API. For example: +<> API. For example: [source,console] -------------------------------------------------- @@ -40,17 +38,12 @@ PUT /twitter/_settings "index.search.slowlog.threshold.fetch.warn": "1s", "index.search.slowlog.threshold.fetch.info": "800ms", "index.search.slowlog.threshold.fetch.debug": "500ms", - "index.search.slowlog.threshold.fetch.trace": "200ms", - "index.search.slowlog.level": "info" + "index.search.slowlog.threshold.fetch.trace": "200ms" } -------------------------------------------------- // TEST[setup:twitter] -By default, none are enabled (set to `-1`). Levels (`warn`, `info`, -`debug`, `trace`) allow to control under which logging level the log -will be logged. Not all are required to be configured (for example, only -`warn` threshold can be set). The benefit of several levels is the -ability to quickly "grep" for specific thresholds breached. +By default thresholds are disabled (set to `-1`). The logging is done on the shard level scope, meaning the execution of a search request within a specific shard. It does not encompass the whole @@ -59,40 +52,15 @@ execute. Some of the benefits of shard level logging is the association of the actual execution on the specific machine, compared with request level. -The logging file is configured by default using the following -configuration (found in `log4j2.properties`): -[source,properties] --------------------------------------------------- -appender.index_search_slowlog_rolling.type = RollingFile -appender.index_search_slowlog_rolling.name = index_search_slowlog_rolling -appender.index_search_slowlog_rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_search_slowlog.log -appender.index_search_slowlog_rolling.layout.type = PatternLayout -appender.index_search_slowlog_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] [%node_name]%marker %.-10000m%n -appender.index_search_slowlog_rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_search_slowlog-%i.log.gz -appender.index_search_slowlog_rolling.policies.type = Policies -appender.index_search_slowlog_rolling.policies.size.type = SizeBasedTriggeringPolicy -appender.index_search_slowlog_rolling.policies.size.size = 1GB -appender.index_search_slowlog_rolling.strategy.type = DefaultRolloverStrategy -appender.index_search_slowlog_rolling.strategy.max = 4 - -logger.index_search_slowlog_rolling.name = index.search.slowlog -logger.index_search_slowlog_rolling.level = trace -logger.index_search_slowlog_rolling.appenderRef.index_search_slowlog_rolling.ref = index_search_slowlog_rolling -logger.index_search_slowlog_rolling.additivity = false --------------------------------------------------- +The search slow log file is configured in the `log4j2.properties` file. [float] ==== Identifying search slow log origin It is often useful to identify what triggered a slow running query. If a call was initiated with an `X-Opaque-ID` header, then the user ID -is included in Search Slow logs as an additional **id** field (scroll to the right). -[source,txt] ---------------------------- -[2030-08-30T11:59:37,786][WARN ][i.s.s.query ] [node-0] [index6][0] took[78.4micros], took_millis[0], total_hits[0 hits], stats[], search_type[QUERY_THEN_FETCH], total_shards[1], source[{"query":{"match_all":{"boost":1.0}}}], id[MY_USER_ID], ---------------------------- -// NOTCONSOLE -The user ID is also included in JSON logs. +is included in Search Slow logs as an additional **id** field + [source,js] --------------------------- { @@ -122,7 +90,7 @@ The user ID is also included in JSON logs. === Index Slow log The indexing slow log, similar in functionality to the search slow -log. The log file name ends with `_index_indexing_slowlog.log`. Log and +log. The log file name ends with `_index_indexing_slowlog.json`. Log and the thresholds are configured in the same way as the search slowlog. Index slowlog sample: @@ -132,12 +100,11 @@ index.indexing.slowlog.threshold.index.warn: 10s index.indexing.slowlog.threshold.index.info: 5s index.indexing.slowlog.threshold.index.debug: 2s index.indexing.slowlog.threshold.index.trace: 500ms -index.indexing.slowlog.level: info index.indexing.slowlog.source: 1000 -------------------------------------------------- All of the above settings are _dynamic_ and can be set for each index using the -<> API. For example: +<> API. For example: [source,console] -------------------------------------------------- @@ -147,7 +114,6 @@ PUT /twitter/_settings "index.indexing.slowlog.threshold.index.info": "5s", "index.indexing.slowlog.threshold.index.debug": "2s", "index.indexing.slowlog.threshold.index.trace": "500ms", - "index.indexing.slowlog.level": "info", "index.indexing.slowlog.source": "1000" } -------------------------------------------------- @@ -162,25 +128,4 @@ the original document format is important, you can turn off reformatting by sett `index.indexing.slowlog.reformat` to `false`, which will cause the source to be logged "as is" and can potentially span multiple log lines. -The index slow log file is configured by default in the `log4j2.properties` -file: - -[source,properties] --------------------------------------------------- -appender.index_indexing_slowlog_rolling.type = RollingFile -appender.index_indexing_slowlog_rolling.name = index_indexing_slowlog_rolling -appender.index_indexing_slowlog_rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_indexing_slowlog.log -appender.index_indexing_slowlog_rolling.layout.type = PatternLayout -appender.index_indexing_slowlog_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] [%node_name]%marker %.-10000m%n -appender.index_indexing_slowlog_rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_indexing_slowlog-%i.log.gz -appender.index_indexing_slowlog_rolling.policies.type = Policies -appender.index_indexing_slowlog_rolling.policies.size.type = SizeBasedTriggeringPolicy -appender.index_indexing_slowlog_rolling.policies.size.size = 1GB -appender.index_indexing_slowlog_rolling.strategy.type = DefaultRolloverStrategy -appender.index_indexing_slowlog_rolling.strategy.max = 4 - -logger.index_indexing_slowlog.name = index.indexing.slowlog.index -logger.index_indexing_slowlog.level = trace -logger.index_indexing_slowlog.appenderRef.index_indexing_slowlog_rolling.ref = index_indexing_slowlog_rolling -logger.index_indexing_slowlog.additivity = false --------------------------------------------------- +The index slow log file is configured in the `log4j2.properties` file. diff --git a/docs/reference/release-notes/8.0.0-alpha1.asciidoc b/docs/reference/release-notes/8.0.0-alpha1.asciidoc index 86301733de231..713966cfcde2b 100644 --- a/docs/reference/release-notes/8.0.0-alpha1.asciidoc +++ b/docs/reference/release-notes/8.0.0-alpha1.asciidoc @@ -18,4 +18,11 @@ Mapping:: Deprecations:: * Remove undocumented endpoints of hot threads API {pull}55109[#55109] +Slow loggers:: +* `index.indexing.slowlog.level` and `index.search.slowlog.level` are removed. These settings can be worked around +by using appropriate thresholds. If for instance we want to simulate `index.indexing.slowlog.level` = `INFO` then +all we need to do is to set `index.indexing.slowlog.threshold.index.debug` and +`index.indexing.slowlog.threshold.index.trace` to `-1` {pull}57591[#57591] + + coming[8.0.0] diff --git a/server/src/main/java/org/elasticsearch/common/settings/IndexScopedSettings.java b/server/src/main/java/org/elasticsearch/common/settings/IndexScopedSettings.java index 3fee46c38781d..9a740dab82ede 100644 --- a/server/src/main/java/org/elasticsearch/common/settings/IndexScopedSettings.java +++ b/server/src/main/java/org/elasticsearch/common/settings/IndexScopedSettings.java @@ -88,12 +88,10 @@ public final class IndexScopedSettings extends AbstractScopedSettings { SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_DEBUG_SETTING, SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_INFO_SETTING, SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_TRACE_SETTING, - SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL, IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_WARN_SETTING, IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_DEBUG_SETTING, IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_INFO_SETTING, IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING, - IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING, IndexingSlowLog.INDEX_INDEXING_SLOWLOG_REFORMAT_SETTING, IndexingSlowLog.INDEX_INDEXING_SLOWLOG_MAX_SOURCE_CHARS_TO_LOG_SETTING, MergePolicyConfig.INDEX_COMPOUND_FORMAT_SETTING, diff --git a/server/src/main/java/org/elasticsearch/index/IndexingSlowLog.java b/server/src/main/java/org/elasticsearch/index/IndexingSlowLog.java index a86a94c743544..c1af3ce0220c5 100644 --- a/server/src/main/java/org/elasticsearch/index/IndexingSlowLog.java +++ b/server/src/main/java/org/elasticsearch/index/IndexingSlowLog.java @@ -19,6 +19,7 @@ package org.elasticsearch.index; +import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.util.StringBuilders; @@ -58,9 +59,6 @@ public final class IndexingSlowLog implements IndexingOperationListener { TimeValue.timeValueMillis(-1), Property.Dynamic, Property.IndexScope); public static final Setting INDEX_INDEXING_SLOWLOG_REFORMAT_SETTING = Setting.boolSetting(INDEX_INDEXING_SLOWLOG_PREFIX +".reformat", true, Property.Dynamic, Property.IndexScope); - public static final Setting INDEX_INDEXING_SLOWLOG_LEVEL_SETTING = - new Setting<>(INDEX_INDEXING_SLOWLOG_PREFIX +".level", SlowLogLevel.TRACE.name(), SlowLogLevel::parse, Property.Dynamic, - Property.IndexScope); private final Logger indexLogger; private final Index index; @@ -75,7 +73,6 @@ public final class IndexingSlowLog implements IndexingOperationListener { * characters of the source. */ private int maxSourceCharsToLog; - private SlowLogLevel level; /** * Reads how much of the source to log. The user can specify any value they @@ -94,7 +91,7 @@ public final class IndexingSlowLog implements IndexingOperationListener { IndexingSlowLog(IndexSettings indexSettings) { this.indexLogger = LogManager.getLogger(INDEX_INDEXING_SLOWLOG_PREFIX + ".index"); - Loggers.setLevel(this.indexLogger, SlowLogLevel.TRACE.name()); + Loggers.setLevel(this.indexLogger, Level.TRACE); this.index = indexSettings.getIndex(); indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_INDEXING_SLOWLOG_REFORMAT_SETTING, this::setReformat); @@ -111,8 +108,6 @@ public final class IndexingSlowLog implements IndexingOperationListener { indexSettings.getScopedSettings() .addSettingsUpdateConsumer(INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING, this::setTraceThreshold); this.indexTraceThreshold = indexSettings.getValue(INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING).nanos(); - indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_INDEXING_SLOWLOG_LEVEL_SETTING, this::setLevel); - setLevel(indexSettings.getValue(INDEX_INDEXING_SLOWLOG_LEVEL_SETTING)); indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_INDEXING_SLOWLOG_MAX_SOURCE_CHARS_TO_LOG_SETTING, this::setMaxSourceCharsToLog); this.maxSourceCharsToLog = indexSettings.getValue(INDEX_INDEXING_SLOWLOG_MAX_SOURCE_CHARS_TO_LOG_SETTING); @@ -122,10 +117,6 @@ private void setMaxSourceCharsToLog(int maxSourceCharsToLog) { this.maxSourceCharsToLog = maxSourceCharsToLog; } - private void setLevel(SlowLogLevel level) { - this.level = level; - } - private void setWarnThreshold(TimeValue warnThreshold) { this.indexWarnThreshold = warnThreshold.nanos(); } @@ -151,14 +142,13 @@ public void postIndex(ShardId shardId, Engine.Index indexOperation, Engine.Index if (result.getResultType() == Engine.Result.Type.SUCCESS) { final ParsedDocument doc = indexOperation.parsedDoc(); final long tookInNanos = result.getTook(); - // when logger level is more specific than WARN AND event is within threshold it should be logged - if (indexWarnThreshold >= 0 && tookInNanos > indexWarnThreshold && level.isLevelEnabledFor(SlowLogLevel.WARN)) { + if (indexWarnThreshold >= 0 && tookInNanos > indexWarnThreshold) { indexLogger.warn(IndexingSlowLogMessage.of(index, doc, tookInNanos, reformat, maxSourceCharsToLog)); - } else if (indexInfoThreshold >= 0 && tookInNanos > indexInfoThreshold && level.isLevelEnabledFor(SlowLogLevel.INFO)) { + } else if (indexInfoThreshold >= 0 && tookInNanos > indexInfoThreshold) { indexLogger.info(IndexingSlowLogMessage.of(index, doc, tookInNanos, reformat, maxSourceCharsToLog)); - } else if (indexDebugThreshold >= 0 && tookInNanos > indexDebugThreshold && level.isLevelEnabledFor(SlowLogLevel.DEBUG)) { + } else if (indexDebugThreshold >= 0 && tookInNanos > indexDebugThreshold) { indexLogger.debug(IndexingSlowLogMessage.of(index, doc, tookInNanos, reformat, maxSourceCharsToLog)); - } else if (indexTraceThreshold >= 0 && tookInNanos > indexTraceThreshold && level.isLevelEnabledFor(SlowLogLevel.TRACE)) { + } else if (indexTraceThreshold >= 0 && tookInNanos > indexTraceThreshold) { indexLogger.trace(IndexingSlowLogMessage.of(index, doc, tookInNanos, reformat, maxSourceCharsToLog)); } } @@ -232,8 +222,4 @@ int getMaxSourceCharsToLog() { return maxSourceCharsToLog; } - SlowLogLevel getLevel() { - return level; - } - } diff --git a/server/src/main/java/org/elasticsearch/index/SearchSlowLog.java b/server/src/main/java/org/elasticsearch/index/SearchSlowLog.java index d5ac3af4bd43a..d3ba58a7612f6 100644 --- a/server/src/main/java/org/elasticsearch/index/SearchSlowLog.java +++ b/server/src/main/java/org/elasticsearch/index/SearchSlowLog.java @@ -20,6 +20,7 @@ package org.elasticsearch.index; import com.fasterxml.jackson.core.io.JsonStringEncoder; +import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.elasticsearch.common.logging.ESLogMessage; @@ -80,18 +81,14 @@ public final class SearchSlowLog implements SearchOperationListener { public static final Setting INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_TRACE_SETTING = Setting.timeSetting(INDEX_SEARCH_SLOWLOG_PREFIX + ".threshold.fetch.trace", TimeValue.timeValueNanos(-1), TimeValue.timeValueMillis(-1), Property.Dynamic, Property.IndexScope); - public static final Setting INDEX_SEARCH_SLOWLOG_LEVEL = - new Setting<>(INDEX_SEARCH_SLOWLOG_PREFIX + ".level", SlowLogLevel.TRACE.name(), SlowLogLevel::parse, Property.Dynamic, - Property.IndexScope); private static final ToXContent.Params FORMAT_PARAMS = new ToXContent.MapParams(Collections.singletonMap("pretty", "false")); - private SlowLogLevel level; public SearchSlowLog(IndexSettings indexSettings) { this.queryLogger = LogManager.getLogger(INDEX_SEARCH_SLOWLOG_PREFIX + ".query"); this.fetchLogger = LogManager.getLogger(INDEX_SEARCH_SLOWLOG_PREFIX + ".fetch"); - Loggers.setLevel(this.fetchLogger, SlowLogLevel.TRACE.name()); - Loggers.setLevel(this.queryLogger, SlowLogLevel.TRACE.name()); + Loggers.setLevel(this.fetchLogger, Level.TRACE); + Loggers.setLevel(this.queryLogger, Level.TRACE); indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_WARN_SETTING, this::setQueryWarnThreshold); @@ -118,37 +115,30 @@ public SearchSlowLog(IndexSettings indexSettings) { indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_TRACE_SETTING, this::setFetchTraceThreshold); this.fetchTraceThreshold = indexSettings.getValue(INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_TRACE_SETTING).nanos(); - - indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_SEARCH_SLOWLOG_LEVEL, this::setLevel); - setLevel(indexSettings.getValue(INDEX_SEARCH_SLOWLOG_LEVEL)); - } - - private void setLevel(SlowLogLevel level) { - this.level = level; } @Override public void onQueryPhase(SearchContext context, long tookInNanos) { - if (queryWarnThreshold >= 0 && tookInNanos > queryWarnThreshold && level.isLevelEnabledFor(SlowLogLevel.WARN)) { + if (queryWarnThreshold >= 0 && tookInNanos > queryWarnThreshold) { queryLogger.warn(SearchSlowLogMessage.of(context, tookInNanos)); - } else if (queryInfoThreshold >= 0 && tookInNanos > queryInfoThreshold && level.isLevelEnabledFor(SlowLogLevel.INFO)) { + } else if (queryInfoThreshold >= 0 && tookInNanos > queryInfoThreshold) { queryLogger.info(SearchSlowLogMessage.of(context, tookInNanos)); - } else if (queryDebugThreshold >= 0 && tookInNanos > queryDebugThreshold && level.isLevelEnabledFor(SlowLogLevel.DEBUG)) { + } else if (queryDebugThreshold >= 0 && tookInNanos > queryDebugThreshold) { queryLogger.debug(SearchSlowLogMessage.of(context, tookInNanos)); - } else if (queryTraceThreshold >= 0 && tookInNanos > queryTraceThreshold && level.isLevelEnabledFor(SlowLogLevel.TRACE)) { + } else if (queryTraceThreshold >= 0 && tookInNanos > queryTraceThreshold) { queryLogger.trace(SearchSlowLogMessage.of(context, tookInNanos)); } } @Override public void onFetchPhase(SearchContext context, long tookInNanos) { - if (fetchWarnThreshold >= 0 && tookInNanos > fetchWarnThreshold && level.isLevelEnabledFor(SlowLogLevel.WARN)) { + if (fetchWarnThreshold >= 0 && tookInNanos > fetchWarnThreshold) { fetchLogger.warn(SearchSlowLogMessage.of(context, tookInNanos)); - } else if (fetchInfoThreshold >= 0 && tookInNanos > fetchInfoThreshold && level.isLevelEnabledFor(SlowLogLevel.INFO)) { + } else if (fetchInfoThreshold >= 0 && tookInNanos > fetchInfoThreshold) { fetchLogger.info(SearchSlowLogMessage.of(context, tookInNanos)); - } else if (fetchDebugThreshold >= 0 && tookInNanos > fetchDebugThreshold && level.isLevelEnabledFor(SlowLogLevel.DEBUG)) { + } else if (fetchDebugThreshold >= 0 && tookInNanos > fetchDebugThreshold) { fetchLogger.debug(SearchSlowLogMessage.of(context, tookInNanos)); - } else if (fetchTraceThreshold >= 0 && tookInNanos > fetchTraceThreshold && level.isLevelEnabledFor(SlowLogLevel.TRACE)) { + } else if (fetchTraceThreshold >= 0 && tookInNanos > fetchTraceThreshold) { fetchLogger.trace(SearchSlowLogMessage.of(context, tookInNanos)); } } @@ -257,7 +247,4 @@ long getFetchTraceThreshold() { return fetchTraceThreshold; } - SlowLogLevel getLevel() { - return level; - } } diff --git a/server/src/main/java/org/elasticsearch/index/SlowLogLevel.java b/server/src/main/java/org/elasticsearch/index/SlowLogLevel.java deleted file mode 100644 index 262e88eaf28d8..0000000000000 --- a/server/src/main/java/org/elasticsearch/index/SlowLogLevel.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch 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.elasticsearch.index; - -import java.util.Locale; - -public enum SlowLogLevel { - WARN(3), // most specific - little logging - INFO(2), - DEBUG(1), - TRACE(0); // least specific - lots of logging - - private final int specificity; - - SlowLogLevel(int specificity) { - this.specificity = specificity; - } - - public static SlowLogLevel parse(String level) { - return valueOf(level.toUpperCase(Locale.ROOT)); - } - - boolean isLevelEnabledFor(SlowLogLevel levelToBeUsed) { - // example: this.info(2) tries to log with levelToBeUsed.warn(3) - should allow - return this.specificity <= levelToBeUsed.specificity; - } -} diff --git a/server/src/test/java/org/elasticsearch/index/IndexingSlowLogTests.java b/server/src/test/java/org/elasticsearch/index/IndexingSlowLogTests.java index 6bb51f122f891..1534fc8cf1792 100644 --- a/server/src/test/java/org/elasticsearch/index/IndexingSlowLogTests.java +++ b/server/src/test/java/org/elasticsearch/index/IndexingSlowLogTests.java @@ -20,6 +20,7 @@ package org.elasticsearch.index; import com.fasterxml.jackson.core.JsonParseException; +import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.LoggerContext; @@ -82,7 +83,7 @@ public static void cleanup() { public void testLevelPrecedence() { String uuid = UUIDs.randomBase64UUID(); - IndexMetadata metadata = createIndexMetadata(SlowLogLevel.WARN, "index-precedence", uuid); + IndexMetadata metadata = createIndexMetadata("index-precedence", settings(uuid)); IndexSettings settings = new IndexSettings(metadata, Settings.EMPTY); IndexingSlowLog log = new IndexingSlowLog(settings); @@ -92,61 +93,62 @@ public void testLevelPrecedence() { Engine.IndexResult result = Mockito.mock(Engine.IndexResult.class);//(0, 0, SequenceNumbers.UNASSIGNED_SEQ_NO, false); Mockito.when(result.getResultType()).thenReturn(Engine.Result.Type.SUCCESS); + // For this test, when level is not breached, the level below should be used. { - //level set to WARN, should only log when WARN limit is breached Mockito.when(result.getTook()).thenReturn(40L); log.postIndex(ShardId.fromString("[index][123]"), index, result); - assertNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.INFO)); Mockito.when(result.getTook()).thenReturn(41L); log.postIndex(ShardId.fromString("[index][123]"), index, result); - assertNotNull(appender.getLastEventAndReset()); - + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.WARN)); } { - // level set INFO, should log when INFO level is breached - settings.updateIndexMetadata(createIndexMetadata(SlowLogLevel.INFO, "index", uuid)); Mockito.when(result.getTook()).thenReturn(30L); log.postIndex(ShardId.fromString("[index][123]"), index, result); - assertNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.DEBUG)); Mockito.when(result.getTook()).thenReturn(31L); log.postIndex(ShardId.fromString("[index][123]"), index, result); - assertNotNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.INFO)); } { - // level set DEBUG, should log when DEBUG level is breached - settings.updateIndexMetadata(createIndexMetadata(SlowLogLevel.DEBUG, "index", uuid)); Mockito.when(result.getTook()).thenReturn(20L); log.postIndex(ShardId.fromString("[index][123]"), index, result); - assertNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.TRACE)); Mockito.when(result.getTook()).thenReturn(21L); log.postIndex(ShardId.fromString("[index][123]"), index, result); - assertNotNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.DEBUG)); } { - // level set TRACE, should log when TRACE level is breached - settings.updateIndexMetadata(createIndexMetadata(SlowLogLevel.TRACE, "index", uuid)); Mockito.when(result.getTook()).thenReturn(10L); log.postIndex(ShardId.fromString("[index][123]"), index, result); assertNull(appender.getLastEventAndReset()); Mockito.when(result.getTook()).thenReturn(11L); log.postIndex(ShardId.fromString("[index][123]"), index, result); - assertNotNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.TRACE)); } } public void testTwoLoggersDifferentLevel() { - IndexSettings index1Settings = new IndexSettings(createIndexMetadata(SlowLogLevel.WARN, "index1", UUIDs.randomBase64UUID()), + IndexSettings index1Settings = new IndexSettings(createIndexMetadata("index1", Settings.builder() + .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) + .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID()) + .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_WARN_SETTING.getKey(), "40nanos") + .build()), Settings.EMPTY); IndexingSlowLog log1 = new IndexingSlowLog(index1Settings); - IndexSettings index2Settings = new IndexSettings(createIndexMetadata(SlowLogLevel.TRACE, "index2", UUIDs.randomBase64UUID()), + IndexSettings index2Settings = new IndexSettings(createIndexMetadata("index2", Settings.builder() + .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) + .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID()) + .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING.getKey(), "10nanos") + .build()), Settings.EMPTY); IndexingSlowLog log2 = new IndexingSlowLog(index2Settings); @@ -157,12 +159,13 @@ public void testTwoLoggersDifferentLevel() { Mockito.when(result.getResultType()).thenReturn(Engine.Result.Type.SUCCESS); { - // level set WARN, should not log Mockito.when(result.getTook()).thenReturn(11L); + + // threshold set on WARN(40nanos) where 11nanos does not breach, should not log log1.postIndex(ShardId.fromString("[index][123]"), index, result); assertNull(appender.getLastEventAndReset()); - // level set TRACE, should log + // threshold set on TRACE(10nanos) and 11nanos breaches it, should log log2.postIndex(ShardId.fromString("[index][123]"), index, result); assertNotNull(appender.getLastEventAndReset()); } @@ -171,14 +174,14 @@ public void testTwoLoggersDifferentLevel() { public void testMultipleSlowLoggersUseSingleLog4jLogger() { LoggerContext context = (LoggerContext) LogManager.getContext(false); - IndexSettings index1Settings = new IndexSettings(createIndexMetadata(SlowLogLevel.WARN, "index1", UUIDs.randomBase64UUID()), + IndexSettings index1Settings = new IndexSettings(createIndexMetadata("index1", settings(UUIDs.randomBase64UUID())), Settings.EMPTY); IndexingSlowLog log1 = new IndexingSlowLog(index1Settings); int numberOfLoggersBefore = context.getLoggers().size(); - IndexSettings index2Settings = new IndexSettings(createIndexMetadata(SlowLogLevel.TRACE, "index2", UUIDs.randomBase64UUID()), + IndexSettings index2Settings = new IndexSettings(createIndexMetadata("index2", settings(UUIDs.randomBase64UUID())), Settings.EMPTY); IndexingSlowLog log2 = new IndexingSlowLog(index2Settings); context = (LoggerContext) LogManager.getContext(false); @@ -187,16 +190,19 @@ public void testMultipleSlowLoggersUseSingleLog4jLogger() { assertThat(numberOfLoggersAfter, equalTo(numberOfLoggersBefore)); } - private IndexMetadata createIndexMetadata(SlowLogLevel level, String index, String uuid) { - return newIndexMeta(index, Settings.builder() + private IndexMetadata createIndexMetadata(String index, Settings build) { + return newIndexMeta(index, build); + } + + private Settings settings(String uuid) { + return Settings.builder() .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) .put(IndexMetadata.SETTING_INDEX_UUID, uuid) - .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), level) .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING.getKey(), "10nanos") .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_DEBUG_SETTING.getKey(), "20nanos") .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_INFO_SETTING.getKey(), "30nanos") .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_WARN_SETTING.getKey(), "40nanos") - .build()); + .build(); } public void testSlowLogMessageHasJsonFields() throws IOException { @@ -315,72 +321,6 @@ public void testReformatSetting() { assertTrue(log.isReformat()); } - public void testLevelSetting() { - SlowLogLevel level = randomFrom(SlowLogLevel.values()); - IndexMetadata metadata = newIndexMeta("index", Settings.builder() - .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) - .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), level) - .build()); - IndexSettings settings = new IndexSettings(metadata, Settings.EMPTY); - IndexingSlowLog log = new IndexingSlowLog(settings); - assertEquals(level, log.getLevel()); - level = randomFrom(SlowLogLevel.values()); - settings.updateIndexMetadata(newIndexMeta("index", - Settings.builder().put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), level).build())); - assertEquals(level, log.getLevel()); - level = randomFrom(SlowLogLevel.values()); - settings.updateIndexMetadata(newIndexMeta("index", - Settings.builder().put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), level).build())); - assertEquals(level, log.getLevel()); - - - settings.updateIndexMetadata(newIndexMeta("index", - Settings.builder().put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), level).build())); - assertEquals(level, log.getLevel()); - - settings.updateIndexMetadata(newIndexMeta("index", Settings.EMPTY)); - assertEquals(SlowLogLevel.TRACE, log.getLevel()); - - metadata = newIndexMeta("index", Settings.builder() - .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) - .build()); - settings = new IndexSettings(metadata, Settings.EMPTY); - log = new IndexingSlowLog(settings); - assertTrue(log.isReformat()); - try { - settings.updateIndexMetadata(newIndexMeta("index", - Settings.builder().put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), "NOT A LEVEL").build())); - fail(); - } catch (IllegalArgumentException ex) { - final String expected = "illegal value can't update [index.indexing.slowlog.level] from [TRACE] to [NOT A LEVEL]"; - assertThat(ex, hasToString(containsString(expected))); - assertNotNull(ex.getCause()); - assertThat(ex.getCause(), instanceOf(IllegalArgumentException.class)); - final IllegalArgumentException cause = (IllegalArgumentException) ex.getCause(); - assertThat(cause, hasToString(containsString("No enum constant org.elasticsearch.index.SlowLogLevel.NOT A LEVEL"))); - } - assertEquals(SlowLogLevel.TRACE, log.getLevel()); - - metadata = newIndexMeta("index", Settings.builder() - .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) - .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID()) - .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), SlowLogLevel.DEBUG) - .build()); - settings = new IndexSettings(metadata, Settings.EMPTY); - IndexingSlowLog debugLog = new IndexingSlowLog(settings); - - metadata = newIndexMeta("index", Settings.builder() - .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) - .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID()) - .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), SlowLogLevel.INFO) - .build()); - settings = new IndexSettings(metadata, Settings.EMPTY); - IndexingSlowLog infoLog = new IndexingSlowLog(settings); - - assertEquals(SlowLogLevel.DEBUG, debugLog.getLevel()); - assertEquals(SlowLogLevel.INFO, infoLog.getLevel()); - } - public void testSetLevels() { IndexMetadata metadata = newIndexMeta("index", Settings.builder() .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) diff --git a/server/src/test/java/org/elasticsearch/index/SearchSlowLogTests.java b/server/src/test/java/org/elasticsearch/index/SearchSlowLogTests.java index de5ccd6493361..f587f867dc512 100644 --- a/server/src/test/java/org/elasticsearch/index/SearchSlowLogTests.java +++ b/server/src/test/java/org/elasticsearch/index/SearchSlowLogTests.java @@ -19,6 +19,7 @@ package org.elasticsearch.index; +import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.LoggerContext; @@ -106,84 +107,101 @@ public void testLevelPrecedence() { SearchContext ctx = searchContextWithSourceAndTask(createIndex("index")); String uuid = UUIDs.randomBase64UUID(); IndexSettings settings = - new IndexSettings(createIndexMetadata(SlowLogLevel.WARN, "index", uuid), Settings.EMPTY); + new IndexSettings(createIndexMetadata("index", settings(uuid)), Settings.EMPTY); SearchSlowLog log = new SearchSlowLog(settings); + // For this test, when level is not breached, the level below should be used. { - //level set to WARN, should only log when WARN limit is breached log.onQueryPhase(ctx, 40L); - assertNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.INFO)); log.onQueryPhase(ctx, 41L); - assertNotNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.WARN)); log.onFetchPhase(ctx, 40L); - assertNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.INFO)); log.onFetchPhase(ctx, 41L); - assertNotNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.WARN)); } { - // level set INFO, should log when INFO level is breached - settings.updateIndexMetadata(createIndexMetadata(SlowLogLevel.INFO, "index", uuid)); log.onQueryPhase(ctx, 30L); - assertNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.DEBUG)); log.onQueryPhase(ctx, 31L); - assertNotNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.INFO)); log.onFetchPhase(ctx, 30L); - assertNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.DEBUG)); log.onFetchPhase(ctx, 31L); - assertNotNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.INFO)); } { - // level set DEBUG, should log when DEBUG level is breached - settings.updateIndexMetadata(createIndexMetadata(SlowLogLevel.DEBUG, "index", uuid)); log.onQueryPhase(ctx, 20L); - assertNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.TRACE)); log.onQueryPhase(ctx, 21L); - assertNotNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.DEBUG)); log.onFetchPhase(ctx, 20L); - assertNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.TRACE)); log.onFetchPhase(ctx, 21L); - assertNotNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.DEBUG)); } { - // level set TRACE, should log when TRACE level is breached - settings.updateIndexMetadata(createIndexMetadata(SlowLogLevel.TRACE, "index", uuid)); log.onQueryPhase(ctx, 10L); assertNull(appender.getLastEventAndReset()); log.onQueryPhase(ctx, 11L); - assertNotNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.TRACE)); log.onFetchPhase(ctx, 10L); assertNull(appender.getLastEventAndReset()); log.onFetchPhase(ctx, 11L); - assertNotNull(appender.getLastEventAndReset()); + assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.TRACE)); } } + private Settings.Builder settings(String uuid) { + return Settings.builder() + .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) + .put(IndexMetadata.SETTING_INDEX_UUID, uuid) + .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_TRACE_SETTING.getKey(), "10nanos") + .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_DEBUG_SETTING.getKey(), "20nanos") + .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_INFO_SETTING.getKey(), "30nanos") + .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_WARN_SETTING.getKey(), "40nanos") + + .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_TRACE_SETTING.getKey(), "10nanos") + .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_DEBUG_SETTING.getKey(), "20nanos") + .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_INFO_SETTING.getKey(), "30nanos") + .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_WARN_SETTING.getKey(), "40nanos"); + } + public void testTwoLoggersDifferentLevel() { SearchContext ctx1 = searchContextWithSourceAndTask(createIndex("index-1")); SearchContext ctx2 = searchContextWithSourceAndTask(createIndex("index-2")); IndexSettings settings1 = - new IndexSettings(createIndexMetadata(SlowLogLevel.WARN, "index-1", UUIDs.randomBase64UUID()), Settings.EMPTY); + new IndexSettings(createIndexMetadata("index-1", Settings.builder() + .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) + .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID()) + .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_WARN_SETTING.getKey(), "40nanos") + .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_WARN_SETTING.getKey(), "40nanos")), Settings.EMPTY); SearchSlowLog log1 = new SearchSlowLog(settings1); IndexSettings settings2 = - new IndexSettings(createIndexMetadata(SlowLogLevel.TRACE, "index-2", UUIDs.randomBase64UUID()), Settings.EMPTY); + new IndexSettings(createIndexMetadata("index-2", Settings.builder() + .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) + .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID()) + .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_TRACE_SETTING.getKey(), "10nanos") + .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_TRACE_SETTING.getKey(), "10nanos")), Settings.EMPTY); SearchSlowLog log2 = new SearchSlowLog(settings2); { - // level set WARN, should not log + // threshold set on WARN only, should not log log1.onQueryPhase(ctx1, 11L); assertNull(appender.getLastEventAndReset()); log1.onFetchPhase(ctx1, 11L); assertNull(appender.getLastEventAndReset()); - // level set TRACE, should log + // threshold set on TRACE, should log log2.onQueryPhase(ctx2, 11L); assertNotNull(appender.getLastEventAndReset()); log2.onFetchPhase(ctx2, 11L); @@ -196,34 +214,21 @@ public void testMultipleSlowLoggersUseSingleLog4jLogger() { SearchContext ctx1 = searchContextWithSourceAndTask(createIndex("index-1")); IndexSettings settings1 = - new IndexSettings(createIndexMetadata(SlowLogLevel.WARN, "index-1", UUIDs.randomBase64UUID()), Settings.EMPTY); + new IndexSettings(createIndexMetadata("index-1", settings(UUIDs.randomBase64UUID())), Settings.EMPTY); SearchSlowLog log1 = new SearchSlowLog(settings1); int numberOfLoggersBefore = context.getLoggers().size(); SearchContext ctx2 = searchContextWithSourceAndTask(createIndex("index-2")); IndexSettings settings2 = - new IndexSettings(createIndexMetadata(SlowLogLevel.TRACE, "index-2", UUIDs.randomBase64UUID()), Settings.EMPTY); + new IndexSettings(createIndexMetadata("index-2", settings(UUIDs.randomBase64UUID())), Settings.EMPTY); SearchSlowLog log2 = new SearchSlowLog(settings2); int numberOfLoggersAfter = context.getLoggers().size(); assertThat(numberOfLoggersAfter, equalTo(numberOfLoggersBefore)); } - private IndexMetadata createIndexMetadata(SlowLogLevel level, String index, String uuid) { - return newIndexMeta(index, Settings.builder() - .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) - .put(IndexMetadata.SETTING_INDEX_UUID, uuid) - .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), level) - .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_TRACE_SETTING.getKey(), "10nanos") - .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_DEBUG_SETTING.getKey(), "20nanos") - .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_INFO_SETTING.getKey(), "30nanos") - .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_WARN_SETTING.getKey(), "40nanos") - - .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_TRACE_SETTING.getKey(), "10nanos") - .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_DEBUG_SETTING.getKey(), "20nanos") - .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_INFO_SETTING.getKey(), "30nanos") - .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_WARN_SETTING.getKey(), "40nanos") - .build()); + private IndexMetadata createIndexMetadata(String index, Settings.Builder put) { + return newIndexMeta(index, put.build()); } public void testSlowLogHasJsonFields() throws IOException { @@ -272,71 +277,6 @@ public void testSlowLogSearchContextPrinterToLog() throws IOException { assertThat(p.get("id"), equalTo("my_id")); } - public void testLevelSetting() { - SlowLogLevel level = randomFrom(SlowLogLevel.values()); - IndexMetadata metadata = newIndexMeta("index", Settings.builder() - .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) - .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), level) - .build()); - IndexSettings settings = new IndexSettings(metadata, Settings.EMPTY); - SearchSlowLog log = new SearchSlowLog(settings); - assertEquals(level, log.getLevel()); - level = randomFrom(SlowLogLevel.values()); - settings.updateIndexMetadata(newIndexMeta("index", - Settings.builder().put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), level).build())); - assertEquals(level, log.getLevel()); - level = randomFrom(SlowLogLevel.values()); - settings.updateIndexMetadata(newIndexMeta("index", - Settings.builder().put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), level).build())); - assertEquals(level, log.getLevel()); - - - settings.updateIndexMetadata(newIndexMeta("index", - Settings.builder().put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), level).build())); - assertEquals(level, log.getLevel()); - - settings.updateIndexMetadata(newIndexMeta("index", Settings.EMPTY)); - assertEquals(SlowLogLevel.TRACE, log.getLevel()); - - metadata = newIndexMeta("index", Settings.builder() - .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) - .build()); - settings = new IndexSettings(metadata, Settings.EMPTY); - log = new SearchSlowLog(settings); - try { - settings.updateIndexMetadata(newIndexMeta("index", - Settings.builder().put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), "NOT A LEVEL").build())); - fail(); - } catch (IllegalArgumentException ex) { - final String expected = "illegal value can't update [index.search.slowlog.level] from [TRACE] to [NOT A LEVEL]"; - assertThat(ex, hasToString(containsString(expected))); - assertNotNull(ex.getCause()); - assertThat(ex.getCause(), instanceOf(IllegalArgumentException.class)); - final IllegalArgumentException cause = (IllegalArgumentException) ex.getCause(); - assertThat(cause, hasToString(containsString("No enum constant org.elasticsearch.index.SlowLogLevel.NOT A LEVEL"))); - } - assertEquals(SlowLogLevel.TRACE, log.getLevel()); - - metadata = newIndexMeta("index", Settings.builder() - .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) - .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID()) - .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), SlowLogLevel.DEBUG) - .build()); - settings = new IndexSettings(metadata, Settings.EMPTY); - SearchSlowLog debugLog = new SearchSlowLog(settings); - - metadata = newIndexMeta("index", Settings.builder() - .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) - .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID()) - .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), SlowLogLevel.INFO) - .build()); - settings = new IndexSettings(metadata, Settings.EMPTY); - SearchSlowLog infoLog = new SearchSlowLog(settings); - - assertEquals(SlowLogLevel.DEBUG, debugLog.getLevel()); - assertEquals(SlowLogLevel.INFO, infoLog.getLevel()); - } - public void testSetQueryLevels() { IndexMetadata metadata = newIndexMeta("index", Settings.builder() .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) diff --git a/server/src/test/java/org/elasticsearch/index/SlowLogLevelTests.java b/server/src/test/java/org/elasticsearch/index/SlowLogLevelTests.java deleted file mode 100644 index 7d86553adc1b9..0000000000000 --- a/server/src/test/java/org/elasticsearch/index/SlowLogLevelTests.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch 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.elasticsearch.index; - -import org.elasticsearch.test.ESTestCase; - - -public class SlowLogLevelTests extends ESTestCase { - - public void testTracePrecedence() { - assertTrue(SlowLogLevel.TRACE.isLevelEnabledFor(SlowLogLevel.TRACE)); - assertTrue(SlowLogLevel.TRACE.isLevelEnabledFor(SlowLogLevel.DEBUG)); - assertTrue(SlowLogLevel.TRACE.isLevelEnabledFor(SlowLogLevel.INFO)); - assertTrue(SlowLogLevel.TRACE.isLevelEnabledFor(SlowLogLevel.WARN)); - } - - public void testDebugPrecedence() { - assertFalse(SlowLogLevel.DEBUG.isLevelEnabledFor(SlowLogLevel.TRACE)); - - assertTrue(SlowLogLevel.DEBUG.isLevelEnabledFor(SlowLogLevel.DEBUG)); - assertTrue(SlowLogLevel.DEBUG.isLevelEnabledFor(SlowLogLevel.INFO)); - assertTrue(SlowLogLevel.DEBUG.isLevelEnabledFor(SlowLogLevel.WARN)); - } - - public void testInfoPrecedence() { - assertFalse(SlowLogLevel.INFO.isLevelEnabledFor(SlowLogLevel.TRACE)); - assertFalse(SlowLogLevel.INFO.isLevelEnabledFor(SlowLogLevel.DEBUG)); - - assertTrue(SlowLogLevel.INFO.isLevelEnabledFor(SlowLogLevel.INFO)); - assertTrue(SlowLogLevel.INFO.isLevelEnabledFor(SlowLogLevel.WARN)); - } - - public void testWarnPrecedence() { - assertFalse(SlowLogLevel.WARN.isLevelEnabledFor(SlowLogLevel.TRACE)); - assertFalse(SlowLogLevel.WARN.isLevelEnabledFor(SlowLogLevel.DEBUG)); - assertFalse(SlowLogLevel.WARN.isLevelEnabledFor(SlowLogLevel.INFO)); - - assertTrue(SlowLogLevel.WARN.isLevelEnabledFor(SlowLogLevel.WARN)); - } -} diff --git a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/TransportResumeFollowAction.java b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/TransportResumeFollowAction.java index d5c818f1ff64f..5a73270d8c422 100644 --- a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/TransportResumeFollowAction.java +++ b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/TransportResumeFollowAction.java @@ -412,12 +412,10 @@ static String[] extractLeaderShardHistoryUUIDs(Map ccrIndexMetad SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_DEBUG_SETTING, SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_INFO_SETTING, SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_TRACE_SETTING, - SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL, IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_WARN_SETTING, IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_DEBUG_SETTING, IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_INFO_SETTING, IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING, - IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING, IndexingSlowLog.INDEX_INDEXING_SLOWLOG_REFORMAT_SETTING, IndexingSlowLog.INDEX_INDEXING_SLOWLOG_MAX_SOURCE_CHARS_TO_LOG_SETTING, MergePolicyConfig.INDEX_COMPOUND_FORMAT_SETTING,