Skip to content

Commit 9f0ec33

Browse files
committed
update
1 parent 7af835a commit 9f0ec33

File tree

3 files changed

+46
-15
lines changed

3 files changed

+46
-15
lines changed

server/src/main/java/org/elasticsearch/cluster/coordination/SearchIndexTimeTrackingCleanupService.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,27 @@
1414
import org.elasticsearch.common.util.concurrent.TaskExecutionTimeTrackingPerIndexEsThreadPoolExecutor;
1515
import org.elasticsearch.index.Index;
1616

17+
/**
18+
* Service responsible for cleaning up task execution time tracking for deleted indices.
19+
* Implements the ClusterStateListener interface to listen for cluster state changes.
20+
*/
1721
public class SearchIndexTimeTrackingCleanupService implements ClusterStateListener {
1822
private TaskExecutionTimeTrackingPerIndexEsThreadPoolExecutor executor;
1923

24+
/**
25+
* Constructs a new SearchIndexTimeTrackingCleanupService.
26+
*
27+
* @param executor the executor that tracks task execution times per index
28+
*/
2029
public SearchIndexTimeTrackingCleanupService(TaskExecutionTimeTrackingPerIndexEsThreadPoolExecutor executor) {
2130
this.executor = executor;
2231
}
2332

33+
/**
34+
* Called when the cluster state changes. Stops tracking execution time for deleted indices.
35+
*
36+
* @param event the cluster changed event
37+
*/
2438
@Override
2539
public void clusterChanged(ClusterChangedEvent event) {
2640
for (Index index : event.indicesDeleted()) {

server/src/main/java/org/elasticsearch/common/util/concurrent/TaskExecutionTimeTrackingPerIndexEsThreadPoolExecutor.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
*/
2929
public class TaskExecutionTimeTrackingPerIndexEsThreadPoolExecutor extends TaskExecutionTimeTrackingEsThreadPoolExecutor {
3030
private static final Logger logger = LogManager.getLogger(TaskExecutionTimeTrackingPerIndexEsThreadPoolExecutor.class);
31-
public final ConcurrentHashMap<String, Tuple<LongAdder, ExponentiallyWeightedMovingAverage>> indexExecutionTime;
32-
public final ConcurrentHashMap<Runnable, String> runnableToIndexName;
31+
private final ConcurrentHashMap<String, Tuple<LongAdder, ExponentiallyWeightedMovingAverage>> indexExecutionTime;
32+
private final ConcurrentHashMap<Runnable, String> runnableToIndexName;
3333

3434
TaskExecutionTimeTrackingPerIndexEsThreadPoolExecutor(
3535
String name,
@@ -118,4 +118,23 @@ protected void trackExecutionTime(Runnable r, long taskTime) {
118118
runnableToIndexName.remove(r);
119119
}
120120
}
121+
122+
//TODO Remove these methods once the NodeConstruction#searchLoadMetricsReporter is deleted
123+
/**
124+
* Gets the map of index execution times.
125+
*
126+
* @return the map of index execution times
127+
*/
128+
public ConcurrentHashMap<String, Tuple<LongAdder, ExponentiallyWeightedMovingAverage>> getIndexExecutionTime() {
129+
return indexExecutionTime;
130+
}
131+
132+
/**
133+
* Gets the map of runnable tasks to index names.
134+
*
135+
* @return the map of runnable tasks to index names
136+
*/
137+
public ConcurrentHashMap<Runnable, String> getRunnableToIndexName() {
138+
return runnableToIndexName;
139+
}
121140
}

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

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -705,12 +705,9 @@ private void construct(
705705
ClusterService clusterService = createClusterService(settingsModule, threadPool, taskManager);
706706
clusterService.addStateApplier(scriptService);
707707

708-
// TODO DR - this is a bit of a hack to get the cluster service into the plugins
709-
var executor = (TaskExecutionTimeTrackingEsThreadPoolExecutor) threadPool.executor(ThreadPool.Names.SEARCH);
710-
TaskExecutionTimeTrackingPerIndexEsThreadPoolExecutor perIndexEsThreadPoolExecutor =
711-
(TaskExecutionTimeTrackingPerIndexEsThreadPoolExecutor) executor;
712-
searchLoadMetricsReporter(perIndexEsThreadPoolExecutor);
713-
clusterService.addListener(new SearchIndexTimeTrackingCleanupService(perIndexEsThreadPoolExecutor));
708+
var executor = (TaskExecutionTimeTrackingPerIndexEsThreadPoolExecutor) threadPool.executor(ThreadPool.Names.SEARCH);
709+
clusterService.addListener(new SearchIndexTimeTrackingCleanupService(executor));
710+
if(logger.isDebugEnabled()) searchLoadMetricsReporter(executor);
714711

715712
modules.bindToInstance(DocumentParsingProvider.class, documentParsingProvider);
716713

@@ -1270,18 +1267,19 @@ private void searchLoadMetricsReporter(TaskExecutionTimeTrackingPerIndexEsThread
12701267
TimerTask task = new TimerTask() {
12711268
@Override
12721269
public void run() {
1273-
if (executor.indexExecutionTime.size() > 0) {
1274-
logger.info("Number of reported indices: {}", executor.indexExecutionTime.size());
1275-
logger.info("Number of runnables: {}", executor.runnableToIndexName.size());
1276-
executor.indexExecutionTime.forEach((index, tuple) -> {
1277-
logger.info("Index: {}, Total execution time: {}, EWMA: {}", index, tuple.v1().sum(), tuple.v2().getAverage());
1270+
if (executor.getIndexExecutionTime().size() > 0) {
1271+
logger.debug("Number of reported indices: {}", executor.getIndexExecutionTime().size());
1272+
logger.debug("Number of runnables: {}", executor.getRunnableToIndexName().size());
1273+
executor.getIndexExecutionTime().forEach((index, tuple) -> {
1274+
logger.debug("Index: {}, Total execution time: {}, EWMA: {}", index, tuple.v1().sum(), tuple.v2().getAverage());
12781275
});
1279-
logger.info("Total task execution time: {}", executor.getTotalTaskExecutionTime());
1280-
logger.info("----------------------------------------------------------------------------------");
1276+
logger.debug("Total task execution time: {}", executor.getTotalTaskExecutionTime());
1277+
logger.debug("----------------------------------------------------------------------------------");
12811278
}
12821279
}
12831280
};
12841281

1282+
12851283
timer.scheduleAtFixedRate(task, 0, 4000);
12861284
}
12871285

0 commit comments

Comments
 (0)