diff options
| -rw-r--r-- | cli/src/cli-rpc-ops.c | 11 | ||||
| -rw-r--r-- | rpc/rpc-lib/src/protocol-common.h | 1 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handler.c | 15 | 
3 files changed, 24 insertions, 3 deletions
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c index 492be4388e7..a40fd482947 100644 --- a/cli/src/cli-rpc-ops.c +++ b/cli/src/cli-rpc-ops.c @@ -129,8 +129,8 @@ gf_cli3_1_probe_cbk (struct rpc_req *req, struct iovec *iov,                                  break;                          default:                                  snprintf (msg, sizeof (msg), -                                          "Probe returned with unknown errno %d", -                                           rsp.op_errno); +                                          "Probe returned with unknown errno" +                                          " %d", rsp.op_errno);                                  break;                  }           } @@ -168,7 +168,12 @@ gf_cli3_1_probe_cbk (struct rpc_req *req, struct iovec *iov,                                                    "information on %s" ,                                                    rsp.hostname);                                          break; - +                                case GF_PROBE_SAME_UUID: +                                        snprintf (msg, sizeof (msg), +                                                  "Peer uuid (host: %s) is" +                                                  "same as local uuid", +                                                  rsp.hostname); +                                break;                                  default:                                          snprintf (msg, sizeof (msg),                                                    "Probe unsuccessful\nProbe " diff --git a/rpc/rpc-lib/src/protocol-common.h b/rpc/rpc-lib/src/protocol-common.h index dc93f07dc2d..c6b8659476c 100644 --- a/rpc/rpc-lib/src/protocol-common.h +++ b/rpc/rpc-lib/src/protocol-common.h @@ -94,6 +94,7 @@ enum gf_probe_resp {  	GF_PROBE_FRIEND,          GF_PROBE_ANOTHER_CLUSTER,          GF_PROBE_VOLUME_CONFLICT, +        GF_PROBE_SAME_UUID,          GF_PROBE_UNKNOWN_PEER,          GF_PROBE_ADD_FAILED  }; diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index 51b859857b2..63d53ef2a1e 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -1753,6 +1753,20 @@ glusterd_handle_probe_query (rpcsvc_request_t *req)          gf_log ("glusterd", GF_LOG_INFO,                  "Received probe from uuid: %s", uuid_utoa (probe_req.uuid)); +        /* Check for uuid collision and handle it in a user friendly way by +         * sending the error. +         */ +        if (!uuid_compare (probe_req.uuid, MY_UUID)) { +                gf_log (THIS->name, GF_LOG_ERROR, "Peer uuid %s is same as " +                        "local uuid. Please check the uuid of both the peers " +                        "from %s/%s", uuid_utoa (probe_req.uuid), +                        GLUSTERD_DEFAULT_WORKDIR, GLUSTERD_INFO_FILE); +                rsp.op_ret = -1; +                rsp.op_errno = GF_PROBE_SAME_UUID; +                rsp.port = port; +                goto respond; +        } +          ret = glusterd_remote_hostname_get (req, remote_hostname,                                              sizeof (remote_hostname));          if (ret) { @@ -1777,6 +1791,7 @@ glusterd_handle_probe_query (rpcsvc_request_t *req)                  }          } +respond:          uuid_copy (rsp.uuid, conf->uuid);          rsp.hostname = probe_req.hostname;  | 
