Skip to content

Commit 3bcdfa1

Browse files
jed326Jay Deng
authored and
Jay Deng
committed
Add slice level operation listener methods
Signed-off-by: Jay Deng <jayd0104@gmail.com>
1 parent f980924 commit 3bcdfa1

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

server/src/main/java/org/opensearch/index/shard/SearchOperationListener.java

+26
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ default void onFailedQueryPhase(SearchContext searchContext) {}
7171
*/
7272
default void onQueryPhase(SearchContext searchContext, long tookInNanos) {}
7373

74+
default void onPreSlicePhase(SearchContext searchContext) {}
75+
76+
default void onPostSlicePhase(SearchContext searchContext) {}
77+
7478
/**
7579
* Executed before the fetch phase is executed
7680
* @param searchContext the current search context
@@ -195,6 +199,28 @@ public void onQueryPhase(SearchContext searchContext, long tookInNanos) {
195199
}
196200
}
197201

202+
@Override
203+
public void onPreSlicePhase(SearchContext searchContext) {
204+
for (SearchOperationListener listener : listeners) {
205+
try {
206+
listener.onPreSlicePhase(searchContext);
207+
} catch (Exception e) {
208+
logger.warn(() -> new ParameterizedMessage("onPreSlicePhase listener [{}] failed", listener), e);
209+
}
210+
}
211+
}
212+
213+
@Override
214+
public void onPostSlicePhase(SearchContext searchContext) {
215+
for (SearchOperationListener listener : listeners) {
216+
try {
217+
listener.onPostSlicePhase(searchContext);
218+
} catch (Exception e) {
219+
logger.warn(() -> new ParameterizedMessage("onPostSlicePhase listener [{}] failed", listener), e);
220+
}
221+
}
222+
}
223+
198224
@Override
199225
public void onPreFetchPhase(SearchContext searchContext) {
200226
for (SearchOperationListener listener : listeners) {

server/src/main/java/org/opensearch/search/internal/ContextIndexSearcher.java

+2
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ public void search(
270270

271271
@Override
272272
protected void search(List<LeafReaderContext> leaves, Weight weight, Collector collector) throws IOException {
273+
searchContext.indexShard().getSearchOperationListener().onPreSlicePhase(searchContext);
273274
// Time series based workload by default traverses segments in desc order i.e. latest to the oldest order.
274275
// This is actually beneficial for search queries to start search on latest segments first for time series workload.
275276
// That can slow down ASC order queries on timestamp workload. So to avoid that slowdown, we will reverse leaf
@@ -284,6 +285,7 @@ protected void search(List<LeafReaderContext> leaves, Weight weight, Collector c
284285
}
285286
}
286287
searchContext.bucketCollectorProcessor().processPostCollection(collector);
288+
searchContext.indexShard().getSearchOperationListener().onPostSlicePhase(searchContext);
287289
}
288290

289291
/**

0 commit comments

Comments
 (0)