diff options
| author | Venkatesh Somyajulu <vsomyaju@redhat.com> | 2013-05-07 13:09:05 +0530 | 
|---|---|---|
| committer | Vijay Bellur <vbellur@redhat.com> | 2013-05-28 04:38:25 -0700 | 
| commit | 9e702dd4001ff7937c50aacfe0690e0c40699737 (patch) | |
| tree | a7577b5d0d484a5d4e0bc359ec552cb1e5fe2db8 | |
| parent | 84e966cc8b6ae06699f8a57bc33d509b30ff777b (diff) | |
protocol/client: Prevent excessive logging of client's "disconnect" messages.
Problem: Currently when gluster volume start force is executed, client process
         will talk to glusterd to get the port of the brick. But if brick's path
         is not available it cannot return brick's port. So client process will
         keep connecting and disconnecting from glusterd for port-query which
         is ultimately responsible for execssive logging of disconnect messages.
Fix:     Message will be logged just once at INFO level after the first
         disconnect from glusterd. Afterwards "disconnect" messages will be
         logged in DEBUG mode.
Change-Id: I2b787f3820b5da45e090c562e5698fcfe24a02cd
BUG: 959969
Signed-off-by: Venkatesh Somyajulu <vsomyaju@redhat.com>
Reviewed-on: http://review.gluster.org/4953
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
| -rw-r--r-- | xlators/protocol/client/src/client-handshake.c | 1 | ||||
| -rw-r--r-- | xlators/protocol/client/src/client.c | 16 | ||||
| -rw-r--r-- | xlators/protocol/client/src/client.h | 4 | 
3 files changed, 18 insertions, 3 deletions
diff --git a/xlators/protocol/client/src/client-handshake.c b/xlators/protocol/client/src/client-handshake.c index ff0e162c644..adf53f15ea8 100644 --- a/xlators/protocol/client/src/client-handshake.c +++ b/xlators/protocol/client/src/client-handshake.c @@ -1744,6 +1744,7 @@ client_query_portmap_cbk (struct rpc_req *req, struct iovec *iov, int count, voi          }          conf->portmap_err_logged = 0; +        conf->disconnect_err_logged = 0;          config.remote_port = rsp.port;          rpc_clnt_reconfig (conf->rpc, &config); diff --git a/xlators/protocol/client/src/client.c b/xlators/protocol/client/src/client.c index 3b5ecb0aa9e..e24282e285e 100644 --- a/xlators/protocol/client/src/client.c +++ b/xlators/protocol/client/src/client.c @@ -2092,9 +2092,19 @@ client_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event,                          client_register_grace_timer (this, conf);                  if (!conf->skip_notify) { -                        if (conf->connected) -                                gf_log (this->name, GF_LOG_INFO, -                                        "disconnected"); +                        if (conf->connected) { +                               gf_log (this->name, +                                        ((!conf->disconnect_err_logged) +                                        ? GF_LOG_INFO : GF_LOG_DEBUG), +                                        "disconnected from %s. Client process " +                                        "will keep trying to connect to " +                                        "glusterd until brick's port is " +                                        "available", +                                  conf->rpc->conn.trans->peerinfo.identifier); + +                                if (conf->portmap_err_logged) +                                        conf->disconnect_err_logged = 1; +                        }                          /* If the CHILD_DOWN event goes to parent xlator                             multiple times, the logic of parent xlator notify diff --git a/xlators/protocol/client/src/client.h b/xlators/protocol/client/src/client.h index 0a27c095c88..37ba264ce38 100644 --- a/xlators/protocol/client/src/client.h +++ b/xlators/protocol/client/src/client.h @@ -93,6 +93,10 @@ typedef struct clnt_conf {                                                     which was sent earlier */          char                   portmap_err_logged; /* flag used to prevent                                                        excessive logging */ +        char                   disconnect_err_logged; /* flag used to prevent +                                                         excessive disconnect +                                                         logging */ +          char                   need_different_port; /* flag used to change the                                                         portmap path in case of                                                         'tcp,rdma' on server */  | 
