diff options
| -rw-r--r-- | glusterfsd/src/glusterfsd-mgmt.c | 5 | ||||
| -rw-r--r-- | rpc/rpc-lib/src/rpc-clnt.c | 9 | ||||
| -rw-r--r-- | rpc/rpc-lib/src/rpc-clnt.h | 3 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handler.c | 22 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-rebalance.c | 16 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 16 | 
6 files changed, 58 insertions, 13 deletions
diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c index 2b7b4aa516f..17b41a22db4 100644 --- a/glusterfsd/src/glusterfsd-mgmt.c +++ b/glusterfsd/src/glusterfsd-mgmt.c @@ -145,11 +145,10 @@ glusterfs_submit_reply (rpcsvc_request_t *req, void *arg,          iob = glusterfs_serialize_reply (req, arg, &rsp, xdrproc);          if (!iob) {                  gf_log_callingfn (THIS->name, GF_LOG_ERROR, "Failed to serialize reply"); -                goto out; +        } else { +                iobref_add (iobref, iob);          } -        iobref_add (iobref, iob); -          ret = rpcsvc_submit_generic (req, &rsp, 1, payload, payloadcount,                                       iobref); diff --git a/rpc/rpc-lib/src/rpc-clnt.c b/rpc/rpc-lib/src/rpc-clnt.c index 9fba3fe412a..f68c5723071 100644 --- a/rpc/rpc-lib/src/rpc-clnt.c +++ b/rpc/rpc-lib/src/rpc-clnt.c @@ -1679,7 +1679,8 @@ rpc_clnt_reconfig (struct rpc_clnt *rpc, struct rpc_clnt_config *config)  }  int -rpc_clnt_transport_unix_options_build (dict_t **options, char *filepath) +rpc_clnt_transport_unix_options_build (dict_t **options, char *filepath, +                                       int frame_timeout)  {          dict_t                  *dict = NULL;          char                    *fpath = NULL; @@ -1718,6 +1719,12 @@ rpc_clnt_transport_unix_options_build (dict_t **options, char *filepath)          if (ret)                  goto out; +        if (frame_timeout > 0) { +                ret = dict_set_int32 (dict, "frame-timeout", frame_timeout); +                if (ret) +                        goto out; +        } +          *options = dict;  out:          if (ret) { diff --git a/rpc/rpc-lib/src/rpc-clnt.h b/rpc/rpc-lib/src/rpc-clnt.h index f07ad8d3687..0da1655590a 100644 --- a/rpc/rpc-lib/src/rpc-clnt.h +++ b/rpc/rpc-lib/src/rpc-clnt.h @@ -238,7 +238,8 @@ int rpcclnt_cbk_program_register (struct rpc_clnt *svc,                                    rpcclnt_cb_program_t *program, void *mydata);  int -rpc_clnt_transport_unix_options_build (dict_t **options, char *filepath); +rpc_clnt_transport_unix_options_build (dict_t **options, char *filepath, +                                       int frame_timeout);  void  rpc_clnt_disable (struct rpc_clnt *rpc); diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index 8d24b08ab9c..74a5bb57647 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -2097,8 +2097,8 @@ glusterd_transport_keepalive_options_get (int *interval, int *time)  }  int -glusterd_transport_inet_keepalive_options_build (dict_t **options, -                                                 const char *hostname, int port) +glusterd_transport_inet_options_build (dict_t **options, const char *hostname, +                                       int port)  {          dict_t  *dict = NULL;          int32_t interval = -1; @@ -2110,10 +2110,25 @@ glusterd_transport_inet_keepalive_options_build (dict_t **options,          if (!port)                  port = GLUSTERD_DEFAULT_PORT; + +        /* Build default transport options */          ret = rpc_transport_inet_options_build (&dict, hostname, port);          if (ret)                  goto out; +        /* Set frame-timeout to 10mins. Default timeout of 30 mins is too long +         * when compared to 2 mins for cli timeout. This ensures users don't +         * wait too long after cli timesout before being able to resume normal +         * operations +         */ +        ret = dict_set_int32 (dict, "frame-timeout", 600); +        if (ret) { +                gf_log ("glusterd", GF_LOG_ERROR, +                        "Failed to set frame-timeout"); +                goto out; +        } + +        /* Set keepalive options */          glusterd_transport_keepalive_options_get (&interval, &time);          if ((interval > 0) || (time > 0)) @@ -2159,8 +2174,7 @@ glusterd_friend_add (const char *hoststr, int port,          peerctx->peerinfo = *friend; -        ret = glusterd_transport_inet_keepalive_options_build (&options, -                                                         hoststr, port); +        ret = glusterd_transport_inet_options_build (&options, hoststr, port);          if (ret)                  goto out; diff --git a/xlators/mgmt/glusterd/src/glusterd-rebalance.c b/xlators/mgmt/glusterd/src/glusterd-rebalance.c index c9397b394ac..73d6f602cb8 100644 --- a/xlators/mgmt/glusterd/src/glusterd-rebalance.c +++ b/xlators/mgmt/glusterd/src/glusterd-rebalance.c @@ -313,7 +313,13 @@ glusterd_handle_defrag_start (glusterd_volinfo_t *volinfo, char *op_errstr,          }          sleep (5); -        ret = rpc_clnt_transport_unix_options_build (&options, sockfile); + +        /* Setting frame-timeout to 10mins (600seconds). +         * Unix domain sockets ensures that the connection is reliable. The +         * default timeout of 30mins used for unreliable network connections is +         * too long for unix domain socket connections. +         */ +        ret = rpc_clnt_transport_unix_options_build (&options, sockfile, 600);          if (ret) {                  gf_log (THIS->name, GF_LOG_ERROR, "Unix options build failed");                  goto out; @@ -357,7 +363,13 @@ glusterd_rebalance_rpc_create (glusterd_volinfo_t *volinfo,          LOCK_INIT (&defrag->lock);          GLUSTERD_GET_DEFRAG_SOCK_FILE (sockfile, volinfo, priv); -        ret = rpc_clnt_transport_unix_options_build (&options, sockfile); + +        /* Setting frame-timeout to 10mins (600seconds). +         * Unix domain sockets ensures that the connection is reliable. The +         * default timeout of 30mins used for unreliable network connections is +         * too long for unix domain socket connections. +         */ +        ret = rpc_clnt_transport_unix_options_build (&options, sockfile, 600);          if (ret) {                  gf_log (THIS->name, GF_LOG_ERROR, "Unix options build failed");                  goto out; diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 0267129b010..e10de75c63c 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -1121,7 +1121,14 @@ glusterd_brick_connect (glusterd_volinfo_t  *volinfo,                  glusterd_set_brick_socket_filepath (volinfo, brickinfo,                                                      socketpath,                                                      sizeof (socketpath)); -                ret = rpc_clnt_transport_unix_options_build (&options, socketpath); + +                /* Setting frame-timeout to 10mins (600seconds). +                 * Unix domain sockets ensures that the connection is reliable. +                 * The default timeout of 30mins used for unreliable network +                 * connections is too long for unix domain socket connections. +                 */ +                ret = rpc_clnt_transport_unix_options_build (&options, +                                                             socketpath, 600);                  if (ret)                          goto out;                  ret = glusterd_rpc_create (&rpc, options, @@ -2812,8 +2819,13 @@ glusterd_nodesvc_connect (char *server, char *socketpath) {          rpc = glusterd_nodesvc_get_rpc (server);          if (rpc == NULL) { +                /* Setting frame-timeout to 10mins (600seconds). +                 * Unix domain sockets ensures that the connection is reliable. +                 * The default timeout of 30mins used for unreliable network +                 * connections is too long for unix domain socket connections. +                 */                  ret = rpc_clnt_transport_unix_options_build (&options, -                                                             socketpath); +                                                             socketpath, 600);                  if (ret)                          goto out;                  ret = glusterd_rpc_create (&rpc, options,  | 
