Add some missing lock annotations in the client channel code. (#25977)

pull/26050/head
Mark D. Roth 4 years ago committed by GitHub
parent cc06e6b65d
commit 61b239848a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 21
      src/core/ext/filters/client_channel/client_channel.cc
  2. 12
      src/core/ext/filters/client_channel/client_channel.h

@ -200,10 +200,14 @@ class ClientChannel::CallData {
grpc_closure pick_closure_;
// Accessed while holding ClientChannel::resolution_mu_.
bool service_config_applied_ = false;
bool queued_pending_resolver_result_ = false;
ClientChannel::ResolverQueuedCall resolver_queued_call_;
ResolverQueuedCallCanceller* resolver_call_canceller_ = nullptr;
bool service_config_applied_ ABSL_GUARDED_BY(&ClientChannel::resolution_mu_) =
false;
bool queued_pending_resolver_result_
ABSL_GUARDED_BY(&ClientChannel::resolution_mu_) = false;
ClientChannel::ResolverQueuedCall resolver_queued_call_
ABSL_GUARDED_BY(&ClientChannel::resolution_mu_);
ResolverQueuedCallCanceller* resolver_call_canceller_
ABSL_GUARDED_BY(&ClientChannel::resolution_mu_) = nullptr;
std::function<void()> on_call_committed_;
@ -567,11 +571,13 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
}
// Caller must be holding the data-plane mutex.
ConnectedSubchannel* connected_subchannel_in_data_plane() const {
ConnectedSubchannel* connected_subchannel_in_data_plane() const
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
return connected_subchannel_in_data_plane_.get();
}
void set_connected_subchannel_in_data_plane(
RefCountedPtr<ConnectedSubchannel> connected_subchannel) {
RefCountedPtr<ConnectedSubchannel> connected_subchannel)
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
connected_subchannel_in_data_plane_ = std::move(connected_subchannel);
}
@ -727,7 +733,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
// To be accessed only in the control plane work_serializer.
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
// To be accessed only in the data plane mutex.
RefCountedPtr<ConnectedSubchannel> connected_subchannel_in_data_plane_;
RefCountedPtr<ConnectedSubchannel> connected_subchannel_in_data_plane_
ABSL_GUARDED_BY(&ClientChannel::data_plane_mu_);
};
//

@ -456,14 +456,18 @@ class ClientChannel::LoadBalancedCall
grpc_closure pick_closure_;
// Accessed while holding ClientChannel::data_plane_mu_.
ClientChannel::LbQueuedCall queued_call_;
bool queued_pending_lb_pick_ = false;
const LoadBalancingPolicy::BackendMetricData* backend_metric_data_ = nullptr;
ClientChannel::LbQueuedCall queued_call_
ABSL_GUARDED_BY(&ClientChannel::data_plane_mu_);
bool queued_pending_lb_pick_ ABSL_GUARDED_BY(&ClientChannel::data_plane_mu_) =
false;
LbQueuedCallCanceller* lb_call_canceller_
ABSL_GUARDED_BY(&ClientChannel::data_plane_mu_) = nullptr;
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
const LoadBalancingPolicy::BackendMetricData* backend_metric_data_ = nullptr;
std::function<void(grpc_error*, LoadBalancingPolicy::MetadataInterface*,
LoadBalancingPolicy::CallState*)>
lb_recv_trailing_metadata_ready_;
LbQueuedCallCanceller* lb_call_canceller_ = nullptr;
RefCountedPtr<SubchannelCall> subchannel_call_;

Loading…
Cancel
Save