FrankChen021 opened a new pull request, #20771:
URL: https://github.com/apache/druid/pull/20771
### Description
Upgrades fastutil from 8.5.4 to 8.5.19, split out of #20765 because it needs
code changes:
- `fastutil` 8.5.19 is self-contained and no longer depends on
`fastutil-core`, so modules declare `fastutil` instead.
- `IntArrayList#grow(int)` is now public, so `DruidIntList` drops its
private copy.
- Tree maps and sets now reject null keys:
- `array_overlap` with a constant array uses `java.util.TreeSet` instead
of `ObjectAVLTreeSet`.
- `SortedDimensionDictionary` and `ComparatorSortedDimensionDictionary`
sort an `int[]` of ids instead of building an `Object2IntRBTreeMap`, so null
needs no special handling.
The new dictionary sort is also faster and allocates less (JMH, 1M values):
| Class | Type | Tree map(original) | This PR | Allocation |
| --- | --- | --- | --- | --- |
| `ComparatorSortedDimensionDictionary` | STRING | 1210 ms | 512 ms | 74 MB
→ 12 MB |
| `SortedDimensionDictionary` | STRING | 1183 ms | 458 ms | 54 MB → 12 MB |
| `SortedDimensionDictionary` | LONG | 964 ms | 270 ms | 54 MB → 12 MB |
#### Release note
Upgraded fastutil to 8.5.19. Druid now ships a single `fastutil` jar instead
of `fastutil`, `fastutil-core` and `fastutil-extra`.
<hr>
This PR has:
- [x] been self-reviewed.
- [x] added or updated version, license, or notice information in
[licenses.yaml](https://github.com/apache/druid/blob/master/dev/license.md)
- [x] added unit tests or modified existing tests to cover new code paths,
ensuring the threshold for [code
coverage](https://github.com/apache/druid/blob/master/dev/code-review/code-coverage.md)
is met.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]