diff options
Diffstat (limited to 'rpc')
-rw-r--r-- | rpc/rpc-lib/src/rpc-clnt.c | 33 | ||||
-rw-r--r-- | rpc/rpc-lib/src/rpc-clnt.h | 1 |
2 files changed, 16 insertions, 18 deletions
diff --git a/rpc/rpc-lib/src/rpc-clnt.c b/rpc/rpc-lib/src/rpc-clnt.c index c1945dfb6ec..8ef05378351 100644 --- a/rpc/rpc-lib/src/rpc-clnt.c +++ b/rpc/rpc-lib/src/rpc-clnt.c @@ -392,16 +392,8 @@ rpc_clnt_reconnect(void *conn_ptr) conn->reconnect = 0; if ((conn->connected == 0) && !clnt->disabled) { - if (conn->reconnect_delay.tv_sec < 3) { - conn->reconnect_delay.tv_sec *= 2; - int64_t ns = conn->reconnect_delay.tv_nsec * 2; - if (ns >= 1000000000ULL) { - conn->reconnect_delay.tv_sec++; - ns -= 1000000000ULL; - } - conn->reconnect_delay.tv_nsec = ns; - } - ts = conn->reconnect_delay; + ts.tv_sec = 3; + ts.tv_nsec = 0; gf_log(conn->name, GF_LOG_TRACE, "attempting reconnect"); (void)rpc_transport_connect(trans, conn->config.remote_port); @@ -846,11 +838,9 @@ rpc_clnt_handle_disconnect(struct rpc_clnt *clnt, rpc_clnt_connection_t *conn) pthread_mutex_lock(&conn->lock); { - conn->reconnect_delay.tv_sec = 0; - conn->reconnect_delay.tv_nsec = 100000000; - if (!conn->rpc_clnt->disabled && (conn->reconnect == NULL)) { - ts = conn->reconnect_delay; + ts.tv_sec = 3; + ts.tv_nsec = 0; rpc_clnt_ref(clnt); conn->reconnect = gf_timer_call_after(clnt->ctx, ts, @@ -1170,8 +1160,6 @@ rpc_clnt_start(struct rpc_clnt *rpc) * rpc_clnt_reconnect fire event. */ rpc_clnt_ref(rpc); - conn->reconnect_delay.tv_sec = 0; - conn->reconnect_delay.tv_nsec = 50000000; rpc_clnt_reconnect(conn); return 0; @@ -1189,7 +1177,18 @@ rpc_clnt_cleanup_and_start(struct rpc_clnt *rpc) rpc_clnt_connection_cleanup(conn); - return rpc_clnt_start(rpc); + pthread_mutex_lock(&conn->lock); + { + rpc->disabled = 0; + } + pthread_mutex_unlock(&conn->lock); + /* Corresponding unref will be either on successful timer cancel or last + * rpc_clnt_reconnect fire event. + */ + rpc_clnt_ref(rpc); + rpc_clnt_reconnect(conn); + + return 0; } int diff --git a/rpc/rpc-lib/src/rpc-clnt.h b/rpc/rpc-lib/src/rpc-clnt.h index 2c252d5ff86..b46feed50c8 100644 --- a/rpc/rpc-lib/src/rpc-clnt.h +++ b/rpc/rpc-lib/src/rpc-clnt.h @@ -136,7 +136,6 @@ struct rpc_clnt_connection { struct saved_frames *saved_frames; struct timespec last_sent; struct timespec last_received; - struct timespec reconnect_delay; uint64_t pingcnt; uint64_t msgcnt; uint64_t cleanup_gen; |