|
|
@ -404,6 +404,8 @@ static void continue_connect_locked(grpc_subchannel* c) { |
|
|
|
c->next_attempt_deadline = c->backoff->NextAttemptTime(); |
|
|
|
c->next_attempt_deadline = c->backoff->NextAttemptTime(); |
|
|
|
args.deadline = std::max(c->next_attempt_deadline, min_deadline); |
|
|
|
args.deadline = std::max(c->next_attempt_deadline, min_deadline); |
|
|
|
args.channel_args = c->args; |
|
|
|
args.channel_args = c->args; |
|
|
|
|
|
|
|
grpc_connectivity_state_set(&c->state_tracker, GRPC_CHANNEL_CONNECTING, |
|
|
|
|
|
|
|
GRPC_ERROR_NONE, "connecting"); |
|
|
|
grpc_connector_connect(c->connector, &args, &c->connecting_result, |
|
|
|
grpc_connector_connect(c->connector, &args, &c->connecting_result, |
|
|
|
&c->on_connected); |
|
|
|
&c->on_connected); |
|
|
|
} |
|
|
|
} |
|
|
@ -478,8 +480,6 @@ static void maybe_start_connecting_locked(grpc_subchannel* c) { |
|
|
|
GRPC_SUBCHANNEL_WEAK_REF(c, "connecting"); |
|
|
|
GRPC_SUBCHANNEL_WEAK_REF(c, "connecting"); |
|
|
|
if (!c->backoff_begun) { |
|
|
|
if (!c->backoff_begun) { |
|
|
|
c->backoff_begun = true; |
|
|
|
c->backoff_begun = true; |
|
|
|
grpc_connectivity_state_set(&c->state_tracker, GRPC_CHANNEL_CONNECTING, |
|
|
|
|
|
|
|
GRPC_ERROR_NONE, "connecting"); |
|
|
|
|
|
|
|
continue_connect_locked(c); |
|
|
|
continue_connect_locked(c); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
GPR_ASSERT(!c->have_alarm); |
|
|
|
GPR_ASSERT(!c->have_alarm); |
|
|
@ -494,11 +494,6 @@ static void maybe_start_connecting_locked(grpc_subchannel* c) { |
|
|
|
} |
|
|
|
} |
|
|
|
GRPC_CLOSURE_INIT(&c->on_alarm, on_alarm, c, grpc_schedule_on_exec_ctx); |
|
|
|
GRPC_CLOSURE_INIT(&c->on_alarm, on_alarm, c, grpc_schedule_on_exec_ctx); |
|
|
|
grpc_timer_init(&c->alarm, c->next_attempt_deadline, &c->on_alarm); |
|
|
|
grpc_timer_init(&c->alarm, c->next_attempt_deadline, &c->on_alarm); |
|
|
|
// During backoff, we prefer the connectivity state of CONNECTING instead of
|
|
|
|
|
|
|
|
// TRANSIENT_FAILURE in order to prevent triggering re-resolution
|
|
|
|
|
|
|
|
// continuously in pick_first.
|
|
|
|
|
|
|
|
grpc_connectivity_state_set(&c->state_tracker, GRPC_CHANNEL_CONNECTING, |
|
|
|
|
|
|
|
GRPC_ERROR_NONE, "backoff"); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|