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

[improve][broker] Support values up to 2^32 in ConcurrentBitmapSortedLongPairSet #23878

Merged

Conversation

lhotari
Copy link
Member

@lhotari lhotari commented Jan 22, 2025

Motivation

ConcurrentBitmapSortedLongPairSet doesn't support long right-side values for the added pairs.
This PR mitigates the issue reported as #23877 by properly implementing the iterator so that values up to 2^32 can be supported.

In addition, this PR optimizes the iterator usable by using RoaringBitmap's PeekableIntIterator which is more performant than using Java's standard Iterator API since PeekableIntIterator uses primitive int values instead of using boxed Integer values.

Modifications

  • Optimize ConcurrentBitmapSortedLongPairSet's processItems method by using PeekableIntIterator instead of Java's standard Iterator API.
  • Properly use Integer.toUnsignedLong to support values up to 2^32. RoaringBitmap encodes the bit index as an unsigned int. However since Java doesn't support unsigned ints, it's necessary to use Integer.toUnsignedLong to convert the value to a long value.

Documentation

  • doc
  • doc-required
  • doc-not-needed
  • doc-complete

@codecov-commenter
Copy link

codecov-commenter commented Jan 22, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 74.13%. Comparing base (bbc6224) to head (d36ac04).
Report is 865 commits behind head on master.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff              @@
##             master   #23878      +/-   ##
============================================
+ Coverage     73.57%   74.13%   +0.56%     
+ Complexity    32624    32187     -437     
============================================
  Files          1877     1853      -24     
  Lines        139502   143619    +4117     
  Branches      15299    16311    +1012     
============================================
+ Hits         102638   106479    +3841     
+ Misses        28908    28742     -166     
- Partials       7956     8398     +442     
Flag Coverage Δ
inttests 26.67% <100.00%> (+2.08%) ⬆️
systests 23.13% <100.00%> (-1.19%) ⬇️
unittests 73.64% <100.00%> (+0.80%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...ulsar/utils/ConcurrentBitmapSortedLongPairSet.java 97.14% <100.00%> (+2.69%) ⬆️

... and 1026 files with indirect coverage changes

@lhotari lhotari merged commit 0f9f661 into apache:master Jan 23, 2025
56 of 57 checks passed
lhotari added a commit that referenced this pull request Jan 23, 2025
lhotari added a commit that referenced this pull request Jan 23, 2025
lhotari added a commit that referenced this pull request Jan 23, 2025
nikhil-ctds pushed a commit to datastax/pulsar that referenced this pull request Jan 31, 2025
…LongPairSet (apache#23878)

(cherry picked from commit 0f9f661)
(cherry picked from commit 2e0d575)
srinath-ctds pushed a commit to datastax/pulsar that referenced this pull request Feb 3, 2025
…LongPairSet (apache#23878)

(cherry picked from commit 0f9f661)
(cherry picked from commit 2e0d575)
nodece pushed a commit to ascentstream/pulsar that referenced this pull request Feb 10, 2025
hanmz pushed a commit to hanmz/pulsar that referenced this pull request Feb 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants