Skip to content

Commit e390232

Browse files
Merge log field providers
1 parent 95c76d7 commit e390232

File tree

5 files changed

+28
-21
lines changed

5 files changed

+28
-21
lines changed

server/src/main/java/org/elasticsearch/node/NodeConstruction.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -846,6 +846,13 @@ public Map<String, String> searchFields() {
846846
.flatMap(f -> f.searchFields().entrySet().stream())
847847
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
848848
}
849+
850+
@Override
851+
public Map<String, String> queryFields() {
852+
return fields.stream()
853+
.flatMap(f -> f.queryFields().entrySet().stream())
854+
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
855+
}
849856
};
850857
}
851858

@@ -868,6 +875,13 @@ public Map<String, String> searchFields() {
868875
.flatMap(f -> f.searchFields().entrySet().stream())
869876
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
870877
}
878+
879+
@Override
880+
public Map<String, String> queryFields() {
881+
return fields.stream()
882+
.flatMap(f -> f.queryFields().entrySet().stream())
883+
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
884+
}
871885
};
872886
}
873887

@@ -961,7 +975,7 @@ public Map<String, String> searchFields() {
961975
documentParsingProvider,
962976
taskManager,
963977
projectResolver,
964-
slowLogFieldProviders
978+
slowLogFieldProvider
965979
);
966980

