Skip to content

Commit 42e49be

Browse files
committed
Rely on HoldString where possible
1 parent 02e6c01 commit 42e49be

File tree

8 files changed

+34
-22
lines changed

8 files changed

+34
-22
lines changed

src/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ endif()
55
ADD_LIBRARY(redisai_obj OBJECT
66
util/dict.c
77
util/queue.c
8+
util/string_utils.c
89
redisai.c
910
run_info.c
1011
background_workers.c

src/dag.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
#include "util/arr_rm_alloc.h"
4444
#include "util/dict.h"
4545
#include "util/queue.h"
46+
#include "util/string_utils.h"
4647

4748
/**
4849
* Execution of a TENSORSET DAG step.
@@ -703,7 +704,7 @@ int RedisAI_DagRun_Reply(RedisModuleCtx *ctx, RedisModuleString **argv, int argc
703704
RedisModule_StringPtrLen(persist_key_name, &persist_key_len);
704705
RedisModuleString *demangled_key_name =
705706
RedisModule_CreateString(NULL, persist_key_str, persist_key_len - 4);
706-
RedisModule_RetainString(NULL, demangled_key_name);
707+
demangled_key_name = RAI_HoldString(NULL, demangled_key_name);
707708
const int status = RAI_OpenKey_Tensor(ctx, demangled_key_name, &key,
708709
REDISMODULE_READ | REDISMODULE_WRITE);
709710
if (status == REDISMODULE_ERR) {

src/model.c

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "stats.h"
1818
#include "util/arr_rm_alloc.h"
1919
#include "util/dict.h"
20+
#include "util/string_utils.h"
2021
#include <pthread.h>
2122

2223
RedisModuleType *RedisAI_ModelType = NULL;
@@ -113,10 +114,7 @@ static void *RAI_Model_RdbLoad(struct RedisModuleIO *io, int encver) {
113114
RedisModuleString *stats_keystr =
114115
RedisModule_CreateStringFromString(stats_ctx, RedisModule_GetKeyNameFromIO(io));
115116
const char *stats_devicestr = RedisModule_Strdup(devicestr);
116-
if (tag) {
117-
RedisModule_RetainString(NULL, tag);
118-
}
119-
RedisModuleString *stats_tag = tag;
117+
RedisModuleString *stats_tag = RAI_HoldString(NULL, tag);
120118

121119
model->infokey =
122120
RAI_AddStatsEntry(stats_ctx, stats_keystr, RAI_MODEL, backend, stats_devicestr, stats_tag);
@@ -325,8 +323,7 @@ RAI_Model *RAI_ModelCreate(RAI_Backend backend, const char *devicestr, RedisModu
325323

326324
if (model) {
327325
if (tag) {
328-
RedisModule_RetainString(NULL, tag);
329-
model->tag = tag;
326+
model->tag = RAI_HoldString(NULL, tag);
330327
} else {
331328
model->tag = RedisModule_CreateString(NULL, "", 0);
332329
}
@@ -596,12 +593,12 @@ int RedisAI_Parse_ModelRun_RedisCommand(RedisModuleCtx *ctx, RedisModuleString *
596593
is_input = 1;
597594
outputs_flag_count = 1;
598595
} else {
599-
RedisModule_RetainString(ctx, argv[argpos]);
596+
RedisModuleString *arg = RAI_HoldString(ctx, argv[argpos]);
600597
if (is_input == 0) {
601-
*inkeys = array_append(*inkeys, argv[argpos]);
598+
*inkeys = array_append(*inkeys, arg);
602599
ninputs++;
603600
} else {
604-
*outkeys = array_append(*outkeys, argv[argpos]);
601+
*outkeys = array_append(*outkeys, arg);
605602
noutputs++;
606603
}
607604
}

src/script.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "script_struct.h"
1414
#include "stats.h"
1515
#include "util/arr_rm_alloc.h"
16+
#include "util/string_utils.h"
1617
#include "version.h"
1718
#include <pthread.h>
1819

@@ -59,9 +60,7 @@ static void *RAI_Script_RdbLoad(struct RedisModuleIO *io, int encver) {
5960
RedisModule_CreateStringFromString(stats_ctx, RedisModule_GetKeyNameFromIO(io));
6061
const char *stats_devicestr = RedisModule_Strdup(devicestr);
6162

62-
if (tag) {
63-
RedisModule_RetainString(NULL, tag);
64-
}
63+
tag = RAI_HoldString(NULL, tag);
6564

6665
script->infokey = RAI_AddStatsEntry(stats_ctx, stats_keystr, RAI_SCRIPT, RAI_BACKEND_TORCH,
6766
stats_devicestr, tag);
@@ -120,8 +119,7 @@ RAI_Script *RAI_ScriptCreate(const char *devicestr, RedisModuleString *tag, cons
120119

121120
if (script) {
122121
if (tag) {
123-
RedisModule_RetainString(NULL, tag);
124-
script->tag = tag;
122+
script->tag = RAI_HoldString(NULL, tag);
125123
} else {
126124
script->tag = RedisModule_CreateString(NULL, "", 0);
127125
}

src/stats.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
*/
99

1010
#include "stats.h"
11+
#include "util/string_utils.h"
1112

1213
#include <sys/time.h>
1314

@@ -27,15 +28,11 @@ void *RAI_AddStatsEntry(RedisModuleCtx *ctx, RedisModuleString *key, RAI_RunType
2728
RAI_Backend backend, const char *devicestr, RedisModuleString *tag) {
2829
struct RedisAI_RunStats *rstats = NULL;
2930
rstats = RedisModule_Calloc(1, sizeof(struct RedisAI_RunStats));
30-
RedisModule_RetainString(ctx, key);
31-
rstats->key = key;
31+
rstats->key = RAI_HoldString(NULL, key);
3232
rstats->type = runtype;
3333
rstats->backend = backend;
3434
rstats->devicestr = RedisModule_Strdup(devicestr);
35-
if (tag) {
36-
RedisModule_RetainString(ctx, tag);
37-
}
38-
rstats->tag = tag;
35+
rstats->tag = RAI_HoldString(NULL, tag);
3936

4037
AI_dictAdd(run_stats, (void *)key, (void *)rstats);
4138

src/util/string_utils.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#include "string_utils.h"
2+
3+
RedisModuleString *RAI_HoldString(RedisModuleCtx *ctx, RedisModuleString *str) {
4+
if (str == NULL) {
5+
return NULL;
6+
}
7+
RedisModuleString *out;
8+
if (RMAPI_FUNC_SUPPORTED(RedisModule_HoldString)) {
9+
out = RedisModule_HoldString(NULL, str);
10+
} else {
11+
RedisModule_RetainString(NULL, str);
12+
out = str;
13+
}
14+
return out;
15+
}

src/util/string_utils.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#include "redismodule.h"
2+
3+
RedisModuleString *RAI_HoldString(RedisModuleCtx *ctx, RedisModuleString *str);

0 commit comments

Comments
 (0)