Fix refcounting bug

pull/6897/head
Craig Tiller 9 years ago
parent 06a5dc4d5d
commit fc353d6249
  1. 2
      src/core/ext/client_config/client_channel.c
  2. 1
      src/core/ext/lb_policy/pick_first/pick_first.c
  3. 8
      src/core/lib/transport/connectivity_state.c

@ -147,7 +147,7 @@ static void on_lb_policy_state_changed_locked(grpc_exec_ctx *exec_ctx,
w->chand->lb_policy = NULL;
}
set_channel_connectivity_state_locked(exec_ctx, w->chand, publish_state,
error, "lb_changed");
GRPC_ERROR_REF(error), "lb_changed");
if (w->state != GRPC_CHANNEL_FATAL_FAILURE) {
watch_lb_policy(exec_ctx, w->chand, w->lb_policy, w->state);
}

@ -359,7 +359,6 @@ static void pf_connectivity_changed(grpc_exec_ctx *exec_ctx, void *arg,
GRPC_SUBCHANNEL_UNREF(exec_ctx, p->subchannels[p->num_subchannels],
"pick_first");
if (p->num_subchannels == 0) {
GRPC_ERROR_REF(error);
grpc_connectivity_state_set(
exec_ctx, &p->state_tracker, GRPC_CHANNEL_FATAL_FAILURE,
GRPC_ERROR_CREATE_REFERENCING("Pick first exhausted channels",

@ -152,9 +152,11 @@ void grpc_connectivity_state_set(grpc_exec_ctx *exec_ctx,
grpc_error *error, const char *reason) {
grpc_connectivity_state_watcher *w;
if (grpc_connectivity_state_trace) {
gpr_log(GPR_DEBUG, "SET: %p %s: %s --> %s [%s]", tracker, tracker->name,
grpc_connectivity_state_name(tracker->current_state),
grpc_connectivity_state_name(state), reason);
const char *error_string = grpc_error_string(error);
gpr_log(GPR_DEBUG, "SET: %p %s: %s --> %s [%s] error=%p %s", tracker,
tracker->name, grpc_connectivity_state_name(tracker->current_state),
grpc_connectivity_state_name(state), reason, error, error_string);
grpc_error_free_string(error_string);
}
switch (state) {
case GRPC_CHANNEL_CONNECTING:

Loading…
Cancel
Save