967981
Collection<?> pluginComponents = pluginsService.flatMap(plugin -> {

server/src/main/java/org/elasticsearch/node/PluginServiceInstances.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,5 +57,5 @@ public record PluginServiceInstances(
5757
DocumentParsingProvider documentParsingProvider,
5858
TaskManager taskManager,
5959
ProjectResolver projectResolver,
60-
List<? extends SlowLogFieldProvider> slowLogFieldProviders
60+
SlowLogFieldProvider slowLogFieldProvider
6161
) implements Plugin.PluginServices {}

server/src/main/java/org/elasticsearch/plugins/Plugin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,9 +183,9 @@ public interface PluginServices {
183183
ProjectResolver projectResolver();
184184

185185
/**
186-
* Providers for additional SlowLog fields
186+
* Provider for additional SlowLog fields
187187
*/
188-
List<? extends SlowLogFieldProvider> slowLogFieldProviders();
188+
SlowLogFieldProvider slowLogFieldProvider();
189189
}
190190

191191
/**

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/EsqlPlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ public Collection<?> createComponents(PluginServices services) {
170170
new IndexResolver(services.client()),
171171
services.telemetryProvider().getMeterRegistry(),
172172
getLicenseState(),
173-
new EsqlSlowLog(services.clusterService().getClusterSettings(), services.slowLogFieldProviders())
173+
new EsqlSlowLog(services.clusterService().getClusterSettings(), services.slowLogFieldProvider())
174174
),
175175
new ExchangeService(
176176
services.clusterService().getSettings(),

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/slowlog/EsqlSlowLog.java

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import java.nio.charset.StandardCharsets;
2121
import java.util.HashMap;
22-
import java.util.List;
2322
import java.util.Map;
2423
import java.util.function.Supplier;
2524

@@ -44,7 +43,7 @@ public final class EsqlSlowLog {
4443

4544
public static final String LOGGER_NAME = "esql.slowlog.query";
4645
private static final Logger queryLogger = LogManager.getLogger(LOGGER_NAME);
47-
private final List<SlowLogFields> additionalProviders;
46+
private final SlowLogFields additionalFields;
4847

4948
private volatile long queryWarnThreshold;
5049
private volatile long queryInfoThreshold;
@@ -53,14 +52,14 @@ public final class EsqlSlowLog {
5352

5453
private volatile boolean includeUser;
5554

56-
public EsqlSlowLog(ClusterSettings settings, List<? extends SlowLogFieldProvider> slowLogFieldProviders) {
55+
public EsqlSlowLog(ClusterSettings settings, SlowLogFieldProvider slowLogFieldProvider) {
5756
settings.initializeAndWatch(ESQL_SLOWLOG_THRESHOLD_QUERY_WARN_SETTING, this::setQueryWarnThreshold);
5857
settings.initializeAndWatch(ESQL_SLOWLOG_THRESHOLD_QUERY_INFO_SETTING, this::setQueryInfoThreshold);
5958
settings.initializeAndWatch(ESQL_SLOWLOG_THRESHOLD_QUERY_DEBUG_SETTING, this::setQueryDebugThreshold);
6059
settings.initializeAndWatch(ESQL_SLOWLOG_THRESHOLD_QUERY_TRACE_SETTING, this::setQueryTraceThreshold);
6160
settings.initializeAndWatch(ESQL_SLOWLOG_THRESHOLD_INCLUDE_USER_SETTING, this::setIncludeUser);
6261

63-
this.additionalProviders = slowLogFieldProviders.stream().map(SlowLogFieldProvider::create).toList();
62+
this.additionalFields = slowLogFieldProvider.create();
6463
}
6564

6665
public EsqlSlowLog(ClusterSettings settings) {
@@ -72,11 +71,11 @@ public void onQueryPhase(Result esqlResult, String query) {
7271
return; // TODO review, it happens in some tests, not sure if it's a thing also in prod
7372
}
7473
long tookInNanos = esqlResult.executionInfo().overallTook().nanos();
75-
log(() -> Message.of(esqlResult, query, additionalProviders), tookInNanos);
74+
log(() -> Message.of(esqlResult, query, includeUser ? additionalFields.queryFields() : Map.of()), tookInNanos);
7675
}
7776

7877
public void onQueryFailure(String query, Exception ex, long tookInNanos) {
79-
log(() -> Message.of(query, tookInNanos, ex, additionalProviders), tookInNanos);
78+
log(() -> Message.of(query, tookInNanos, ex, includeUser ? additionalFields.queryFields() : Map.of()), tookInNanos);
8079
}
8180

8281
private void log(Supplier<ESLogMessage> logProducer, long tookInNanos) {
@@ -118,28 +117,22 @@ private static String escapeJson(String text) {
118117
return new String(sourceEscaped, StandardCharsets.UTF_8);
119118
}
120119

121-
public static ESLogMessage of(Result esqlResult, String query, List<SlowLogFields> providers) {
120+
public static ESLogMessage of(Result esqlResult, String query, Map<String, String> additionalFields) {
122121
Map<String, Object> jsonFields = new HashMap<>();
123-
addFromProviders(providers, jsonFields);
122+
jsonFields.putAll(additionalFields);
124123
addGenericFields(jsonFields, query, true);
125124
addResultFields(jsonFields, esqlResult);
126125
return new ESLogMessage().withFields(jsonFields);
127126
}
128127

129-
public static ESLogMessage of(String query, long took, Exception exception, List<SlowLogFields> providers) {
128+
public static ESLogMessage of(String query, long took, Exception exception, Map<String, String> additionalFields) {
130129
Map<String, Object> jsonFields = new HashMap<>();
131-
addFromProviders(providers, jsonFields);
130+
jsonFields.putAll(additionalFields);
132131
addGenericFields(jsonFields, query, false);
133132
addErrorFields(jsonFields, took, exception);
134133
return new ESLogMessage().withFields(jsonFields);
135134
}
136135

137-
private static void addFromProviders(List<SlowLogFields> providers, Map<String, Object> jsonFields) {
138-
for (SlowLogFields provider : providers) {
139-
jsonFields.putAll(provider.queryFields());
140-
}
141-
}
142-
143136
private static void addGenericFields(Map<String, Object> fieldMap, String query, boolean success) {
144137
String source = escapeJson(query);
145138
fieldMap.put(ELASTICSEARCH_SLOWLOG_SUCCESS, success);

0 commit comments

Comments
 (0)