Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
503fd229
Commit
503fd229
authored
Dec 19, 2018
by
artix
Browse files
Cluster Manager: enable --cluster-replace also for 'fix' command.
parent
f07205e4
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/redis-cli.c
View file @
503fd229
...
@@ -3149,48 +3149,47 @@ static int clusterManagerMigrateKeysInSlot(clusterManagerNode *source,
...
@@ -3149,48 +3149,47 @@ static int clusterManagerMigrateKeysInSlot(clusterManagerNode *source,
* - In other cases (ie. reshard), proceed only if the user
* - In other cases (ie. reshard), proceed only if the user
* launched the command with the --cluster-replace option.*/
* launched the command with the --cluster-replace option.*/
if
(
is_busy
)
{
if
(
is_busy
)
{
clusterManagerLogWarn("\n*** Target key exists, "
clusterManagerLogWarn
(
"
\n
*** Target key exists
\n
"
);
"checking values...\n");
if
(
!
do_replace
)
{
list *diffs = listCreate();
clusterManagerLogWarn
(
"*** Checking key values on "
success = clusterManagerCompareKeysValues(source,
"both nodes...
\n
"
);
target, reply, diffs);
list
*
diffs
=
listCreate
();
if (!success && (do_fix || !do_replace)) {
success
=
clusterManagerCompareKeysValues
(
source
,
listRelease(diffs);
target
,
reply
,
diffs
);
clusterManagerLogErr("*** Value check failed!\n");
if
(
!
success
)
{
goto next;
clusterManagerLogErr
(
"*** Value check failed!
\n
"
);
}
listRelease
(
diffs
);
if (listLength(diffs) > 0 && (do_fix || !do_replace)) {
goto
next
;
success = 0;
clusterManagerLogErr(
"*** Found %d key(s) in both source node and "
"target node having different values.\n"
" Source node: %s:%d\n"
" Target node: %s:%d\n"
" Keys(s):\n",
listLength(diffs),
source->ip, source->port,
target->ip, target->port);
listIter dli;
listNode *dln;
listRewind(diffs, &dli);
while((dln = listNext(&dli)) != NULL) {
char *k = dln->value;
clusterManagerLogErr(" - %s\n", k);
}
}
clusterManagerLogErr("Please fix the above key(s) "
if
(
listLength
(
diffs
)
>
0
)
{
"manually ");
success
=
0
;
if (do_fix)
clusterManagerLogErr
(
clusterManagerLogErr("and try again!\n");
"*** Found %d key(s) in both source node and "
else {
"target node having different values.
\n
"
clusterManagerLogErr("or relaunch the command "
" Source node: %s:%d
\n
"
" Target node: %s:%d
\n
"
" Keys(s):
\n
"
,
listLength
(
diffs
),
source
->
ip
,
source
->
port
,
target
->
ip
,
target
->
port
);
listIter
dli
;
listNode
*
dln
;
listRewind
(
diffs
,
&
dli
);
while
((
dln
=
listNext
(
&
dli
))
!=
NULL
)
{
char
*
k
=
dln
->
value
;
clusterManagerLogErr
(
" - %s
\n
"
,
k
);
}
clusterManagerLogErr
(
"Please fix the above key(s) "
"manually and try again "
"or relaunch the command
\n
"
"with --cluster-replace "
"with --cluster-replace "
"option to force key "
"option to force key "
"overriding.
\n
"
);
"overriding.
\n
"
);
listRelease
(
diffs
);
goto
next
;
}
}
listRelease
(
diffs
);
listRelease
(
diffs
);
goto next;
}
}
listRelease(diffs);
clusterManagerLogWarn
(
"*** Replacing target keys...
\n
"
);
clusterManagerLogWarn
(
"*** Replacing target keys...
\n
"
);
}
}
freeReplyObject
(
migrate_reply
);
freeReplyObject
(
migrate_reply
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment