| 89 | |
| 90 | |
| 91 | bool DefaultClusterRecoverPolicy::DoReject(const std::vector<ServerId>& server_list) { |
| 92 | if (!_recovering) { |
| 93 | return false; |
| 94 | } |
| 95 | int64_t now_ms = butil::cpuwide_time_ms(); |
| 96 | uint64_t usable = GetUsableServerCount(now_ms, server_list); |
| 97 | if (_last_usable != usable) { |
| 98 | std::unique_lock<butil::Mutex> mu(_mutex); |
| 99 | if (_last_usable != usable) { |
| 100 | _last_usable = usable; |
| 101 | _last_usable_change_time_ms = now_ms; |
| 102 | } |
| 103 | } |
| 104 | if (butil::fast_rand_less_than(_min_working_instances) >= usable) { |
| 105 | return true; |
| 106 | } |
| 107 | return false; |
| 108 | } |
| 109 | |
| 110 | bool GetRecoverPolicyByParams(const butil::StringPiece& params, |
| 111 | std::shared_ptr<ClusterRecoverPolicy>* ptr_out) { |
no test coverage detected