DeadLetterQueueUtils#extractSegmentId improvement: replace split with index of and substring methods.#18874
Merged
mashhurs merged 2 commits intoelastic:mainfrom Apr 7, 2026
Conversation
…ith simple index of and substring methods.
Contributor
🤖 GitHub commentsJust comment with:
|
Contributor
|
This pull request does not have a backport label. Could you fix it @mashhurs? 🙏
|
yaauie
reviewed
Mar 24, 2026
logstash-core/src/main/java/org/logstash/common/io/DeadLetterQueueUtils.java
Show resolved
Hide resolved
Contributor
|
FYI I've created #18883 to benchmark the various solutions. |
💚 Build Succeeded
History
|
2 tasks
2 tasks
2 tasks
Contributor
Author
|
@Mergifyio backport 9.4 |
Contributor
✅ Backports have been createdDetails |
2 tasks
mashhurs
added a commit
that referenced
this pull request
Apr 8, 2026
… index of and substring methods. (#18874) (#18958) * DeadLetterQueueUtils: avoid using heavy split operation, replace it with simple index of and substring methods. * Handle exception case if file name doesn't end with .log. Add unit test cases. (cherry picked from commit 8d7a5a3) Co-authored-by: Mashhur <99575341+mashhurs@users.noreply.github.com>
mashhurs
added a commit
that referenced
this pull request
Apr 8, 2026
… index of and substring methods. (#18874) (#18959) * DeadLetterQueueUtils: avoid using heavy split operation, replace it with simple index of and substring methods. * Handle exception case if file name doesn't end with .log. Add unit test cases. (cherry picked from commit 8d7a5a3) Co-authored-by: Mashhur <99575341+mashhurs@users.noreply.github.com>
mashhurs
added a commit
that referenced
this pull request
Apr 8, 2026
… index of and substring methods. (#18874) (#18960) * DeadLetterQueueUtils: avoid using heavy split operation, replace it with simple index of and substring methods. * Handle exception case if file name doesn't end with .log. Add unit test cases. (cherry picked from commit 8d7a5a3) Co-authored-by: Mashhur <99575341+mashhurs@users.noreply.github.com>
mashhurs
added a commit
that referenced
this pull request
Apr 8, 2026
… index of and substring methods. (#18874) (#18961) * DeadLetterQueueUtils: avoid using heavy split operation, replace it with simple index of and substring methods. * Handle exception case if file name doesn't end with .log. Add unit test cases. (cherry picked from commit 8d7a5a3) Co-authored-by: Mashhur <99575341+mashhurs@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release notes
What does this PR do?
DLQ flush operation is heavy, under the hood
DeadLetterQueueUtils#extractSegmentIdwill be called. TheString#splitis also CPU intensive that internally utilizesPattern#compile. Since the logic is simple, it can be replaceable withindexOfandsubstring.Why is it important/What is the impact to the user?
A bit performance improvement when using DLQ.
Checklist
[ ] I have commented my code, particularly in hard-to-understand areas[ ] I have made corresponding changes to the documentation[ ] I have made corresponding change to the default configuration files (and/or docker env variables)Author's Checklist
How to test this PR locally
Functionality test can be done by enabling DLQ and changing its settings, such as make size small to make DLQ full.
But performance measurement is a bit hard on powerful machines, so here is the benchmark - #18883
Related issues
Use cases
Screenshots
Logs