From 88832144f44d73ff797d0028ab54b2973c217b9f Mon Sep 17 00:00:00 2001 From: "Mark D. Roth" Date: Thu, 26 Apr 2018 13:02:14 -0700 Subject: Added trace logging. --- .../client_channel/lb_policy/subchannel_list.h | 36 ++++++++++++++++------ 1 file changed, 27 insertions(+), 9 deletions(-) (limited to 'src/core/ext') diff --git a/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h b/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h index 6d9c382c64..8746678041 100644 --- a/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +++ b/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h @@ -358,8 +358,7 @@ void SubchannelData:: template bool SubchannelData:: UpdateConnectedSubchannelLocked() { -// FIXME: add trace logging - // If the subchannel is READY, get a ref to the connected subchannel. + // If the subchannel is READY, take a ref to the connected subchannel. if (pending_connectivity_state_unsafe_ == GRPC_CHANNEL_READY) { connected_subchannel_ = grpc_subchannel_get_connected_subchannel(subchannel_); @@ -375,14 +374,20 @@ bool SubchannelData:: // is READY again (e.g., if the subchannel has transitioned back to // READY before the next watch gets requested). if (connected_subchannel_ == nullptr) { + if (subchannel_list_->tracer()->enabled()) { + gpr_log(GPR_INFO, + "[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR + " (subchannel %p): state is READY but connected subchannel is " + "null; moving to state IDLE", + subchannel_list_->tracer()->name(), + subchannel_list_->policy(), subchannel_list_, Index(), + subchannel_list_->num_subchannels(), subchannel_); + } pending_connectivity_state_unsafe_ = GRPC_CHANNEL_IDLE; return false; } - } -// FIXME: do this for any other state? - // If we get TRANSIENT_FAILURE, unref the connected subchannel. - else if (pending_connectivity_state_unsafe_ == - GRPC_CHANNEL_TRANSIENT_FAILURE) { + } else { + // For any state other than READY, unref the connected subchannel. connected_subchannel_.reset(); } return true; @@ -392,12 +397,25 @@ template void SubchannelData:: OnConnectivityChangedLocked(void* arg, grpc_error* error) { SubchannelData* sd = static_cast(arg); -// FIXME: add trace logging - if (sd->subchannel_list()->shutting_down() || error == GRPC_ERROR_CANCELLED) { + if (sd->subchannel_list_->tracer()->enabled()) { + gpr_log(GPR_INFO, + "[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR + " (subchannel %p): connectivity changed: state=%s, error=%s, " + "shutting_down=%d", + sd->subchannel_list_->tracer()->name(), + sd->subchannel_list_->policy(), sd->subchannel_list_, sd->Index(), + sd->subchannel_list_->num_subchannels(), sd->subchannel_, + grpc_connectivity_state_name( + sd->pending_connectivity_state_unsafe_), + grpc_error_string(error), sd->subchannel_list_->shutting_down()); + } + // If shutting down, unref subchannel and stop watching. + if (sd->subchannel_list_->shutting_down() || error == GRPC_ERROR_CANCELLED) { sd->UnrefSubchannelLocked("connectivity_shutdown"); sd->StopConnectivityWatchLocked(); return; } + // Get or release ref to connected subchannel. if (!sd->UpdateConnectedSubchannelLocked()) { // We don't want to report this connectivity state, so renew the watch. sd->StartOrRenewConnectivityWatchLocked(); -- cgit v1.2.3