Commit e8b09d22 authored by Benjamin Sergeant's avatar Benjamin Sergeant Committed by antirez
Browse files

do not handle --cluster-yes for cluster fix mode

parent 57b4fb0d
...@@ -1797,11 +1797,14 @@ static void usage(void) { ...@@ -1797,11 +1797,14 @@ static void usage(void) {
exit(1); exit(1);
} }
static int confirmWithYes(char *msg) { static int confirmWithYes(char *msg, int force) {
if (config.cluster_manager_command.flags & CLUSTER_MANAGER_CMD_FLAG_YES) { /* if force is true and --cluster-yes option is on,
* do not prompt for an answer */
if (force &&
(config.cluster_manager_command.flags & CLUSTER_MANAGER_CMD_FLAG_YES)) {
return 1; return 1;
} }
printf("%s (type 'yes' to accept): ", msg); printf("%s (type 'yes' to accept): ", msg);
fflush(stdout); fflush(stdout);
char buf[4]; char buf[4];
...@@ -4476,12 +4479,16 @@ static int clusterManagerFixSlotsCoverage(char *all_slots) { ...@@ -4476,12 +4479,16 @@ static int clusterManagerFixSlotsCoverage(char *all_slots) {
} }
dictReleaseIterator(iter); dictReleaseIterator(iter);
/* we want explicit manual confirmation from users for all the fix cases */
int force = 0;
/* Handle case "1": keys in no node. */ /* Handle case "1": keys in no node. */
if (listLength(none) > 0) { if (listLength(none) > 0) {
printf("The following uncovered slots have no keys " printf("The following uncovered slots have no keys "
"across the cluster:\n"); "across the cluster:\n");
clusterManagerPrintSlotsList(none); clusterManagerPrintSlotsList(none);
if (confirmWithYes("Fix these slots by covering with a random node?")){ if (confirmWithYes("Fix these slots by covering with a random node?",
force)) {
listIter li; listIter li;
listNode *ln; listNode *ln;
listRewind(none, &li); listRewind(none, &li);
...@@ -4507,7 +4514,8 @@ static int clusterManagerFixSlotsCoverage(char *all_slots) { ...@@ -4507,7 +4514,8 @@ static int clusterManagerFixSlotsCoverage(char *all_slots) {
if (listLength(single) > 0) { if (listLength(single) > 0) {
printf("The following uncovered slots have keys in just one node:\n"); printf("The following uncovered slots have keys in just one node:\n");
clusterManagerPrintSlotsList(single); clusterManagerPrintSlotsList(single);
if (confirmWithYes("Fix these slots by covering with those nodes?")){ if (confirmWithYes("Fix these slots by covering with those nodes?",
force)) {
listIter li; listIter li;
listNode *ln; listNode *ln;
listRewind(single, &li); listRewind(single, &li);
...@@ -4539,7 +4547,7 @@ static int clusterManagerFixSlotsCoverage(char *all_slots) { ...@@ -4539,7 +4547,7 @@ static int clusterManagerFixSlotsCoverage(char *all_slots) {
printf("The following uncovered slots have keys in multiple nodes:\n"); printf("The following uncovered slots have keys in multiple nodes:\n");
clusterManagerPrintSlotsList(multi); clusterManagerPrintSlotsList(multi);
if (confirmWithYes("Fix these slots by moving keys " if (confirmWithYes("Fix these slots by moving keys "
"into a single node?")) { "into a single node?", force)) {
listIter li; listIter li;
listNode *ln; listNode *ln;
listRewind(multi, &li); listRewind(multi, &li);
...@@ -5502,7 +5510,8 @@ assign_replicas: ...@@ -5502,7 +5510,8 @@ assign_replicas:
} }
clusterManagerOptimizeAntiAffinity(ip_nodes, ip_count); clusterManagerOptimizeAntiAffinity(ip_nodes, ip_count);
clusterManagerShowNodes(); clusterManagerShowNodes();
if (confirmWithYes("Can I set the above configuration?")) { int force = 1;
if (confirmWithYes("Can I set the above configuration?", force)) {
listRewind(cluster_manager.nodes, &li); listRewind(cluster_manager.nodes, &li);
while ((ln = listNext(&li)) != NULL) { while ((ln = listNext(&li)) != NULL) {
clusterManagerNode *node = ln->value; clusterManagerNode *node = ln->value;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment