Blob Blame History Raw
From 736aa5caa33ff82fa5e36a367b982ee3ce673608 Mon Sep 17 00:00:00 2001
From: Gaurav Kumar Garg <garg.gaurav52@gmail.com>
Date: Tue, 11 Aug 2015 18:17:31 +0530
Subject: [PATCH 05/26] glusterd: probing a new node, which is part of another cluster should give error

This patch is backport of: http://review.gluster.org/11884

If user try to add node to extant cluster using "gluster peer probe \
<ip/hostname>" command then command is failing but its not giving
proper cause of failure.

This fix will take control of proper error message during peer probe
with already extant cluster.

Change-Id: I4f993e78c0e1b3e061153b984ec5e9b70085aef5
BUG: 1319688

  >> Change-Id: I4f993e78c0e1b3e061153b984ec5e9b70085aef5
  >> BUG: 1252448
  >> Signed-off-by: Gaurav Kumar Garg <ggarg@redhat.com>
  >> Reviewed-on: http://review.gluster.org/11884
  >> Tested-by: NetBSD Build System <jenkins@build.gluster.org>
  >> Reviewed-by: Atin Mukherjee <amukherj@redhat.com>

Signed-off-by: Gaurav Kumar Garg <ggarg@redhat.com>
Change-Id: Ia29907b9485dcdbaf82f0d379c4ac40de26a4713
Reviewed-on: https://code.engineering.redhat.com/gerrit/70328
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
Tested-by: Atin Mukherjee <amukherj@redhat.com>
---
 xlators/mgmt/glusterd/src/glusterd-handler.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c
index 9dce8ff..085561b 100644
--- a/xlators/mgmt/glusterd/src/glusterd-handler.c
+++ b/xlators/mgmt/glusterd/src/glusterd-handler.c
@@ -5057,7 +5057,7 @@ glusterd_brick_rpc_notify (struct rpc_clnt *rpc, void *mydata,
 }
 
 int
-glusterd_friend_remove_notify (glusterd_peerctx_t *peerctx)
+glusterd_friend_remove_notify (glusterd_peerctx_t *peerctx, int32_t op_errno)
 {
         int                             ret = -1;
         glusterd_friend_sm_event_t      *new_event = NULL;
@@ -5093,7 +5093,7 @@ glusterd_friend_remove_notify (glusterd_peerctx_t *peerctx)
                         goto out;
                 }
 
-                glusterd_xfer_cli_probe_resp (req, -1, ENOTCONN, errstr,
+                glusterd_xfer_cli_probe_resp (req, -1, op_errno, errstr,
                                               peerinfo->hostname,
                                               peerinfo->port, dict);
 
@@ -5120,6 +5120,7 @@ __glusterd_peer_rpc_notify (struct rpc_clnt *rpc, void *mydata,
         xlator_t             *this        = NULL;
         glusterd_conf_t      *conf        = NULL;
         int                   ret         = 0;
+        int32_t               op_errno    = ENOTCONN;
         glusterd_peerinfo_t  *peerinfo    = NULL;
         glusterd_peerctx_t   *peerctx     = NULL;
         gf_boolean_t         quorum_action = _gf_false;
@@ -5212,6 +5213,7 @@ __glusterd_peer_rpc_notify (struct rpc_clnt *rpc, void *mydata,
                                 }
                         }
 
+                        op_errno = GF_PROBE_ANOTHER_CLUSTER;
                         ret = 0;
                 }
 
@@ -5226,7 +5228,7 @@ __glusterd_peer_rpc_notify (struct rpc_clnt *rpc, void *mydata,
                 *  fails, and notify cli. Happens only during probe.
                 */
                 if (peerinfo->state.state == GD_FRIEND_STATE_DEFAULT) {
-                        glusterd_friend_remove_notify (peerctx);
+                        glusterd_friend_remove_notify (peerctx, op_errno);
                         goto out;
                 }
 
-- 
1.7.1