Browse Source

MT#56447 use LOCK in redis.c

Change-Id: I4bda3f11caf921846e1d32d1e0a6ea55da33fabe
pull/1642/head
Richard Fuchs 3 years ago
parent
commit
df3bd87522
1 changed files with 9 additions and 21 deletions
  1. +9
    -21
      daemon/redis.c

+ 9
- 21
daemon/redis.c View File

@ -225,11 +225,10 @@ int redis_set_timeout(struct redis* r, int timeout) {
int redis_reconnect(struct redis* r) { int redis_reconnect(struct redis* r) {
int rval; int rval;
mutex_lock(&r->lock);
LOCK(&r->lock);
rval = redis_connect(r,1); rval = redis_connect(r,1);
if (rval) if (rval)
r->state = REDIS_STATE_DISCONNECTED; r->state = REDIS_STATE_DISCONNECTED;
mutex_unlock(&r->lock);
return rval; return rval;
} }
@ -2383,8 +2382,8 @@ char* redis_encode_json(struct call *c) {
for (l = c->streams.head; l; l = l->next) { for (l = c->streams.head; l; l = l->next) {
ps = l->data; ps = l->data;
mutex_lock(&ps->in_lock);
mutex_lock(&ps->out_lock);
LOCK(&ps->in_lock);
LOCK(&ps->out_lock);
snprintf(tmp, sizeof(tmp), "stream-%u", ps->unique_id); snprintf(tmp, sizeof(tmp), "stream-%u", ps->unique_id);
json_builder_set_member_name(builder, tmp); json_builder_set_member_name(builder, tmp);
@ -2410,8 +2409,6 @@ char* redis_encode_json(struct call *c) {
json_builder_end_object (builder); json_builder_end_object (builder);
// stream_sfds was here before // stream_sfds was here before
mutex_unlock(&ps->in_lock);
mutex_unlock(&ps->out_lock);
} // --- for streams.head } // --- for streams.head
@ -2420,8 +2417,8 @@ char* redis_encode_json(struct call *c) {
ps = l->data; ps = l->data;
// XXX these should all go into the above loop // XXX these should all go into the above loop
mutex_lock(&ps->in_lock);
mutex_lock(&ps->out_lock);
LOCK(&ps->in_lock);
LOCK(&ps->out_lock);
snprintf(tmp, sizeof(tmp), "stream_sfds-%u", ps->unique_id); snprintf(tmp, sizeof(tmp), "stream_sfds-%u", ps->unique_id);
json_builder_set_member_name(builder, tmp); json_builder_set_member_name(builder, tmp);
@ -2451,9 +2448,6 @@ char* redis_encode_json(struct call *c) {
JSON_ADD_STRING("%u", sink->unique_id); JSON_ADD_STRING("%u", sink->unique_id);
} }
json_builder_end_array (builder); json_builder_end_array (builder);
mutex_unlock(&ps->in_lock);
mutex_unlock(&ps->out_lock);
} }
@ -2685,7 +2679,7 @@ void redis_update_onekey(struct call *c, struct redis *r) {
if (c->foreign_call) if (c->foreign_call)
return; return;
mutex_lock(&r->lock);
LOCK(&r->lock);
// coverity[sleep : FALSE] // coverity[sleep : FALSE]
if (redis_check_conn(r) == REDIS_STATE_DISCONNECTED) { if (redis_check_conn(r) == REDIS_STATE_DISCONNECTED) {
mutex_unlock(&r->lock); mutex_unlock(&r->lock);
@ -2713,7 +2707,6 @@ void redis_update_onekey(struct call *c, struct redis *r) {
if (result) if (result)
free(result); free(result);
mutex_unlock(&r->lock);
rwlock_unlock_r(&c->master_lock); rwlock_unlock_r(&c->master_lock);
return; return;
@ -2723,7 +2716,6 @@ err:
redisFree(r->ctx); redisFree(r->ctx);
r->ctx = NULL; r->ctx = NULL;
mutex_unlock(&r->lock);
rwlock_unlock_r(&c->master_lock); rwlock_unlock_r(&c->master_lock);
} }
@ -2736,15 +2728,14 @@ void redis_delete(struct call *c, struct redis *r) {
return; return;
if (delete_async) { if (delete_async) {
mutex_lock(&r->async_lock);
LOCK(&r->async_lock);
rwlock_lock_r(&c->master_lock); rwlock_lock_r(&c->master_lock);
redis_delete_async_call_json(c, r); redis_delete_async_call_json(c, r);
rwlock_unlock_r(&c->master_lock); rwlock_unlock_r(&c->master_lock);
mutex_unlock(&r->async_lock);
return; return;
} }
mutex_lock(&r->lock);
LOCK(&r->lock);
// coverity[sleep : FALSE] // coverity[sleep : FALSE]
if (redis_check_conn(r) == REDIS_STATE_DISCONNECTED) { if (redis_check_conn(r) == REDIS_STATE_DISCONNECTED) {
mutex_unlock(&r->lock); mutex_unlock(&r->lock);
@ -2758,7 +2749,6 @@ void redis_delete(struct call *c, struct redis *r) {
redis_delete_call_json(c, r); redis_delete_call_json(c, r);
rwlock_unlock_r(&c->master_lock); rwlock_unlock_r(&c->master_lock);
mutex_unlock(&r->lock);
return; return;
err: err:
@ -2768,7 +2758,6 @@ err:
r->ctx = NULL; r->ctx = NULL;
rwlock_unlock_r(&c->master_lock); rwlock_unlock_r(&c->master_lock);
mutex_unlock(&r->lock);
} }
@ -2779,12 +2768,11 @@ void redis_wipe(struct redis *r) {
if (!r) if (!r)
return; return;
mutex_lock(&r->lock);
LOCK(&r->lock);
// coverity[sleep : FALSE] // coverity[sleep : FALSE]
if (redis_check_conn(r) == REDIS_STATE_DISCONNECTED) { if (redis_check_conn(r) == REDIS_STATE_DISCONNECTED) {
mutex_unlock(&r->lock); mutex_unlock(&r->lock);
return ; return ;
} }
redisCommandNR(r->ctx, "DEL calls"); redisCommandNR(r->ctx, "DEL calls");
mutex_unlock(&r->lock);
} }

Loading…
Cancel
Save