@@ -123,7 +123,8 @@ int RAI_InitRunInfo(RedisAI_RunInfo **result) {
123123 }
124124 rinfo -> dagError = RedisModule_Calloc (1 , sizeof (int ));
125125 rinfo -> dagLock = RedisModule_Alloc (sizeof (pthread_rwlock_t ));
126- rinfo -> dagRefCount = RedisModule_Calloc (1 , sizeof (long long ));
126+ rinfo -> dagRefCount = RedisModule_Alloc (sizeof (long long ));
127+ * rinfo -> dagRefCount = 1 ;
127128 rinfo -> dagOpCount = 0 ;
128129 rinfo -> dagCompleteOpCount = RedisModule_Calloc (1 , sizeof (long long ));
129130 rinfo -> dagDeviceOpCount = 0 ;
@@ -145,6 +146,7 @@ int RAI_ShallowCopyDagRunInfo(RedisAI_RunInfo **result, RedisAI_RunInfo *src) {
145146 if (!(rinfo -> dagDeviceOps )) {
146147 return REDISMODULE_ERR ;
147148 }
149+ (* rinfo -> dagRefCount )++ ;
148150 rinfo -> dagDeviceOpCount = 0 ;
149151 rinfo -> dagDeviceCompleteOpCount = 0 ;
150152 * result = rinfo ;
@@ -197,7 +199,7 @@ void RAI_FreeDagOp(RedisModuleCtx *ctx, RAI_DagOp *dagOp) {
197199 }
198200}
199201
200- long long RAI_DagRunInfoDecreaseFetch (RedisAI_RunInfo * rinfo ) {
202+ long long RAI_DagRunInfoFreeShallowCopy (RedisAI_RunInfo * rinfo ) {
201203 long long ref_count = __atomic_sub_fetch (rinfo -> dagRefCount , 1 , __ATOMIC_RELAXED );
202204 RedisModule_Assert (ref_count >= 0 );
203205 if (rinfo -> dagDeviceOps ) {
@@ -213,7 +215,7 @@ void RAI_FreeRunInfo(RedisModuleCtx *ctx, struct RedisAI_RunInfo *rinfo) {
213215 if (!rinfo ) {
214216 return ;
215217 }
216- long long ref_count = __atomic_load_n ( rinfo -> dagRefCount , __ATOMIC_RELAXED ) ;
218+ long long ref_count = * rinfo -> dagRefCount ;
217219 RedisModule_Assert (ref_count == 0 );
218220 pthread_rwlock_destroy (rinfo -> dagLock );
219221 RedisModule_Free (rinfo -> dagLock );
0 commit comments