|
|
e3c68b |
From feeee9a35c1219b2077ea07b6fd80976960bd181 Mon Sep 17 00:00:00 2001
|
|
|
e3c68b |
From: Mohammed Rafi KC <rkavunga@redhat.com>
|
|
|
e3c68b |
Date: Thu, 11 Jul 2019 12:44:42 +0530
|
|
|
e3c68b |
Subject: [PATCH 234/255] Revert "glusterd/shd: Change shd logfile to a unique
|
|
|
e3c68b |
name"
|
|
|
e3c68b |
|
|
|
e3c68b |
This reverts commit 541e1400ecaec5fea0f56e8ca18f00c229906d8a.
|
|
|
e3c68b |
|
|
|
e3c68b |
BUG: 1471742
|
|
|
e3c68b |
Change-Id: I7e0371d77db6897981f7364c04d4b9b523b865ba
|
|
|
e3c68b |
Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
|
|
|
e3c68b |
Reviewed-on: https://code.engineering.redhat.com/gerrit/175943
|
|
|
e3c68b |
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
|
|
e3c68b |
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
|
|
e3c68b |
---
|
|
|
e3c68b |
.../mgmt/glusterd/src/glusterd-shd-svc-helper.c | 12 ++++++++
|
|
|
e3c68b |
.../mgmt/glusterd/src/glusterd-shd-svc-helper.h | 6 ++++
|
|
|
e3c68b |
xlators/mgmt/glusterd/src/glusterd-shd-svc.c | 14 ++++-----
|
|
|
e3c68b |
xlators/mgmt/glusterd/src/glusterd-svc-helper.c | 34 +++++-----------------
|
|
|
e3c68b |
xlators/mgmt/glusterd/src/glusterd-svc-mgmt.c | 4 +--
|
|
|
e3c68b |
xlators/mgmt/glusterd/src/glusterd-svc-mgmt.h | 4 ---
|
|
|
e3c68b |
6 files changed, 34 insertions(+), 40 deletions(-)
|
|
|
e3c68b |
|
|
|
e3c68b |
diff --git a/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.c b/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.c
|
|
|
e3c68b |
index 57ceda9..9196758 100644
|
|
|
e3c68b |
--- a/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.c
|
|
|
e3c68b |
+++ b/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.c
|
|
|
e3c68b |
@@ -75,6 +75,18 @@ glusterd_svc_build_shd_volfile_path(glusterd_volinfo_t *volinfo, char *path,
|
|
|
e3c68b |
}
|
|
|
e3c68b |
|
|
|
e3c68b |
void
|
|
|
e3c68b |
+glusterd_svc_build_shd_logdir(char *logdir, char *volname, size_t len)
|
|
|
e3c68b |
+{
|
|
|
e3c68b |
+ snprintf(logdir, len, "%s/shd/%s", DEFAULT_LOG_FILE_DIRECTORY, volname);
|
|
|
e3c68b |
+}
|
|
|
e3c68b |
+
|
|
|
e3c68b |
+void
|
|
|
e3c68b |
+glusterd_svc_build_shd_logfile(char *logfile, char *logdir, size_t len)
|
|
|
e3c68b |
+{
|
|
|
e3c68b |
+ snprintf(logfile, len, "%s/shd.log", logdir);
|
|
|
e3c68b |
+}
|
|
|
e3c68b |
+
|
|
|
e3c68b |
+void
|
|
|
e3c68b |
glusterd_shd_svcproc_cleanup(glusterd_shdsvc_t *shd)
|
|
|
e3c68b |
{
|
|
|
e3c68b |
glusterd_svc_proc_t *svc_proc = NULL;
|
|
|
e3c68b |
diff --git a/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.h b/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.h
|
|
|
e3c68b |
index 59466ec..c70702c 100644
|
|
|
e3c68b |
--- a/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.h
|
|
|
e3c68b |
+++ b/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.h
|
|
|
e3c68b |
@@ -27,6 +27,12 @@ glusterd_svc_build_shd_volfile_path(glusterd_volinfo_t *volinfo, char *path,
|
|
|
e3c68b |
int path_len);
|
|
|
e3c68b |
|
|
|
e3c68b |
void
|
|
|
e3c68b |
+glusterd_svc_build_shd_logdir(char *logdir, char *volname, size_t len);
|
|
|
e3c68b |
+
|
|
|
e3c68b |
+void
|
|
|
e3c68b |
+glusterd_svc_build_shd_logfile(char *logfile, char *logdir, size_t len);
|
|
|
e3c68b |
+
|
|
|
e3c68b |
+void
|
|
|
e3c68b |
glusterd_shd_svcproc_cleanup(glusterd_shdsvc_t *shd);
|
|
|
e3c68b |
|
|
|
e3c68b |
int
|
|
|
e3c68b |
diff --git a/xlators/mgmt/glusterd/src/glusterd-shd-svc.c b/xlators/mgmt/glusterd/src/glusterd-shd-svc.c
|
|
|
e3c68b |
index 8ad90a9..dbe2560 100644
|
|
|
e3c68b |
--- a/xlators/mgmt/glusterd/src/glusterd-shd-svc.c
|
|
|
e3c68b |
+++ b/xlators/mgmt/glusterd/src/glusterd-shd-svc.c
|
|
|
e3c68b |
@@ -90,8 +90,8 @@ glusterd_shdsvc_init(void *data, glusterd_conn_t *mux_conn,
|
|
|
e3c68b |
GLUSTERD_GET_SHD_RUNDIR(rundir, volinfo, priv);
|
|
|
e3c68b |
glusterd_svc_create_rundir(rundir);
|
|
|
e3c68b |
|
|
|
e3c68b |
- glusterd_svc_build_logfile_path(shd_svc_name, DEFAULT_LOG_FILE_DIRECTORY,
|
|
|
e3c68b |
- logfile, sizeof(logfile));
|
|
|
e3c68b |
+ glusterd_svc_build_shd_logdir(logdir, volinfo->volname, sizeof(logdir));
|
|
|
e3c68b |
+ glusterd_svc_build_shd_logfile(logfile, logdir, sizeof(logfile));
|
|
|
e3c68b |
|
|
|
e3c68b |
/* Initialize the connection mgmt */
|
|
|
e3c68b |
if (mux_conn && mux_svc->rpc) {
|
|
|
e3c68b |
@@ -104,7 +104,7 @@ glusterd_shdsvc_init(void *data, glusterd_conn_t *mux_conn,
|
|
|
e3c68b |
if (ret < 0)
|
|
|
e3c68b |
goto out;
|
|
|
e3c68b |
} else {
|
|
|
e3c68b |
- ret = mkdir_p(DEFAULT_LOG_FILE_DIRECTORY, 0755, _gf_true);
|
|
|
e3c68b |
+ ret = mkdir_p(logdir, 0755, _gf_true);
|
|
|
e3c68b |
if ((ret == -1) && (EEXIST != errno)) {
|
|
|
e3c68b |
gf_msg(this->name, GF_LOG_ERROR, errno, GD_MSG_CREATE_DIR_FAILED,
|
|
|
e3c68b |
"Unable to create logdir %s", logdir);
|
|
|
e3c68b |
@@ -460,7 +460,6 @@ glusterd_shdsvc_start(glusterd_svc_t *svc, int flags)
|
|
|
e3c68b |
return -1;
|
|
|
e3c68b |
|
|
|
e3c68b |
glusterd_volinfo_ref(volinfo);
|
|
|
e3c68b |
-
|
|
|
e3c68b |
if (!svc->inited) {
|
|
|
e3c68b |
ret = glusterd_shd_svc_mux_init(volinfo, svc);
|
|
|
e3c68b |
if (ret)
|
|
|
e3c68b |
@@ -472,11 +471,12 @@ glusterd_shdsvc_start(glusterd_svc_t *svc, int flags)
|
|
|
e3c68b |
/* Unref will happen from glusterd_svc_attach_cbk */
|
|
|
e3c68b |
ret = glusterd_attach_svc(svc, volinfo, flags);
|
|
|
e3c68b |
if (ret) {
|
|
|
e3c68b |
+ glusterd_volinfo_unref(volinfo);
|
|
|
e3c68b |
gf_msg("glusterd", GF_LOG_ERROR, 0, GD_MSG_VOLINFO_GET_FAIL,
|
|
|
e3c68b |
- "Failed to attach shd svc(volume=%s) to pid=%d",
|
|
|
e3c68b |
+ "Failed to attach shd svc(volume=%s) to pid=%d. Starting"
|
|
|
e3c68b |
+ "a new process",
|
|
|
e3c68b |
volinfo->volname, glusterd_proc_get_pid(&svc->proc));
|
|
|
e3c68b |
- glusterd_shd_svcproc_cleanup(&volinfo->shd);
|
|
|
e3c68b |
- glusterd_volinfo_unref(volinfo);
|
|
|
e3c68b |
+ ret = glusterd_recover_shd_attach_failure(volinfo, svc, flags);
|
|
|
e3c68b |
}
|
|
|
e3c68b |
goto out;
|
|
|
e3c68b |
}
|
|
|
e3c68b |
diff --git a/xlators/mgmt/glusterd/src/glusterd-svc-helper.c b/xlators/mgmt/glusterd/src/glusterd-svc-helper.c
|
|
|
e3c68b |
index 400826f..a6e662f 100644
|
|
|
e3c68b |
--- a/xlators/mgmt/glusterd/src/glusterd-svc-helper.c
|
|
|
e3c68b |
+++ b/xlators/mgmt/glusterd/src/glusterd-svc-helper.c
|
|
|
e3c68b |
@@ -469,9 +469,6 @@ glusterd_shd_svc_mux_init(glusterd_volinfo_t *volinfo, glusterd_svc_t *svc)
|
|
|
e3c68b |
glusterd_conf_t *conf = NULL;
|
|
|
e3c68b |
glusterd_svc_t *parent_svc = NULL;
|
|
|
e3c68b |
int pid = -1;
|
|
|
e3c68b |
- char pidfile[PATH_MAX] = {
|
|
|
e3c68b |
- 0,
|
|
|
e3c68b |
- };
|
|
|
e3c68b |
|
|
|
e3c68b |
GF_VALIDATE_OR_GOTO("glusterd", svc, out);
|
|
|
e3c68b |
GF_VALIDATE_OR_GOTO("glusterd", volinfo, out);
|
|
|
e3c68b |
@@ -481,26 +478,8 @@ glusterd_shd_svc_mux_init(glusterd_volinfo_t *volinfo, glusterd_svc_t *svc)
|
|
|
e3c68b |
|
|
|
e3c68b |
pthread_mutex_lock(&conf->attach_lock);
|
|
|
e3c68b |
{
|
|
|
e3c68b |
- if (svc->inited && !glusterd_proc_is_running(&(svc->proc))) {
|
|
|
e3c68b |
- /* This is the case when shd process was abnormally killed */
|
|
|
e3c68b |
- pthread_mutex_unlock(&conf->attach_lock);
|
|
|
e3c68b |
- glusterd_shd_svcproc_cleanup(&volinfo->shd);
|
|
|
e3c68b |
- pthread_mutex_lock(&conf->attach_lock);
|
|
|
e3c68b |
- }
|
|
|
e3c68b |
-
|
|
|
e3c68b |
if (!svc->inited) {
|
|
|
e3c68b |
- glusterd_svc_build_shd_pidfile(volinfo, pidfile, sizeof(pidfile));
|
|
|
e3c68b |
- ret = snprintf(svc->proc.name, sizeof(svc->proc.name), "%s",
|
|
|
e3c68b |
- "glustershd");
|
|
|
e3c68b |
- if (ret < 0)
|
|
|
e3c68b |
- goto unlock;
|
|
|
e3c68b |
-
|
|
|
e3c68b |
- ret = snprintf(svc->proc.pidfile, sizeof(svc->proc.pidfile), "%s",
|
|
|
e3c68b |
- pidfile);
|
|
|
e3c68b |
- if (ret < 0)
|
|
|
e3c68b |
- goto unlock;
|
|
|
e3c68b |
-
|
|
|
e3c68b |
- if (gf_is_service_running(pidfile, &pid)) {
|
|
|
e3c68b |
+ if (gf_is_service_running(svc->proc.pidfile, &pid)) {
|
|
|
e3c68b |
/* Just connect is required, but we don't know what happens
|
|
|
e3c68b |
* during the disconnect. So better to reattach.
|
|
|
e3c68b |
*/
|
|
|
e3c68b |
@@ -508,10 +487,10 @@ glusterd_shd_svc_mux_init(glusterd_volinfo_t *volinfo, glusterd_svc_t *svc)
|
|
|
e3c68b |
}
|
|
|
e3c68b |
|
|
|
e3c68b |
if (!mux_proc) {
|
|
|
e3c68b |
- if (pid != -1 && sys_access(pidfile, R_OK) == 0) {
|
|
|
e3c68b |
+ if (pid != -1 && sys_access(svc->proc.pidfile, R_OK) == 0) {
|
|
|
e3c68b |
/* stale pid file, stop and unlink it */
|
|
|
e3c68b |
glusterd_proc_stop(&svc->proc, SIGTERM, PROC_STOP_FORCE);
|
|
|
e3c68b |
- glusterd_unlink_file(pidfile);
|
|
|
e3c68b |
+ glusterd_unlink_file(svc->proc.pidfile);
|
|
|
e3c68b |
}
|
|
|
e3c68b |
mux_proc = __gf_find_compatible_svc(GD_NODE_SHD);
|
|
|
e3c68b |
}
|
|
|
e3c68b |
@@ -705,10 +684,11 @@ glusterd_svc_attach_cbk(struct rpc_req *req, struct iovec *iov, int count,
|
|
|
e3c68b |
volinfo->volname, glusterd_proc_get_pid(&svc->proc));
|
|
|
e3c68b |
} else {
|
|
|
e3c68b |
gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_SVC_ATTACH_FAIL,
|
|
|
e3c68b |
- "svc %s of volume %s failed to attach to pid %d", svc->name,
|
|
|
e3c68b |
- volinfo->volname, glusterd_proc_get_pid(&svc->proc));
|
|
|
e3c68b |
+ "svc %s of volume %s failed to "
|
|
|
e3c68b |
+ "attach to pid %d. Starting a new process",
|
|
|
e3c68b |
+ svc->name, volinfo->volname, glusterd_proc_get_pid(&svc->proc));
|
|
|
e3c68b |
if (!strcmp(svc->name, "glustershd")) {
|
|
|
e3c68b |
- glusterd_shd_svcproc_cleanup(&volinfo->shd);
|
|
|
e3c68b |
+ glusterd_recover_shd_attach_failure(volinfo, svc, *flag);
|
|
|
e3c68b |
}
|
|
|
e3c68b |
}
|
|
|
e3c68b |
out:
|
|
|
e3c68b |
diff --git a/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.c b/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.c
|
|
|
e3c68b |
index fa316a6..f32dafc 100644
|
|
|
e3c68b |
--- a/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.c
|
|
|
e3c68b |
+++ b/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.c
|
|
|
e3c68b |
@@ -33,14 +33,14 @@ glusterd_svc_create_rundir(char *rundir)
|
|
|
e3c68b |
return ret;
|
|
|
e3c68b |
}
|
|
|
e3c68b |
|
|
|
e3c68b |
-void
|
|
|
e3c68b |
+static void
|
|
|
e3c68b |
glusterd_svc_build_logfile_path(char *server, char *logdir, char *logfile,
|
|
|
e3c68b |
size_t len)
|
|
|
e3c68b |
{
|
|
|
e3c68b |
snprintf(logfile, len, "%s/%s.log", logdir, server);
|
|
|
e3c68b |
}
|
|
|
e3c68b |
|
|
|
e3c68b |
-void
|
|
|
e3c68b |
+static void
|
|
|
e3c68b |
glusterd_svc_build_volfileid_path(char *server, char *volfileid, size_t len)
|
|
|
e3c68b |
{
|
|
|
e3c68b |
snprintf(volfileid, len, "gluster/%s", server);
|
|
|
e3c68b |
diff --git a/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.h b/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.h
|
|
|
e3c68b |
index 5a5466a..fbc5225 100644
|
|
|
e3c68b |
--- a/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.h
|
|
|
e3c68b |
+++ b/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.h
|
|
|
e3c68b |
@@ -74,10 +74,6 @@ glusterd_svc_build_volfile_path(char *server, char *workdir, char *volfile,
|
|
|
e3c68b |
size_t len);
|
|
|
e3c68b |
|
|
|
e3c68b |
void
|
|
|
e3c68b |
-glusterd_svc_build_logfile_path(char *server, char *logdir, char *logfile,
|
|
|
e3c68b |
- size_t len);
|
|
|
e3c68b |
-
|
|
|
e3c68b |
-void
|
|
|
e3c68b |
glusterd_svc_build_svcdir(char *server, char *workdir, char *path, size_t len);
|
|
|
e3c68b |
|
|
|
e3c68b |
void
|
|
|
e3c68b |
--
|
|
|
e3c68b |
1.8.3.1
|
|
|
e3c68b |
|