diff options
author | Rajesh <rajesh@gluster.com> | 2011-07-19 15:57:30 +0530 |
---|---|---|
committer | Anand Avati <avati@gluster.com> | 2011-07-25 09:25:25 -0700 |
commit | 73eca3be5c5ccc71bbad934338c1ef58ed37c483 (patch) | |
tree | 39758ab32ba0781b17a64f2f8f10c1b5051c4197 | |
parent | d35e17152720a074c15f54f5c3b8a400e456b19e (diff) |
rpc-transport/socket: avoid logging socket read fails
An option, transport.socket.read-fail-log was added in glusterd.
This can also be added to any translator which uses socket.c.
A gf_boolean_t flag(read_fail_log) is added in socket_private_t.
Using this, logging of socket read failures can be controlled.
The options is set to 'off' in glusterd.vol by default.
Change-Id: I85cf4afc1f534f5f51018449d5d84baef18fce23
BUG: 3156
Reviewed-on: http://review.gluster.com/22
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@gluster.com>
-rw-r--r-- | doc/glusterd.vol | 1 | ||||
-rw-r--r-- | rpc/rpc-transport/socket/src/socket.c | 35 | ||||
-rw-r--r-- | rpc/rpc-transport/socket/src/socket.h | 1 |
3 files changed, 29 insertions, 8 deletions
diff --git a/doc/glusterd.vol b/doc/glusterd.vol index 4518e8d65..809042cbd 100644 --- a/doc/glusterd.vol +++ b/doc/glusterd.vol @@ -4,4 +4,5 @@ volume management option transport-type socket,rdma option transport.socket.keepalive-time 10 option transport.socket.keepalive-interval 2 + option transport.socket.read-fail-log off end-volume diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c index 674259e5f..9937dc4a6 100644 --- a/rpc/rpc-transport/socket/src/socket.c +++ b/rpc/rpc-transport/socket/src/socket.c @@ -43,7 +43,6 @@ #include <errno.h> #include <netinet/tcp.h> #include <rpc/xdr.h> - #define GF_LOG_ERRNO(errno) ((errno == ENOTCONN) ? GF_LOG_DEBUG : GF_LOG_ERROR) #define SA(ptr) ((struct sockaddr *)ptr) @@ -1486,12 +1485,14 @@ __socket_proto_state_machine (rpc_transport_t *this, &priv->incoming.pending_count, NULL); if (ret == -1) { - gf_log (this->name, - ((priv->connected == 1) ? - GF_LOG_WARNING : GF_LOG_DEBUG), - "reading from socket failed. Error (%s)" - ", peer (%s)", strerror (errno), - this->peerinfo.identifier); + if (priv->read_fail_log == 1) { + gf_log (this->name, + ((priv->connected == 1) ? + GF_LOG_WARNING : GF_LOG_DEBUG), + "reading from socket failed. Error (%s)" + ", peer (%s)", strerror (errno), + this->peerinfo.identifier); + } goto out; } @@ -2536,7 +2537,6 @@ socket_init (rpc_transport_t *this) priv->nodelay = 1; priv->bio = 0; priv->windowsize = GF_DEFAULT_SOCKET_WINDOW_SIZE; - INIT_LIST_HEAD (&priv->ioq); /* All the below section needs 'this->options' to be present */ @@ -2629,6 +2629,22 @@ socket_init (rpc_transport_t *this) priv->backlog = backlog; } + optstr = NULL; + + /* Check if socket read failures are to be logged */ + priv->read_fail_log = 1; + if (dict_get (this->options, "transport.socket.read-fail-log")) { + optstr = data_to_str (dict_get (this->options, "transport.socket.read-fail-log")); + if (gf_string2boolean (optstr, &tmp_bool) == -1) { + gf_log (this->name, GF_LOG_WARNING, + "'transport.socket.read-fail-log' takes only " + "boolean options; logging socket read fails"); + } + else if (tmp_bool == _gf_false) { + priv->read_fail_log = 0; + } + } + priv->windowsize = (int)windowsize; out: this->private = priv; @@ -2734,5 +2750,8 @@ struct volume_options options[] = { { .key = {"transport.socket.listen-backlog"}, .type = GF_OPTION_TYPE_INT }, + { .key = {"transport.socket.read-fail-log"}, + .type = GF_OPTION_TYPE_BOOL + }, { .key = {NULL} } }; diff --git a/rpc/rpc-transport/socket/src/socket.h b/rpc/rpc-transport/socket/src/socket.h index 4acecab2a..c52026cc8 100644 --- a/rpc/rpc-transport/socket/src/socket.h +++ b/rpc/rpc-transport/socket/src/socket.h @@ -193,6 +193,7 @@ typedef struct { int keepaliveidle; int keepaliveintvl; uint32_t backlog; + gf_boolean_t read_fail_log; } socket_private_t; |