diff options
author | Anoop C S <anoopcs@redhat.com> | 2015-08-15 10:38:00 +0530 |
---|---|---|
committer | Jeff Darcy <jdarcy@redhat.com> | 2015-09-03 08:18:33 -0700 |
commit | b5fff7326e9203c650eb5d395bc5a338075821f1 (patch) | |
tree | 2c281e71323b594a86ea665a1bcd4b13bf56a6b9 /xlators/protocol/server/src/server.c | |
parent | fe7b37960bbef791d9bed79760b61b1d40ca81cd (diff) |
protocol-client/server: Fix incorrect grace-timeout value in logs
When grace-timer is initialized via server/client init,
the default or reconfigured value for grace-timeout is
displayed incorrectly in both server and client logs.
This is because we use gf_time_fmt() to format this
grace-timeout value with gf_timefmt_s as the time format
as shown below:
gf_time_fmt (timestr, sizeof timestr, conf->grace_ts.tv_sec,
gf_timefmt_s);
gf_timefmt_s format is a wrapper for %s format specification
used in strftime library call which populates the number
of seconds since the Epoch [1970-01-01 00:00:00 +0000 (UTC)].
But this particular format is dependent on timezone
[1970-01-01 05:30:00 +0530 (IST)]and thus displayed incorrectly
in logs.
Example:
For IST with default grace-timeout value 10, it is displayed
as -19790 which is calculated as follows,
1970-01-01 00:00:10 - 1970-01-01 05:30:00 = -19790 seconds.
Change-Id: I1bdf5d12b2167323f86f0ca52a37ffb316b3f0a2
BUG: 1227667
Signed-off-by: Anoop C S <anoopcs@redhat.com>
Reviewed-on: http://review.gluster.org/11930
Tested-by: NetBSD Build System <jenkins@build.gluster.org>
Reviewed-by: Raghavendra Talur <rtalur@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Diffstat (limited to 'xlators/protocol/server/src/server.c')
-rw-r--r-- | xlators/protocol/server/src/server.c | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/xlators/protocol/server/src/server.c b/xlators/protocol/server/src/server.c index 93cf45d5904..a98b609da39 100644 --- a/xlators/protocol/server/src/server.c +++ b/xlators/protocol/server/src/server.c @@ -487,6 +487,7 @@ server_rpc_notify (rpcsvc_t *rpc, void *xl, rpcsvc_event_t event, server_conf_t *conf = NULL; client_t *client = NULL; server_ctx_t *serv_ctx = NULL; + struct timespec grace_ts = {0, }; if (!xl || !data) { gf_msg_callingfn ("server", GF_LOG_WARNING, 0, @@ -569,6 +570,9 @@ server_rpc_notify (rpcsvc_t *rpc, void *xl, rpcsvc_event_t event, goto out; } + grace_ts.tv_sec = conf->grace_timeout; + grace_ts.tv_nsec = 0; + LOCK (&serv_ctx->fdtable_lock); { if (!serv_ctx->grace_timer) { @@ -580,7 +584,7 @@ server_rpc_notify (rpcsvc_t *rpc, void *xl, rpcsvc_event_t event, serv_ctx->grace_timer = gf_timer_call_after (this->ctx, - conf->grace_ts, + grace_ts, grace_time_handler, client); } @@ -665,36 +669,22 @@ int server_init_grace_timer (xlator_t *this, dict_t *options, server_conf_t *conf) { - char timestr[64] = {0,}; int32_t ret = -1; - int32_t grace_timeout = -1; - char *lk_heal = NULL; GF_VALIDATE_OR_GOTO ("server", this, out); GF_VALIDATE_OR_GOTO (this->name, options, out); GF_VALIDATE_OR_GOTO (this->name, conf, out); - conf->lk_heal = _gf_false; - - ret = dict_get_str (options, "lk-heal", &lk_heal); - if (!ret) - gf_string2boolean (lk_heal, &conf->lk_heal); + GF_OPTION_RECONF ("lk-heal", conf->lk_heal, options, bool, out); gf_msg_debug (this->name, 0, "lk-heal = %s", (conf->lk_heal) ? "on" : "off"); - ret = dict_get_int32 (options, "grace-timeout", &grace_timeout); - if (!ret) - conf->grace_ts.tv_sec = grace_timeout; - else - conf->grace_ts.tv_sec = 10; - - gf_time_fmt (timestr, sizeof timestr, conf->grace_ts.tv_sec, - gf_timefmt_s); - gf_msg_debug (this->name, 0, "Server grace timeout value = %s", - timestr); + GF_OPTION_RECONF ("grace-timeout", conf->grace_timeout, + options, uint32, out); - conf->grace_ts.tv_nsec = 0; + gf_msg_debug (this->name, 0, "Server grace timeout value = %d", + conf->grace_timeout); ret = 0; out: @@ -1339,6 +1329,7 @@ struct volume_options options[] = { .type = GF_OPTION_TYPE_INT, .min = 10, .max = 1800, + .default_value = "10", }, {.key = {"tcp-window-size"}, .type = GF_OPTION_TYPE_SIZET, |