CNDB-141284: use ByteBuffer.remaining
instead of limit
to asset size (#1755)
#1829
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.
The data inserted into the trie in
TrieMemoryIndex
isencodedTerm
, which is built fromterm
and only on the "available" bytes (betweenterm.position()
andterm.limit()
). But the check that decides to use the (more efficient) recursive path or not usesterm.limit()
to assess the size ofencodedTerm
. Ifterm.position()
is not 0, this is incorrect, and can lead to using the less optimal pass completely unecessarily. This has been shown to happen when investigating https://github.com/riptano/cndb/issues/14153: the non-recursive path was taken even for boolean values (because the nodes were usingoffheap_buffers
; withoffheap_objects
, the buffers getting toTriMemoryIndex
are 0-positioned).See https://github.com/riptano/cndb/issues/14184.