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

Better handling of async processor failures #104289

Merged

Conversation

joegallo
Copy link
Contributor

@joegallo joegallo commented Jan 11, 2024

Fixes #101921

The BulkRequestModifier assumes its itemResponses are in order, but with async processors the itemResponses can actually be in any order.

itemResponses are for recording "failures" (i.e. a processor threw an exception, a document was dropped via a drop processor, a document was failed via a fail processor), and asynchronous failures can throw the ordering off. Each response in itemResponses tracks its own slot, however, so recreating the correct order is not difficult.

@joegallo joegallo added >bug WIP :Data Management/Ingest Node Execution or management of Ingest Pipelines including GeoIP Team:Data Management Meta label for data/management team v8.13.0 v8.12.1 v7.17.17 labels Jan 11, 2024
If the markItemAsFailed calls happen asynchronously, then the items
are recorded in the BulkRequestModifier's itemResponses ArrayList in a
different order than one might otherwise expect.
I think this is faster than the original code, too, because instead of
N inserts on an ArrayList that need to push items out of the way, we
do a single scan through all the items.
@joegallo joegallo force-pushed the better-handling-of-async-processor-failures branch from 7ea5178 to b01b841 Compare January 16, 2024 04:03
@joegallo joegallo removed the WIP label Jan 16, 2024
@joegallo joegallo marked this pull request as ready for review January 16, 2024 04:03
@elasticsearchmachine
Copy link
Collaborator

Pinging @elastic/es-data-management (Team:Data Management)

@elasticsearchmachine
Copy link
Collaborator

Hi @joegallo, I've created a changelog YAML for you.

@joegallo joegallo requested review from andreidan and masseyke and removed request for andreidan January 16, 2024 04:04
Copy link
Contributor

@andreidan andreidan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very nice, thanks for fixing this 🚀

@joegallo joegallo merged commit 88c1c29 into elastic:main Jan 18, 2024
15 checks passed
@joegallo joegallo deleted the better-handling-of-async-processor-failures branch January 18, 2024 18:18
@joegallo joegallo added auto-backport-and-merge Automatically create backport pull requests and merge when ready auto-backport Automatically create backport pull requests when merged v7.17.18 and removed auto-backport-and-merge Automatically create backport pull requests and merge when ready v7.17.17 auto-backport Automatically create backport pull requests when merged labels Jan 18, 2024
joegallo added a commit to joegallo/elasticsearch that referenced this pull request Jan 25, 2024
joegallo added a commit to joegallo/elasticsearch that referenced this pull request Jan 25, 2024
joegallo added a commit to joegallo/elasticsearch that referenced this pull request Jan 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
>bug :Data Management/Ingest Node Execution or management of Ingest Pipelines including GeoIP Team:Data Management Meta label for data/management team v7.17.18 v8.12.1 v8.13.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Bulk response can return errors and drops in incorrect order
3 participants