88 lines
3.5 KiB
Diff
88 lines
3.5 KiB
Diff
From 9b19d4841fc3002d30ec3e44c85ec37682c11bfb Mon Sep 17 00:00:00 2001
|
|
From: schaffung <ssivakum@redhat.com>
|
|
Date: Thu, 22 Oct 2020 13:07:09 +0530
|
|
Subject: [PATCH 486/511] glusterd: brick sock file deleted, log error (#1560)
|
|
|
|
Issue: The satus of the brick as tracked by glusterd is
|
|
stopped if the socket file corresponding to a running
|
|
brick process is absent in /var/run/gluster. The glusterd
|
|
keeps on trying to reconnect ( rpc layer ) but it fails.
|
|
|
|
Code change: Rather than registering the rpc connection
|
|
with the help of the given sockfilepath which is not
|
|
even present as it keeps on reconnecting, why not log
|
|
this as an error and not try to reconnect using the
|
|
non-existing sock file path.
|
|
|
|
>Fixes: #1526
|
|
>Change-Id: I6c81691ab1624c66dec74f5ffcc6c383201ac757
|
|
>Signed-off-by: srijan-sivakumar <ssivakumar@redhat.com>
|
|
Upstream Patch : https://github.com/gluster/glusterfs/pull/1560
|
|
|
|
BUG: 1882923
|
|
Change-Id: I6c81691ab1624c66dec74f5ffcc6c383201ac757
|
|
Signed-off-by: Srijan Sivakumar <ssivakum@redhat.com>
|
|
Reviewed-on: https://code.engineering.redhat.com/gerrit/220376
|
|
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
|
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
|
---
|
|
xlators/mgmt/glusterd/src/glusterd-utils.c | 27 +++++++++++++++++++++++++--
|
|
1 file changed, 25 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
|
|
index d25fc8a..a72c494 100644
|
|
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
|
|
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
|
|
@@ -6310,7 +6310,7 @@ find_compatible_brick(glusterd_conf_t *conf, glusterd_volinfo_t *volinfo,
|
|
check if passed pid is match with running glusterfs process
|
|
*/
|
|
|
|
-int
|
|
+static int
|
|
glusterd_get_sock_from_brick_pid(int pid, char *sockpath, size_t len)
|
|
{
|
|
char fname[128] = "";
|
|
@@ -6383,7 +6383,17 @@ glusterd_get_sock_from_brick_pid(int pid, char *sockpath, size_t len)
|
|
|
|
if (tmpsockpath[0]) {
|
|
strncpy(sockpath, tmpsockpath, i);
|
|
- ret = 0;
|
|
+ /*
|
|
+ * Condition to check if the brick socket file is present
|
|
+ * in the stated path or not. This helps in preventing
|
|
+ * constant re-connect triggered in the RPC layer and also
|
|
+ * a log message would help out the user.
|
|
+ */
|
|
+ ret = sys_access(sockpath, F_OK);
|
|
+ if (ret) {
|
|
+ gf_smsg(this->name, GF_LOG_ERROR, 0, GD_MSG_FILE_NOT_FOUND,
|
|
+ "%s not found", sockpath, NULL);
|
|
+ }
|
|
}
|
|
|
|
return ret;
|
|
@@ -6581,7 +6591,20 @@ glusterd_brick_start(glusterd_volinfo_t *volinfo,
|
|
if (!is_brick_mx_enabled()) {
|
|
glusterd_set_brick_socket_filepath(
|
|
volinfo, brickinfo, socketpath, sizeof(socketpath));
|
|
+ /*
|
|
+ * Condition to check if the brick socket file is present
|
|
+ * in the stated path or not. This helps in preventing
|
|
+ * constant re-connect triggered in the RPC layer and also
|
|
+ * a log message would help out the user.
|
|
+ */
|
|
+ ret = sys_access(socketpath, F_OK);
|
|
+ if (ret) {
|
|
+ gf_smsg(this->name, GF_LOG_ERROR, 0, GD_MSG_FILE_NOT_FOUND,
|
|
+ "%s not found", socketpath, NULL);
|
|
+ goto out;
|
|
+ }
|
|
}
|
|
+
|
|
gf_log(this->name, GF_LOG_DEBUG,
|
|
"Using %s as sockfile for brick %s of volume %s ",
|
|
socketpath, brickinfo->path, volinfo->volname);
|
|
--
|
|
1.8.3.1
|
|
|