Skip to content

Commit 4ad00e8

Browse files
authored
MOD-8129: Fix indexed_percent info stat (#5238)
Fix indexed_percent info stat
1 parent d67d645 commit 4ad00e8

3 files changed

Lines changed: 7 additions & 8 deletions

File tree

src/info_command.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ int IndexInfoCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
257257
REPLY_KVINT("indexing", !!global_spec_scanner || sp->scan_in_progress);
258258

259259
IndexesScanner *scanner = global_spec_scanner ? global_spec_scanner : sp->scanner;
260-
double percent_indexed = IndexesScanner_IndexedPercent(scanner, sp);
260+
double percent_indexed = IndexesScanner_IndexedPercent(ctx, scanner, sp);
261261
REPLY_KVNUM("percent_indexed", percent_indexed);
262262

263263
REPLY_KVINT("number_of_uses", sp->counter);

src/spec.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -335,10 +335,11 @@ void Indexes_SetTempSpecsTimers(TimerOp op) {
335335

336336
//---------------------------------------------------------------------------------------------
337337

338-
double IndexesScanner_IndexedPercent(IndexesScanner *scanner, IndexSpec *sp) {
338+
double IndexesScanner_IndexedPercent(RedisModuleCtx *ctx, IndexesScanner *scanner, IndexSpec *sp) {
339339
if (scanner || sp->scan_in_progress) {
340340
if (scanner) {
341-
return scanner->totalKeys > 0 ? (double)scanner->scannedKeys / scanner->totalKeys : 0;
341+
size_t totalKeys = RedisModule_DbSize(ctx);
342+
return totalKeys > 0 ? (double)scanner->scannedKeys / totalKeys : 0;
342343
} else {
343344
return 0;
344345
}
@@ -2111,7 +2112,6 @@ static IndexesScanner *IndexesScanner_NewGlobal() {
21112112
IndexesScanner *scanner = rm_calloc(1, sizeof(IndexesScanner));
21122113
scanner->global = true;
21132114
scanner->scannedKeys = 0;
2114-
scanner->totalKeys = RedisModule_DbSize(RSDummyContext);
21152115

21162116
global_spec_scanner = scanner;
21172117
RedisModule_Log(RSDummyContext, "notice", "Global scanner created");
@@ -2122,7 +2122,6 @@ static IndexesScanner *IndexesScanner_NewGlobal() {
21222122
static IndexesScanner *IndexesScanner_New(StrongRef global_ref) {
21232123

21242124
IndexesScanner *scanner = rm_calloc(1, sizeof(IndexesScanner));
2125-
scanner->totalKeys = RedisModule_DbSize(RSDummyContext);
21262125

21272126
scanner->spec_ref = StrongRef_Demote(global_ref);
21282127
IndexSpec *spec = StrongRef_Get(global_ref);
@@ -2420,7 +2419,7 @@ void IndexSpec_AddToInfo(RedisModuleInfoCtx *ctx, IndexSpec *sp) {
24202419
RedisModule_InfoAddFieldLongLong(ctx, "hash_indexing_failures", sp->stats.indexingFailures);
24212420
RedisModule_InfoAddFieldLongLong(ctx, "indexing", !!global_spec_scanner || sp->scan_in_progress);
24222421
IndexesScanner *scanner = global_spec_scanner ? global_spec_scanner : sp->scanner;
2423-
double percent_indexed = IndexesScanner_IndexedPercent(scanner, sp);
2422+
double percent_indexed = IndexesScanner_IndexedPercent(ctx, scanner, sp);
24242423
RedisModule_InfoAddFieldDouble(ctx, "percent_indexed", percent_indexed);
24252424
RedisModule_InfoEndDictField(ctx);
24262425

src/spec.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -634,10 +634,10 @@ typedef struct IndexesScanner {
634634
bool cancelled;
635635
WeakRef spec_ref;
636636
char *spec_name;
637-
size_t scannedKeys, totalKeys;
637+
size_t scannedKeys;
638638
} IndexesScanner;
639639

640-
double IndexesScanner_IndexedPercent(IndexesScanner *scanner, IndexSpec *sp);
640+
double IndexesScanner_IndexedPercent(RedisModuleCtx *ctx, IndexesScanner *scanner, IndexSpec *sp);
641641

642642
/**
643643
* @return the overhead used by the TAG fields in `sp`, i.e., the size of the

0 commit comments

Comments
 (0)