summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2017-09-21 12:35:04 +0200
committerantirez <antirez@gmail.com>2017-09-21 12:35:04 +0200
commit474adba9fa7a173d866300b1abd7cddd34cbac40 (patch)
tree8473dd55a7fe520865eaa11beb6f0907e8841a45
parentfa2c0582cfa614cd854b4a64ddce1493da9317bb (diff)
downloadredis-474adba9fa7a173d866300b1abd7cddd34cbac40.tar.gz
Clarify comment in change fixing #4323.
-rw-r--r--src/slowlog.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/slowlog.c b/src/slowlog.c
index a95147153..32ec4374c 100644
--- a/src/slowlog.c
+++ b/src/slowlog.c
@@ -75,8 +75,12 @@ slowlogEntry *slowlogCreateEntry(client *c, robj **argv, int argc, long long dur
} else if (argv[j]->refcount == OBJ_SHARED_REFCOUNT) {
se->argv[j] = argv[j];
} else {
- /* Duplicate a string object,
- * avoid memory leak for lazyfree. */
+ /* Here we need to dupliacate the string objects composing the
+ * argument vector of the command, because those may otherwise
+ * end shared with string objects stored into keys. Having
+ * shared objects between any part of Redis, and the data
+ * structure holding the data, is a problem: FLUSHALL ASYNC
+ * may release the shared string object and create a race. */
se->argv[j] = dupStringObject(argv[j]);
}
}