Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Task Management Experimental Status #51628

Open
1 of 8 tasks
henningandersen opened this issue Jan 29, 2020 · 5 comments
Open
1 of 8 tasks

Task Management Experimental Status #51628

henningandersen opened this issue Jan 29, 2020 · 5 comments
Labels
:Distributed Coordination/Task Management Issues for anything around the Tasks API - both persistent and node level. experimental/beta Team:Distributed (Obsolete) Meta label for distributed team (obsolete). Replaced by Distributed Indexing/Coordination.

Comments

@henningandersen
Copy link
Contributor

henningandersen commented Jan 29, 2020

This is an experimental status issue, documenting the known remains before the Task management API can move out of experimental/beta state.

The primary outstanding items on the API is cementing the intentions of the API usage and its backwards compatibility guarantees. This was discussed in some detail here. This in turn adds work in several areas.

Following are the expected remaining actions before removing the experimental/beta status:

  • Reframe the tasks API as a powerful troubleshooting tool that should not be used for building applications (discuss + docs).
  • Clarify in docs that only the basic structure of the tasks API follows our backwards compatibliity principles. The structure (parent/child) of tasks, action names, descriptions, status and more can change in any release, including potentially micro/bugfix.
  • Remove node and id from response (Remove node and id from list task response #31253)
  • Ensure we do not use ListTasksResponse as response type for rethrottle (part of Reindex resiliency #42612)
  • Add explicit cancel APIs where appropriate to not point users to the task cancel API.
  • Similarly add explicit APIs for obtaining the result of tasks submitted with wait_for_completion=false (at least update and delete-by-query) and a mechanism for cleaning up older results once no longer needed.
  • Remove the ability to view persisted task results, since these should be obtained through dedicated APIs (notice: the ephemeral task id is inherently unsafe to use, since it may be reused after node restarts).
  • (optional) Add manage_tasks security privilege.
@henningandersen henningandersen added :Distributed Coordination/Task Management Issues for anything around the Tasks API - both persistent and node level. experimental/beta labels Jan 29, 2020
@elasticmachine
Copy link
Collaborator

Pinging @elastic/es-distributed (:Distributed/Task Management)

henningandersen added a commit to henningandersen/elasticsearch that referenced this issue Jan 29, 2020
Add issue reference to documentation.

Relates elastic#51628
henningandersen added a commit that referenced this issue Jan 30, 2020
Add issue reference to documentation.

Relates #51628
henningandersen added a commit that referenced this issue Jan 30, 2020
Add issue reference to documentation.

Relates #51628
@rjernst rjernst added the Team:Distributed (Obsolete) Meta label for distributed team (obsolete). Replaced by Distributed Indexing/Coordination. label May 4, 2020
@amitelastic
Copy link

is it still in beta/experimental state?

@elasticsearchmachine
Copy link
Collaborator

Pinging @elastic/es-distributed (Team:Distributed)

@devoxel
Copy link

devoxel commented Nov 28, 2023

The documentation for async delete by has the note:

When you are done with a task, you should delete the task document so Elasticsearch can reclaim the space.

But direct access to hidden indices like .tasks is now deprecated.

I see there's a TODO item in the issue:

Similarly add explicit APIs for obtaining the result of tasks submitted with wait_for_completion=false (at least update and delete-by-query) and a mechanism for cleaning up older results once no longer needed.

How is it intended to key these lookups? If the task id is inherently unsafe to use because it doesn't survive node restart, will the lookup on the result of a submitted task be resilient here?

@szabado-faire
Copy link

Reframe the tasks API as a powerful troubleshooting tool that should not be used for building applications (discuss + docs).

The task API is currently the best way I've come across to trigger expensive or slow operations (eg. reindex, force merge) and then wait for them to complete in a durable way. A blocking API call is more brittle, and does not survive server restarts or other similar disruptions.

Is there a proposed alternative if tasks are instead supposed to be a troubleshooting tool?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
:Distributed Coordination/Task Management Issues for anything around the Tasks API - both persistent and node level. experimental/beta Team:Distributed (Obsolete) Meta label for distributed team (obsolete). Replaced by Distributed Indexing/Coordination.
Projects
None yet
Development

No branches or pull requests

8 participants