4paradigm / 4paradigm/OpenMLDB

disktable and memtable behave inconsistently with max_traverse_cnt

Ouverte
#1,249 2 commentaires 0 réactions 1 personne assignée Réclamée par @Leowner Voir sur GitHub
bug storage-engine
Langage dominant
C++
Étoiles
1.7k
Forks
331
Merge moyen
12 j 12 h
PR mergées (30 j)
1

Description

When traversing a table, we use `max_traverse_cnt` to control. If `iterator->GetCount() >= max_traverse_cnt`, the traverse will be stopped. This decision is mainly in tablet_impl.cc but can be done early in disk_table.cc and mem_table.cc. For now, we add more `if (iterator->GetCount() >= max_traverse_cnt)` in disktable, which makes the `max_traverse_cnt` flag works in disktable but not in memtable. In consequence, some tests in table_test related to `max_traverse_cnt` have different results for memtable and disktable

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Look at tablet_impl.cc, disk_table.cc, and mem_table.cc for the traversal logic and the check on iterator->GetCount() >= max_traverse_cnt. The inconsistency is that disk_table has this check but mem_table does not. Run the table_test tests related to max_traverse_cnt to see the differing results. The fix is to ensure the same early stop logic is applied in both table implementations.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
cpp
Domaine
databases
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.