diff options
author | Mark D. Roth <roth@google.com> | 2018-04-26 13:02:14 -0700 |
---|---|---|
committer | Mark D. Roth <roth@google.com> | 2018-04-26 13:02:14 -0700 |
commit | 88832144f44d73ff797d0028ab54b2973c217b9f (patch) | |
tree | e2d22203def0c3d2b3a054927dfeb3061017bb6a | |
parent | 3e74a1866816779335fdad890a3c927a59df8dad (diff) |
Added trace logging.
-rw-r--r-- | src/core/ext/filters/client_channel/lb_policy/subchannel_list.h | 36 |
1 files changed, 27 insertions, 9 deletions
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<SubchannelListType, SubchannelDataType>:: template <typename SubchannelListType, typename SubchannelDataType> bool SubchannelData<SubchannelListType, SubchannelDataType>:: 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<SubchannelListType, SubchannelDataType>:: // 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 <typename SubchannelListType, typename SubchannelDataType> void SubchannelData<SubchannelListType, SubchannelDataType>:: OnConnectivityChangedLocked(void* arg, grpc_error* error) { SubchannelData* sd = static_cast<SubchannelData*>(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(); |