Bugfix for rare bug where some queries may miss hits due to BTreeReader's retain function giving up too fast. (#129)

Co-authored-by: Viktor Lofgren <vlofgren@marginalia.nu>
Reviewed-on: https://git.marginalia.nu/marginalia/marginalia.nu/pulls/129
This commit is contained in:
Viktor Lofgren 2022-11-22 16:35:09 +01:00
parent f0f82f7db0
commit 06299cd554

View File

@ -52,8 +52,10 @@ public class BTreeReader {
public void retainEntries(BTreeQueryBuffer buffer) { public void retainEntries(BTreeQueryBuffer buffer) {
if (header.layers() == 0) { if (header.layers() == 0) {
BTreePointer pointer = new BTreePointer(header); BTreePointer pointer = new BTreePointer(header);
while (buffer.hasMore()) {
pointer.retainData(buffer); pointer.retainData(buffer);
} }
}
retainSingle(buffer); retainSingle(buffer);
} }
@ -61,8 +63,10 @@ public class BTreeReader {
public void rejectEntries(BTreeQueryBuffer buffer) { public void rejectEntries(BTreeQueryBuffer buffer) {
if (header.layers() == 0) { if (header.layers() == 0) {
BTreePointer pointer = new BTreePointer(header); BTreePointer pointer = new BTreePointer(header);
while (buffer.hasMore()) {
pointer.rejectData(buffer); pointer.rejectData(buffer);
} }
}
rejectSingle(buffer); rejectSingle(buffer);
} }