Skip to content

Commit 2e7e237

Browse files
committed
Add indices to search request slowlog
Signed-off-by: David Zane <davizane@amazon.com>
1 parent a31743e commit 2e7e237

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
99
- Support expected cluster name with validation in CCS Sniff mode ([#20532](https://github.com/opensearch-project/OpenSearch/pull/20532))
1010
- Add security policy to allow `accessUnixDomainSocket` in `transport-grpc` module ([#20463](https://github.com/opensearch-project/OpenSearch/pull/20463))
1111
- [Workload Management] Enhance Scroll API support for autotagging ([#20151](https://github.com/opensearch-project/OpenSearch/pull/20151))
12+
- Add indices to search request slowlog ([#20588](https://github.com/opensearch-project/OpenSearch/pull/20588))
1213

1314
### Changed
1415
- Move Randomness from server to libs/common ([#20570](https://github.com/opensearch-project/OpenSearch/pull/20570))

server/src/main/java/org/opensearch/action/search/SearchRequestSlowLog.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747

4848
import java.nio.charset.Charset;
4949
import java.nio.charset.StandardCharsets;
50+
import java.util.Arrays;
5051
import java.util.Collections;
5152
import java.util.HashMap;
5253
import java.util.Map;
@@ -187,6 +188,7 @@ private static Map<String, Object> prepareMap(
187188
}
188189
messageFields.put("search_type", context.getRequest().searchType());
189190
messageFields.put("shards", searchRequestContext.formattedShardStats());
191+
messageFields.put("indices", Arrays.toString(context.getRequest().indices()));
190192

191193
if (context.getRequest().source() != null) {
192194
String source = escapeJson(context.getRequest().source().toString(FORMAT_PARAMS));
@@ -213,6 +215,7 @@ private static String message(SearchPhaseContext context, long tookInNanos, Sear
213215
}
214216
sb.append("search_type[").append(context.getRequest().searchType()).append("], ");
215217
sb.append("shards[").append(searchRequestContext.formattedShardStats()).append("], ");
218+
sb.append("indices").append(Arrays.toString(context.getRequest().indices())).append(", ");
216219
if (context.getRequest().source() != null) {
217220
sb.append("source[").append(context.getRequest().source().toString(FORMAT_PARAMS)).append("], ");
218221
} else {

server/src/test/java/org/opensearch/action/search/SearchRequestSlowLogTests.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
import org.junit.AfterClass;
5151
import org.junit.BeforeClass;
5252

53-
import java.io.IOException;
5453
import java.util.ArrayList;
5554
import java.util.List;
5655
import java.util.concurrent.CountDownLatch;
@@ -90,29 +89,29 @@ public static void cleanup() {
9089
public void testMultipleSlowLoggersUseSingleLog4jLogger() {
9190
LoggerContext context = (LoggerContext) LogManager.getContext(false);
9291

93-
SearchPhaseContext searchPhaseContext1 = new MockSearchPhaseContext(1);
92+
new MockSearchPhaseContext(1);
9493
ClusterService clusterService1 = ClusterServiceUtils.createClusterService(
9594
Settings.EMPTY,
9695
new ClusterSettings(Settings.EMPTY, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS),
9796
null
9897
);
99-
SearchRequestSlowLog searchRequestSlowLog1 = new SearchRequestSlowLog(clusterService1);
98+
new SearchRequestSlowLog(clusterService1);
10099
int numberOfLoggersBefore = context.getLoggers().size();
101100

102-
SearchPhaseContext searchPhaseContext2 = new MockSearchPhaseContext(1);
101+
new MockSearchPhaseContext(1);
103102
ClusterService clusterService2 = ClusterServiceUtils.createClusterService(
104103
Settings.EMPTY,
105104
new ClusterSettings(Settings.EMPTY, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS),
106105
null
107106
);
108-
SearchRequestOperationsCompositeListenerFactory searchRequestListeners = new SearchRequestOperationsCompositeListenerFactory();
109-
SearchRequestSlowLog searchRequestSlowLog2 = new SearchRequestSlowLog(clusterService2);
107+
new SearchRequestOperationsCompositeListenerFactory();
108+
new SearchRequestSlowLog(clusterService2);
110109

111110
int numberOfLoggersAfter = context.getLoggers().size();
112111
assertThat(numberOfLoggersAfter, equalTo(numberOfLoggersBefore));
113112
}
114113

115-
public void testOnRequestEnd() throws InterruptedException {
114+
public void testOnRequestEnd() {
116115
final Logger logger = mock(Logger.class);
117116
final SearchRequestContext searchRequestContext = mock(SearchRequestContext.class);
118117
final SearchPhaseContext searchPhaseContext = mock(SearchPhaseContext.class);
@@ -204,7 +203,7 @@ public void testConcurrentOnRequestEnd() throws InterruptedException {
204203
verify(logger, never()).trace(any(SearchRequestSlowLog.SearchRequestSlowLogMessage.class));
205204
}
206205

207-
public void testSearchRequestSlowLogHasJsonFields_EmptySearchRequestContext() throws IOException {
206+
public void testSearchRequestSlowLogHasJsonFields_EmptySearchRequestContext() {
208207
SearchSourceBuilder source = SearchSourceBuilder.searchSource().query(QueryBuilders.matchAllQuery());
209208
SearchRequest searchRequest = new SearchRequest().source(source);
210209
SearchPhaseContext searchPhaseContext = new MockSearchPhaseContext(1, searchRequest);
@@ -225,11 +224,12 @@ public void testSearchRequestSlowLogHasJsonFields_EmptySearchRequestContext() th
225224
assertThat(p.getValueFor("total_hits"), equalTo("-1"));
226225
assertThat(p.getValueFor("search_type"), equalTo("QUERY_THEN_FETCH"));
227226
assertThat(p.getValueFor("shards"), equalTo(""));
227+
assertThat(p.getValueFor("indices"), equalTo("[]"));
228228
assertThat(p.getValueFor("source"), equalTo("{\\\"query\\\":{\\\"match_all\\\":{\\\"boost\\\":1.0}}}"));
229229
assertThat(p.getValueFor("id"), equalTo(null));
230230
}
231231

232-
public void testSearchRequestSlowLogHasJsonFields_NotEmptySearchRequestContext() throws IOException {
232+
public void testSearchRequestSlowLogHasJsonFields_NotEmptySearchRequestContext() {
233233
SearchSourceBuilder source = SearchSourceBuilder.searchSource().query(QueryBuilders.matchAllQuery());
234234
SearchRequest searchRequest = new SearchRequest().source(source);
235235
SearchPhaseContext searchPhaseContext = new MockSearchPhaseContext(1, searchRequest);
@@ -255,11 +255,12 @@ public void testSearchRequestSlowLogHasJsonFields_NotEmptySearchRequestContext()
255255
assertThat(p.getValueFor("total_hits"), equalTo("3 hits"));
256256
assertThat(p.getValueFor("search_type"), equalTo("QUERY_THEN_FETCH"));
257257
assertThat(p.getValueFor("shards"), equalTo("{total:10, successful:8, skipped:1, failed:1}"));
258+
assertThat(p.getValueFor("indices"), equalTo("[]"));
258259
assertThat(p.getValueFor("source"), equalTo("{\\\"query\\\":{\\\"match_all\\\":{\\\"boost\\\":1.0}}}"));
259260
assertThat(p.getValueFor("id"), equalTo(null));
260261
}
261262

262-
public void testSearchRequestSlowLogHasJsonFields_PartialContext() throws IOException {
263+
public void testSearchRequestSlowLogHasJsonFields_PartialContext() {
263264
SearchSourceBuilder source = SearchSourceBuilder.searchSource().query(QueryBuilders.matchAllQuery());
264265
SearchRequest searchRequest = new SearchRequest().source(source);
265266
SearchPhaseContext searchPhaseContext = new MockSearchPhaseContext(1, searchRequest);
@@ -285,13 +286,14 @@ public void testSearchRequestSlowLogHasJsonFields_PartialContext() throws IOExce
285286
assertThat(p.getValueFor("total_hits"), equalTo("3 hits"));
286287
assertThat(p.getValueFor("search_type"), equalTo("QUERY_THEN_FETCH"));
287288
assertThat(p.getValueFor("shards"), equalTo("{total:5, successful:3, skipped:1, failed:1}"));
289+
assertThat(p.getValueFor("indices"), equalTo("[]"));
288290
assertThat(p.getValueFor("source"), equalTo("{\\\"query\\\":{\\\"match_all\\\":{\\\"boost\\\":1.0}}}"));
289291
assertThat(p.getValueFor("id"), equalTo(null));
290292
}
291293

292-
public void testSearchRequestSlowLogSearchContextPrinterToLog() throws IOException {
294+
public void testSearchRequestSlowLogSearchContextPrinterToLog() {
293295
SearchSourceBuilder source = SearchSourceBuilder.searchSource().query(QueryBuilders.matchAllQuery());
294-
SearchRequest searchRequest = new SearchRequest().source(source);
296+
SearchRequest searchRequest = new SearchRequest(new String[] { "index1", "index2" }, source);
295297
SearchPhaseContext searchPhaseContext = new MockSearchPhaseContext(1, searchRequest);
296298
SearchRequestContext searchRequestContext = new SearchRequestContext(
297299
new SearchRequestOperationsListener.CompositeListener(List.of(), LogManager.getLogger()),
@@ -315,6 +317,7 @@ public void testSearchRequestSlowLogSearchContextPrinterToLog() throws IOExcepti
315317
assertThat(p.getFormattedMessage(), containsString("total_hits[3 hits]"));
316318
assertThat(p.getFormattedMessage(), containsString("search_type[QUERY_THEN_FETCH]"));
317319
assertThat(p.getFormattedMessage(), containsString("shards[{total:10, successful:8, skipped:1, failed:1}]"));
320+
assertThat(p.getFormattedMessage(), containsString("indices[index1, index2]"));
318321
assertThat(p.getFormattedMessage(), containsString("source[{\"query\":{\"match_all\":{\"boost\":1.0}}}]"));
319322
// Makes sure that output doesn't contain any new lines
320323
assertThat(p.getFormattedMessage(), not(containsString("\n")));

0 commit comments

Comments
 (0)