diff options
author | Yuchen Zeng <zyc@google.com> | 2017-10-05 23:00:06 -0700 |
---|---|---|
committer | Yuchen Zeng <zyc@google.com> | 2017-10-30 12:06:52 -0700 |
commit | b41014eeefa682c80d8bf48c720b23d00de29e03 (patch) | |
tree | f9729cb1cb238340365d21df0b3f1d3f132e9ea2 /src/core/ext | |
parent | 0bad30a244e060c602904bef3f3447558d9445fb (diff) |
Add GRPC_CLIENT_CHANNEL_BACKUP_POLL_INTERVAL_MS
Diffstat (limited to 'src/core/ext')
-rw-r--r-- | src/core/ext/filters/client_channel/backup_poller.cc | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/src/core/ext/filters/client_channel/backup_poller.cc b/src/core/ext/filters/client_channel/backup_poller.cc index 36b55ebf9a..784e75624b 100644 --- a/src/core/ext/filters/client_channel/backup_poller.cc +++ b/src/core/ext/filters/client_channel/backup_poller.cc @@ -31,7 +31,7 @@ #include "src/core/lib/surface/channel.h" #include "src/core/lib/surface/completion_queue.h" -#define DEFAULT_POLLING_INTERVAL_MS 500 +#define DEFAULT_POLL_INTERVAL_MS 500 typedef struct backup_poller { grpc_timer polling_timer; @@ -46,14 +46,18 @@ typedef struct backup_poller { static gpr_once g_once = GPR_ONCE_INIT; static gpr_mu g_poller_mu; static backup_poller* g_poller = NULL; +static int g_poll_interval_ms = DEFAULT_POLL_INTERVAL_MS; -static void init_g_poller_mu() { gpr_mu_init(&g_poller_mu); } - -static bool is_disabled() { - char* env = gpr_getenv("GRPC_DISABLE_CHANNEL_backup_poller"); - bool disabled = gpr_is_true(env); +static void init_g_poller_mu() { + gpr_mu_init(&g_poller_mu); + char* env = gpr_getenv("GRPC_CLIENT_CHANNEL_BACKUP_POLL_INTERVAL_MS"); + if (env != NULL) { + int poll_interval_ms = gpr_parse_nonnegative_int(env); + if (poll_interval_ms != -1) { + g_poll_interval_ms = poll_interval_ms; + } + } gpr_free(env); - return disabled; } static bool backup_poller_shutdown_unref(grpc_exec_ctx* exec_ctx, @@ -103,14 +107,15 @@ static void run_poller(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) { GRPC_LOG_IF_ERROR("Run client channel backup poller", err); grpc_timer_init( exec_ctx, &p->polling_timer, - gpr_time_add( - now, gpr_time_from_millis(DEFAULT_POLLING_INTERVAL_MS, GPR_TIMESPAN)), + gpr_time_add(now, gpr_time_from_millis(g_poll_interval_ms, GPR_TIMESPAN)), &p->run_poller_closure, now); } void grpc_client_channel_start_backup_polling( grpc_exec_ctx* exec_ctx, grpc_pollset_set* interested_parties) { - if (is_disabled()) return; + if (g_poll_interval_ms == 0) { + return; + } gpr_once_init(&g_once, init_g_poller_mu); gpr_mu_lock(&g_poller_mu); if (g_poller == NULL) { @@ -123,11 +128,10 @@ void grpc_client_channel_start_backup_polling( GRPC_CLOSURE_INIT(&g_poller->run_poller_closure, run_poller, g_poller, grpc_schedule_on_exec_ctx); gpr_timespec now = gpr_now(GPR_CLOCK_MONOTONIC); - grpc_timer_init( - exec_ctx, &g_poller->polling_timer, - gpr_time_add(now, gpr_time_from_millis(DEFAULT_POLLING_INTERVAL_MS, - GPR_TIMESPAN)), - &g_poller->run_poller_closure, now); + grpc_timer_init(exec_ctx, &g_poller->polling_timer, + gpr_time_add(now, gpr_time_from_millis(g_poll_interval_ms, + GPR_TIMESPAN)), + &g_poller->run_poller_closure, now); } gpr_ref(&g_poller->refs); gpr_mu_unlock(&g_poller_mu); @@ -137,7 +141,9 @@ void grpc_client_channel_start_backup_polling( void grpc_client_channel_stop_backup_polling( grpc_exec_ctx* exec_ctx, grpc_pollset_set* interested_parties) { - if (is_disabled()) return; + if (g_poll_interval_ms == 0) { + return; + } grpc_pollset_set_del_pollset(exec_ctx, interested_parties, g_poller->pollset); g_poller_unref(exec_ctx); } |