Skip to content

Commit 902e6f6

Browse files
kkewweiDaveCTurner
kkewwei
authored andcommitted
Log index name when updating index settings (#49969)
Today we log changes to index settings like this: updating [index.setting.blah] from [A] to [B] The identity of the index whose settings were updated is conspicuously absent from this message. This commit addresses this by adding the index name to these messages. Fixes #49818.
1 parent 8bee5f4 commit 902e6f6

File tree

3 files changed

+47
-3
lines changed

3 files changed

+47
-3
lines changed

server/src/main/java/org/elasticsearch/common/settings/AbstractScopedSettings.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public abstract class AbstractScopedSettings {
5555
private static final Pattern GROUP_KEY_PATTERN = Pattern.compile("^(?:[-\\w]+[.])+$");
5656
private static final Pattern AFFIX_KEY_PATTERN = Pattern.compile("^(?:[-\\w]+[.])+[*](?:[.][-\\w]+)+$");
5757

58-
protected final Logger logger = LogManager.getLogger(this.getClass());
58+
private final Logger logger;
5959

6060
private final Settings settings;
6161
private final List<SettingUpdater<?>> settingUpdaters = new CopyOnWriteArrayList<>();
@@ -70,6 +70,7 @@ protected AbstractScopedSettings(
7070
final Set<Setting<?>> settingsSet,
7171
final Set<SettingUpgrader<?>> settingUpgraders,
7272
final Setting.Property scope) {
73+
this.logger = LogManager.getLogger(this.getClass());
7374
this.settings = settings;
7475
this.lastSettingsApplied = Settings.EMPTY;
7576

@@ -110,7 +111,8 @@ protected void validateSettingKey(Setting<?> setting) {
110111
}
111112
}
112113

113-
protected AbstractScopedSettings(Settings nodeSettings, Settings scopeSettings, AbstractScopedSettings other) {
114+
protected AbstractScopedSettings(Settings nodeSettings, Settings scopeSettings, AbstractScopedSettings other, Logger logger) {
115+
this.logger = logger;
114116
this.settings = nodeSettings;
115117
this.lastSettingsApplied = scopeSettings;
116118
this.scope = other.scope;

server/src/main/java/org/elasticsearch/common/settings/IndexScopedSettings.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.elasticsearch.cluster.routing.allocation.decider.EnableAllocationDecider;
2525
import org.elasticsearch.cluster.routing.allocation.decider.MaxRetryAllocationDecider;
2626
import org.elasticsearch.cluster.routing.allocation.decider.ShardsLimitAllocationDecider;
27+
import org.elasticsearch.common.logging.Loggers;
2728
import org.elasticsearch.common.settings.Setting.Property;
2829
import org.elasticsearch.index.IndexModule;
2930
import org.elasticsearch.index.IndexSettings;
@@ -186,7 +187,7 @@ public IndexScopedSettings(Settings settings, Set<Setting<?>> settingsSet) {
186187
}
187188

188189
private IndexScopedSettings(Settings settings, IndexScopedSettings other, IndexMetaData metaData) {
189-
super(settings, metaData.getSettings(), other);
190+
super(settings, metaData.getSettings(), other, Loggers.getLogger(IndexScopedSettings.class, metaData.getIndex()));
190191
}
191192

192193
public IndexScopedSettings copy(Settings settings, IndexMetaData metaData) {

server/src/test/java/org/elasticsearch/common/settings/SettingTests.java

+41
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,23 @@
1818
*/
1919
package org.elasticsearch.common.settings;
2020

21+
import org.apache.logging.log4j.Level;
22+
import org.apache.logging.log4j.LogManager;
23+
import org.apache.logging.log4j.Logger;
24+
import org.apache.logging.log4j.core.LogEvent;
25+
import org.elasticsearch.cluster.metadata.IndexMetaData;
2126
import org.elasticsearch.common.collect.Tuple;
27+
import org.elasticsearch.common.logging.Loggers;
2228
import org.elasticsearch.common.settings.AbstractScopedSettings.SettingUpdater;
2329
import org.elasticsearch.common.settings.Setting.Property;
2430
import org.elasticsearch.common.unit.ByteSizeUnit;
2531
import org.elasticsearch.common.unit.ByteSizeValue;
2632
import org.elasticsearch.common.unit.TimeValue;
33+
import org.elasticsearch.index.IndexSettings;
2734
import org.elasticsearch.monitor.jvm.JvmInfo;
2835
import org.elasticsearch.test.ESTestCase;
36+
import org.elasticsearch.test.MockLogAppender;
37+
import org.elasticsearch.test.junit.annotations.TestLogging;
2938

3039
import java.util.Arrays;
3140
import java.util.Collections;
@@ -40,6 +49,7 @@
4049
import java.util.stream.Collectors;
4150
import java.util.stream.Stream;
4251

52+
import static org.elasticsearch.index.IndexSettingsTests.newIndexMeta;
4353
import static org.hamcrest.Matchers.containsString;
4454
import static org.hamcrest.Matchers.equalTo;
4555
import static org.hamcrest.Matchers.hasSize;
@@ -1092,4 +1102,35 @@ public void testNonSecureSettingInKeystore() {
10921102
assertThat(e.getMessage(), containsString("must be stored inside elasticsearch.yml"));
10931103
}
10941104

1105+
@TestLogging(value="org.elasticsearch.common.settings.IndexScopedSettings:INFO",
1106+
reason="to ensure we log INFO-level messages from IndexScopedSettings")
1107+
public void testLogSettingUpdate() throws Exception {
1108+
final IndexMetaData metaData = newIndexMeta("index1",
1109+
Settings.builder().put(IndexSettings.INDEX_REFRESH_INTERVAL_SETTING.getKey(), "20s").build());
1110+
final IndexSettings settings = new IndexSettings(metaData, Settings.EMPTY);
1111+
1112+
final MockLogAppender mockLogAppender = new MockLogAppender();
1113+
mockLogAppender.addExpectation(new MockLogAppender.SeenEventExpectation(
1114+
"message",
1115+
"org.elasticsearch.common.settings.IndexScopedSettings",
1116+
Level.INFO,
1117+
"updating [index.refresh_interval] from [20s] to [10s]") {
1118+
@Override
1119+
public boolean innerMatch(LogEvent event) {
1120+
return event.getMarker().getName().equals(" [index1]");
1121+
}
1122+
});
1123+
mockLogAppender.start();
1124+
final Logger logger = LogManager.getLogger(IndexScopedSettings.class);
1125+
try {
1126+
Loggers.addAppender(logger, mockLogAppender);
1127+
settings.updateIndexMetaData(newIndexMeta("index1",
1128+
Settings.builder().put(IndexSettings.INDEX_REFRESH_INTERVAL_SETTING.getKey(), "10s").build()));
1129+
1130+
mockLogAppender.assertAllExpectationsMatched();
1131+
} finally {
1132+
Loggers.removeAppender(logger, mockLogAppender);
1133+
mockLogAppender.stop();
1134+
}
1135+
}
10951136
}

0 commit comments

Comments
 (0)