From 080d4579db40d965f8392af5b1da7a99d1a817d5 Mon Sep 17 00:00:00 2001 From: Huang Zhw Date: Tue, 20 Apr 2021 15:59:44 +0800 Subject: [PATCH] Fix migrateCommand may migrate wrong value. (#8815) This scene is hard to happen. When first attempt some keys expired, only kv position is updated not ov. Then socket err happens, second attempt is taken. This time kv items may be mismatching with ov items. --- src/cluster.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cluster.c b/src/cluster.c index 0f0ab737e..ba21024be 100644 --- a/src/cluster.c +++ b/src/cluster.c @@ -5465,9 +5465,10 @@ try_again: if (ttl < 1) ttl = 1; } - /* Relocate valid (non expired) keys into the array in successive + /* Relocate valid (non expired) keys and values into the array in successive * positions to remove holes created by the keys that were present * in the first lookup but are now expired after the second lookup. */ + ov[non_expired] = ov[j]; kv[non_expired++] = kv[j]; serverAssertWithInfo(c,NULL,