Skip to content

Commit de8288c

Browse files
emmaling27Convex, Inc.
authored and
Convex, Inc.
committed
Fix another num_terms underflow (#27358)
follow up on #27357 GitOrigin-RevId: e55045f1aab0b15f68e934cebc3eb4d7a809dc38
1 parent 8e004f5 commit de8288c

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

crates/search/src/searcher/searcher.rs

+12-4
Original file line numberDiff line numberDiff line change
@@ -951,10 +951,18 @@ impl<RT: Runtime> SearcherImpl<RT> {
951951
let num_terms_by_field = inverted_index_by_field
952952
.into_iter()
953953
.map(|(field, inverted_index)| {
954-
let num_terms = inverted_index
955-
.total_num_tokens()
956-
.checked_sub(deletion_tracker.num_terms_deleted(field))
957-
.context("num_terms underflow")?;
954+
let total_num_tokens = inverted_index.total_num_tokens();
955+
let num_terms_deleted = deletion_tracker.num_terms_deleted(field);
956+
let num_terms = total_num_tokens
957+
.checked_sub(num_terms_deleted)
958+
// Tantivy's total_num_tokens count is only approximate, so we can't guarantee this won't underflow.
959+
.unwrap_or_else(|| {
960+
tracing::warn!(
961+
"num_terms underflowed for field {field:?}, subtracted num_terms_deleted: {num_terms_deleted} from \
962+
total_num_tokens: {total_num_tokens}"
963+
);
964+
0
965+
});
958966
Ok((field, num_terms))
959967
})
960968
.collect::<anyhow::Result<BTreeMap<_, _>>>()?;

0 commit comments

Comments
 (0)