Skip to content

ElasticsearchEnrichClient does not return taskId when waitForCompletion is set to false #120474

Closed as not planned
@swatisuman1990

Description

@swatisuman1990

Elasticsearch Version

8.6.2

Installed Plugins

No response

Java Version

_bundled_17

OS Version

Linux codon-slurm-login-01.ebi.ac.uk 4.18.0-513.5.1.el8_9.x86_64 #1 SMP Fri Nov 17 03:31:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

Problem Description

I am on java 17 and using below elastic libraries :

implementation group: 'org.springframework.data', name: 'spring-data-elasticsearch', version: '5.1.12'
implementation group: 'org.elasticsearch.client', name: 'elasticsearch-rest-client', version: '8.6.2'

Below is my Code Snippet.

    private ElasticsearchClient restHighLevelClient;
private void executeEnrichPolicy(ElasticsearchEnrichClient enrichClient, String policyName) throws IOException {
        log.info("executing:{}", policyName);
        ApiTypeHelper.DANGEROUS_disableRequiredPropertiesCheck(true);
        ExecutePolicyRequest executePolicyRequest = ExecutePolicyRequest.of(e -> e.name(policyName).
                waitForCompletion(false));
        final ExecutePolicyResponse executePolicyResponse = enrichClient.executePolicy(executePolicyRequest);
        String taskId = executePolicyResponse.taskId();
        pollForTaskCompletion(taskId);
        ApiTypeHelper.DANGEROUS_disableRequiredPropertiesCheck(false);
        log.info("policy executed:{}", executePolicyResponse.status().toString());
    }

    @SneakyThrows
    private void pollForTaskCompletion(String taskId) {
        ElasticsearchTasksClient tasksClient = restHighLevelClient.tasks();
        while (true) {
            GetTasksRequest getTasksRequest = GetTasksRequest.of(builder -> builder.taskId(taskId));
            GetTasksResponse getTasksResponse = tasksClient.get(getTasksRequest);
            if (getTasksResponse.task() == null) {
                log.info("Task completed: {}", taskId);
                break;
            } else {
                log.info("Task {} is still running.", taskId);
            }
            Thread.sleep(60000);

        }
    }

I want to execute enrich policy with waitForCompletion set to false. I get taskId as null. However when I execute the same executePolicyRequest in Kibana, it returns the taskId.

Steps to Reproduce

Set waitForCompletion to false in ExecutePolicyRequest and get ExecutePolicyResponse.

Logs (if relevant)

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions