diff options
| author | Mohammed Rafi KC <rkavunga@redhat.com> | 2019-06-18 22:15:37 +0530 | 
|---|---|---|
| committer | Atin Mukherjee <amukherj@redhat.com> | 2019-06-24 12:18:37 +0000 | 
| commit | d1d9c2587f5a985073039db5d15fe9adb0433547 (patch) | |
| tree | 56edb47956635d708b9cc33597a9f9206f7dd496 | |
| parent | aeb4545f35ef2740db36387cb855dcaa6bafb03d (diff) | |
glusterd/shd: Change shd logfile to a unique name
With the shd mux changes, shd was havinga a logfile
with volname of the first started volume.
This was creating a lot confusion, as other volumes data
is also logging to a logfile which has a different vol name.
With this changes the logfile will be changed to a unique name
ie "/var/log/glusterfs/glustershd.log". This was the same
logfile name before the shd mux
Change-Id: I2b94c1f0b2cf3c9493505dddf873687755a46dda
fixes: bz#1721601
Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.c | 12 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.h | 6 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-shd-svc.c | 12 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-svc-helper.c | 34 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-svc-mgmt.c | 4 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-svc-mgmt.h | 4 | 
6 files changed, 39 insertions, 33 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.c b/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.c index 91967584f35..57ceda93eb7 100644 --- a/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.c +++ b/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.c @@ -75,18 +75,6 @@ glusterd_svc_build_shd_volfile_path(glusterd_volinfo_t *volinfo, char *path,  }  void -glusterd_svc_build_shd_logdir(char *logdir, char *volname, size_t len) -{ -    snprintf(logdir, len, "%s/shd/%s", DEFAULT_LOG_FILE_DIRECTORY, volname); -} - -void -glusterd_svc_build_shd_logfile(char *logfile, char *logdir, size_t len) -{ -    snprintf(logfile, len, "%s/shd.log", logdir); -} - -void  glusterd_shd_svcproc_cleanup(glusterd_shdsvc_t *shd)  {      glusterd_svc_proc_t *svc_proc = NULL; diff --git a/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.h b/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.h index c70702c21f0..59466ec9e3b 100644 --- a/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.h +++ b/xlators/mgmt/glusterd/src/glusterd-shd-svc-helper.h @@ -27,12 +27,6 @@ glusterd_svc_build_shd_volfile_path(glusterd_volinfo_t *volinfo, char *path,                                      int path_len);  void -glusterd_svc_build_shd_logdir(char *logdir, char *volname, size_t len); - -void -glusterd_svc_build_shd_logfile(char *logfile, char *logdir, size_t len); - -void  glusterd_shd_svcproc_cleanup(glusterd_shdsvc_t *shd);  int diff --git a/xlators/mgmt/glusterd/src/glusterd-shd-svc.c b/xlators/mgmt/glusterd/src/glusterd-shd-svc.c index f6999e3ec4c..dbdf356bcb3 100644 --- a/xlators/mgmt/glusterd/src/glusterd-shd-svc.c +++ b/xlators/mgmt/glusterd/src/glusterd-shd-svc.c @@ -90,8 +90,8 @@ glusterd_shdsvc_init(void *data, glusterd_conn_t *mux_conn,      GLUSTERD_GET_SHD_RUNDIR(rundir, volinfo, priv);      glusterd_svc_create_rundir(rundir); -    glusterd_svc_build_shd_logdir(logdir, volinfo->volname, sizeof(logdir)); -    glusterd_svc_build_shd_logfile(logfile, logdir, sizeof(logfile)); +    glusterd_svc_build_logfile_path(shd_svc_name, DEFAULT_LOG_FILE_DIRECTORY, +                                    logfile, sizeof(logfile));      /* Initialize the connection mgmt */      if (mux_conn && mux_svc->rpc) { @@ -104,7 +104,7 @@ glusterd_shdsvc_init(void *data, glusterd_conn_t *mux_conn,          if (ret < 0)              goto out;      } else { -        ret = mkdir_p(logdir, 0755, _gf_true); +        ret = mkdir_p(DEFAULT_LOG_FILE_DIRECTORY, 0755, _gf_true);          if ((ret == -1) && (EEXIST != errno)) {              gf_msg(this->name, GF_LOG_ERROR, errno, GD_MSG_CREATE_DIR_FAILED,                     "Unable to create logdir %s", logdir); @@ -460,6 +460,7 @@ glusterd_shdsvc_start(glusterd_svc_t *svc, int flags)          return -1;      glusterd_volinfo_ref(volinfo); +      if (!svc->inited) {          ret = glusterd_shd_svc_mux_init(volinfo, svc);          if (ret) @@ -472,10 +473,9 @@ glusterd_shdsvc_start(glusterd_svc_t *svc, int flags)          ret = glusterd_attach_svc(svc, volinfo, flags);          if (ret) {              gf_msg("glusterd", GF_LOG_ERROR, 0, GD_MSG_VOLINFO_GET_FAIL, -                   "Failed to attach shd svc(volume=%s) to pid=%d. Starting" -                   "a new process", +                   "Failed to attach shd svc(volume=%s) to pid=%d",                     volinfo->volname, glusterd_proc_get_pid(&svc->proc)); -            ret = glusterd_recover_shd_attach_failure(volinfo, svc, flags); +            glusterd_shd_svcproc_cleanup(&volinfo->shd);              glusterd_volinfo_unref(volinfo);          }          goto out; diff --git a/xlators/mgmt/glusterd/src/glusterd-svc-helper.c b/xlators/mgmt/glusterd/src/glusterd-svc-helper.c index 55f4a489702..70cc539b510 100644 --- a/xlators/mgmt/glusterd/src/glusterd-svc-helper.c +++ b/xlators/mgmt/glusterd/src/glusterd-svc-helper.c @@ -467,6 +467,9 @@ glusterd_shd_svc_mux_init(glusterd_volinfo_t *volinfo, glusterd_svc_t *svc)      glusterd_conf_t *conf = NULL;      glusterd_svc_t *parent_svc = NULL;      int pid = -1; +    char pidfile[PATH_MAX] = { +        0, +    };      GF_VALIDATE_OR_GOTO("glusterd", svc, out);      GF_VALIDATE_OR_GOTO("glusterd", volinfo, out); @@ -476,8 +479,26 @@ glusterd_shd_svc_mux_init(glusterd_volinfo_t *volinfo, glusterd_svc_t *svc)      pthread_mutex_lock(&conf->attach_lock);      { +        if (svc->inited && !glusterd_proc_is_running(&(svc->proc))) { +            /* This is the case when shd process was abnormally killed */ +            pthread_mutex_unlock(&conf->attach_lock); +            glusterd_shd_svcproc_cleanup(&volinfo->shd); +            pthread_mutex_lock(&conf->attach_lock); +        } +          if (!svc->inited) { -            if (gf_is_service_running(svc->proc.pidfile, &pid)) { +            glusterd_svc_build_shd_pidfile(volinfo, pidfile, sizeof(pidfile)); +            ret = snprintf(svc->proc.name, sizeof(svc->proc.name), "%s", +                           "glustershd"); +            if (ret < 0) +                goto unlock; + +            ret = snprintf(svc->proc.pidfile, sizeof(svc->proc.pidfile), "%s", +                           pidfile); +            if (ret < 0) +                goto unlock; + +            if (gf_is_service_running(pidfile, &pid)) {                  /* Just connect is required, but we don't know what happens                   * during the disconnect. So better to reattach.                   */ @@ -485,10 +506,10 @@ glusterd_shd_svc_mux_init(glusterd_volinfo_t *volinfo, glusterd_svc_t *svc)              }              if (!mux_proc) { -                if (pid != -1 && sys_access(svc->proc.pidfile, R_OK) == 0) { +                if (pid != -1 && sys_access(pidfile, R_OK) == 0) {                      /* stale pid file, stop and unlink it */                      glusterd_proc_stop(&svc->proc, SIGTERM, PROC_STOP_FORCE); -                    glusterd_unlink_file(svc->proc.pidfile); +                    glusterd_unlink_file(pidfile);                  }                  mux_proc = __gf_find_compatible_svc(GD_NODE_SHD);              } @@ -682,11 +703,10 @@ glusterd_svc_attach_cbk(struct rpc_req *req, struct iovec *iov, int count,                 volinfo->volname, glusterd_proc_get_pid(&svc->proc));      } else {          gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_SVC_ATTACH_FAIL, -               "svc %s of volume %s failed to " -               "attach to pid %d. Starting a new process", -               svc->name, volinfo->volname, glusterd_proc_get_pid(&svc->proc)); +               "svc %s of volume %s failed to attach to pid %d", svc->name, +               volinfo->volname, glusterd_proc_get_pid(&svc->proc));          if (!strcmp(svc->name, "glustershd")) { -            glusterd_recover_shd_attach_failure(volinfo, svc, *flag); +            glusterd_shd_svcproc_cleanup(&volinfo->shd);          }      }  out: diff --git a/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.c b/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.c index 63c6b609bbd..b801f95a9d3 100644 --- a/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.c +++ b/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.c @@ -33,14 +33,14 @@ glusterd_svc_create_rundir(char *rundir)      return ret;  } -static void +void  glusterd_svc_build_logfile_path(char *server, char *logdir, char *logfile,                                  size_t len)  {      snprintf(logfile, len, "%s/%s.log", logdir, server);  } -static void +void  glusterd_svc_build_volfileid_path(char *server, char *volfileid, size_t len)  {      snprintf(volfileid, len, "gluster/%s", server); diff --git a/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.h b/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.h index fbc522549e0..5a5466a9b0f 100644 --- a/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.h +++ b/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.h @@ -74,6 +74,10 @@ glusterd_svc_build_volfile_path(char *server, char *workdir, char *volfile,                                  size_t len);  void +glusterd_svc_build_logfile_path(char *server, char *logdir, char *logfile, +                                size_t len); + +void  glusterd_svc_build_svcdir(char *server, char *workdir, char *path, size_t len);  void  | 
