public void apply()

in src/main/java/org/opensearch/performanceanalyzer/action/PerformanceAnalyzerActionFilter.java [57:100]


    public <Request extends ActionRequest, Response extends ActionResponse> void apply(
            Task task,
            final String action,
            Request request,
            ActionListener<Response> listener,
            ActionFilterChain<Request, Response> chain) {

        if (controller.isPerformanceAnalyzerEnabled()) {
            if (request instanceof BulkRequest) {
                PerformanceAnalyzerActionListener<Response> newListener =
                        new PerformanceAnalyzerActionListener<>();
                String id = String.valueOf(uniqueID.getAndIncrement());
                long startTime = System.currentTimeMillis();
                BulkRequest bulk = (BulkRequest) request;
                newListener.set(RequestType.bulk, id, listener);
                newListener.saveMetricValues(
                        newListener.generateStartMetrics(startTime, "", bulk.requests().size()),
                        startTime,
                        RequestType.bulk.toString(),
                        id,
                        PerformanceAnalyzerMetrics.START_FILE_NAME);
                chain.proceed(task, action, request, newListener);
                return;
            } else if (request instanceof SearchRequest) {
                PerformanceAnalyzerActionListener<Response> newListener =
                        new PerformanceAnalyzerActionListener<>();
                String id = String.valueOf(uniqueID.getAndIncrement());
                long startTime = System.currentTimeMillis();
                SearchRequest search = (SearchRequest) request;
                newListener.set(RequestType.search, id, listener);
                newListener.saveMetricValues(
                        newListener.generateStartMetrics(
                                startTime, String.join(",", search.indices()), 0),
                        startTime,
                        RequestType.search.toString(),
                        id,
                        PerformanceAnalyzerMetrics.START_FILE_NAME);
                chain.proceed(task, action, request, newListener);
                return;
            }
        }

        chain.proceed(task, action, request, listener);
    }