diff options
Diffstat (limited to 'grpc/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc')
-rw-r--r-- | grpc/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/grpc/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc b/grpc/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc index 037eea58..3cd7c541 100644 --- a/grpc/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +++ b/grpc/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc @@ -179,10 +179,10 @@ class PriorityLb : public LoadBalancingPolicy { void StartFailoverTimerLocked(); - static void OnFailoverTimer(void* arg, grpc_error* error); - void OnFailoverTimerLocked(grpc_error* error); - static void OnDeactivationTimer(void* arg, grpc_error* error); - void OnDeactivationTimerLocked(grpc_error* error); + static void OnFailoverTimer(void* arg, grpc_error_handle error); + void OnFailoverTimerLocked(grpc_error_handle error); + static void OnDeactivationTimer(void* arg, grpc_error_handle error); + void OnDeactivationTimerLocked(grpc_error_handle error); RefCountedPtr<PriorityLb> priority_policy_; const std::string name_; @@ -363,8 +363,10 @@ void PriorityLb::HandleChildConnectivityStateChangeLocked( // Otherwise, find the child's priority. uint32_t child_priority = GetChildPriorityLocked(child->name()); if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) { - gpr_log(GPR_INFO, "[priority_lb %p] state update for priority %d, child %s", - this, child_priority, child->name().c_str()); + gpr_log(GPR_INFO, + "[priority_lb %p] state update for priority %u, child %s, current " + "priority %u", + this, child_priority, child->name().c_str(), current_priority_); } // Ignore priorities not in the current config. if (child_priority == UINT32_MAX) return; @@ -412,12 +414,13 @@ void PriorityLb::DeleteChild(ChildPriority* child) { } void PriorityLb::TryNextPriorityLocked(bool report_connecting) { + current_priority_ = UINT32_MAX; for (uint32_t priority = 0; priority < config_->priorities().size(); ++priority) { // If the child for the priority does not exist yet, create it. const std::string& child_name = config_->priorities()[priority]; if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) { - gpr_log(GPR_INFO, "[priority_lb %p] trying priority %d, child %s", this, + gpr_log(GPR_INFO, "[priority_lb %p] trying priority %u, child %s", this, priority, child_name.c_str()); } auto& child = children_[child_name]; @@ -448,7 +451,7 @@ void PriorityLb::TryNextPriorityLocked(bool report_connecting) { if (child->failover_timer_callback_pending()) { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) { gpr_log(GPR_INFO, - "[priority_lb %p] priority %d, child %s: child still " + "[priority_lb %p] priority %u, child %s: child still " "attempting to connect, will wait", this, priority, child_name.c_str()); } @@ -468,9 +471,8 @@ void PriorityLb::TryNextPriorityLocked(bool report_connecting) { "TRANSIENT_FAILURE", this); } - current_priority_ = UINT32_MAX; current_child_from_before_update_ = nullptr; - grpc_error* error = grpc_error_set_int( + grpc_error_handle error = grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING("no ready priority"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE); channel_control_helper()->UpdateState( @@ -480,7 +482,7 @@ void PriorityLb::TryNextPriorityLocked(bool report_connecting) { void PriorityLb::SelectPriorityLocked(uint32_t priority) { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) { - gpr_log(GPR_INFO, "[priority_lb %p] selected priority %d, child %s", this, + gpr_log(GPR_INFO, "[priority_lb %p] selected priority %u, child %s", this, priority, config_->priorities()[priority].c_str()); } current_priority_ = priority; @@ -653,14 +655,15 @@ void PriorityLb::ChildPriority::MaybeCancelFailoverTimerLocked() { } } -void PriorityLb::ChildPriority::OnFailoverTimer(void* arg, grpc_error* error) { +void PriorityLb::ChildPriority::OnFailoverTimer(void* arg, + grpc_error_handle error) { ChildPriority* self = static_cast<ChildPriority*>(arg); GRPC_ERROR_REF(error); // ref owned by lambda self->priority_policy_->work_serializer()->Run( [self, error]() { self->OnFailoverTimerLocked(error); }, DEBUG_LOCATION); } -void PriorityLb::ChildPriority::OnFailoverTimerLocked(grpc_error* error) { +void PriorityLb::ChildPriority::OnFailoverTimerLocked(grpc_error_handle error) { if (error == GRPC_ERROR_NONE && failover_timer_callback_pending_ && !priority_policy_->shutting_down_) { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) { @@ -710,7 +713,7 @@ void PriorityLb::ChildPriority::MaybeReactivateLocked() { } void PriorityLb::ChildPriority::OnDeactivationTimer(void* arg, - grpc_error* error) { + grpc_error_handle error) { ChildPriority* self = static_cast<ChildPriority*>(arg); GRPC_ERROR_REF(error); // ref owned by lambda self->priority_policy_->work_serializer()->Run( @@ -718,7 +721,8 @@ void PriorityLb::ChildPriority::OnDeactivationTimer(void* arg, DEBUG_LOCATION); } -void PriorityLb::ChildPriority::OnDeactivationTimerLocked(grpc_error* error) { +void PriorityLb::ChildPriority::OnDeactivationTimerLocked( + grpc_error_handle error) { if (error == GRPC_ERROR_NONE && deactivation_timer_callback_pending_ && !priority_policy_->shutting_down_) { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) { @@ -783,7 +787,7 @@ class PriorityLbFactory : public LoadBalancingPolicyFactory { const char* name() const override { return kPriority; } RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig( - const Json& json, grpc_error** error) const override { + const Json& json, grpc_error_handle* error) const override { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); if (json.type() == Json::Type::JSON_NULL) { // priority was mentioned as a policy in the deprecated @@ -794,7 +798,7 @@ class PriorityLbFactory : public LoadBalancingPolicyFactory { "config instead."); return nullptr; } - std::vector<grpc_error*> error_list; + std::vector<grpc_error_handle> error_list; // Children. std::map<std::string, PriorityLbConfig::PriorityLbChild> children; auto it = json.object_value().find("children"); @@ -822,7 +826,7 @@ class PriorityLbFactory : public LoadBalancingPolicyFactory { " error:missing 'config' field") .c_str())); } else { - grpc_error* parse_error = GRPC_ERROR_NONE; + grpc_error_handle parse_error = GRPC_ERROR_NONE; auto config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig( it2->second, &parse_error); bool ignore_resolution_requests = false; |