-
-
Notifications
You must be signed in to change notification settings - Fork 8.7k
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
Stream
/Spliterator
support for RunList
#5942
Merged
Merged
Conversation
This file contains 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
basil
added
the
squash-merge-me
Unclean or useless commit history, should be merged only with squash-merge
label
Nov 22, 2021
These are the magic words! |
jglick
approved these changes
Nov 22, 2021
core/src/main/java/jenkins/model/lazy/AbstractLazyLoadRunMap.java
Outdated
Show resolved
Hide resolved
Co-authored-by: Jesse Glick <jglick@cloudbees.com>
timja
approved these changes
Nov 25, 2021
timja
added
the
ready-for-merge
The PR is ready to go, and it will be merged soon if there is no negative feedback
label
Nov 25, 2021
oleg-nenashev
approved these changes
Nov 26, 2021
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good! Looking forward to see how it behaves on performance metrics
MarkEWaite
added
bug
For changelog: Minor bug. Will be listed after features
and removed
developer
Changes which impact plugin developers
labels
Nov 30, 2021
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
bug
For changelog: Minor bug. Will be listed after features
ready-for-merge
The PR is ready to go, and it will be merged soon if there is no negative feedback
squash-merge-me
Unclean or useless commit history, should be merged only with squash-merge
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.
RunList
, despite its name, is best used as anIterable
rather than aCollection
, because operations likeCollection#size
trigger eager loading of all build records. Despite this,RunList#stream
triggers eager loading of all builds, not only because it does not plumb through the correspondingstream()
andspliterator()
calls to the underlyingAbstractLazyLoadRunMap
, but also becauseAbstractLazyLoadRunMap
's ownentrySet()
,keySet()
, andvalues()
methods return objects whoseSpliterator
s are sized and therefore incompatible with lazy-loading. This change updates those methods to returnSpliterator
s of unknown size, which do not trigger eager loading. As a bonus, we also updateAbstractLazyLoadRunMap#keySet
so that its return value'sSpliterator
has theSpliterator.SORTED
characteristic and a correspondingComparator
(which is appropriate becauseAbstractLazyLoadRunMap
implementsSortedMap
). I have added new tests covering all of this functionality, including verifying lazy-loading behavior withRunLoadCounter
. The tests fail without the changes tocore/src/main
and pass with them.Proposed changelog entries
Proposed upgrade guidelines
N/A
Submitter checklist
Proposed changelog entries
section only if there are breaking changes or other changes which may require extra steps from users during the upgradeDesired reviewers
@mention
Maintainer checklist
Before the changes are marked as
ready-for-merge
:Proposed changelog entries
are correctupgrade-guide-needed
label is set and there is aProposed upgrade guidelines
section in the PR title. (example)lts-candidate
to be considered (see query).