|  | @@ -215,7 +215,8 @@ class BalancerServiceImpl : public BalancerService {
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |        std::unique_lock<std::mutex> lock(mu_);
 | 
	
		
			
				|  |  |        if (shutdown_) goto done;
 | 
	
		
			
				|  |  | -      serverlist_cond_.wait(lock);
 | 
	
		
			
				|  |  | +      serverlist_cond_.wait(lock, [this] { return serverlist_ready_; });
 | 
	
		
			
				|  |  | +      serverlist_ready_ = false;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (client_load_reporting_interval_seconds_ > 0) {
 | 
	
	
		
			
				|  | @@ -242,6 +243,7 @@ class BalancerServiceImpl : public BalancerService {
 | 
	
		
			
				|  |  |              .drop_token_counts[drop_token_count.load_balance_token()] +=
 | 
	
		
			
				|  |  |              drop_token_count.num_calls();
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | +      load_report_ready_ = true;
 | 
	
		
			
				|  |  |        load_report_cond_.notify_one();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    done:
 | 
	
	
		
			
				|  | @@ -285,12 +287,14 @@ class BalancerServiceImpl : public BalancerService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    const ClientStats& WaitForLoadReport() {
 | 
	
		
			
				|  |  |      std::unique_lock<std::mutex> lock(mu_);
 | 
	
		
			
				|  |  | -    load_report_cond_.wait(lock);
 | 
	
		
			
				|  |  | +    load_report_cond_.wait(lock, [this] { return load_report_ready_; });
 | 
	
		
			
				|  |  | +    load_report_ready_ = false;
 | 
	
		
			
				|  |  |      return client_stats_;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    void NotifyDoneWithServerlists() {
 | 
	
		
			
				|  |  |      std::lock_guard<std::mutex> lock(mu_);
 | 
	
		
			
				|  |  | +    serverlist_ready_ = true;
 | 
	
		
			
				|  |  |      serverlist_cond_.notify_one();
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -313,7 +317,9 @@ class BalancerServiceImpl : public BalancerService {
 | 
	
		
			
				|  |  |    std::vector<ResponseDelayPair> responses_and_delays_;
 | 
	
		
			
				|  |  |    std::mutex mu_;
 | 
	
		
			
				|  |  |    std::condition_variable load_report_cond_;
 | 
	
		
			
				|  |  | +  bool load_report_ready_ = false;
 | 
	
		
			
				|  |  |    std::condition_variable serverlist_cond_;
 | 
	
		
			
				|  |  | +  bool serverlist_ready_ = false;
 | 
	
		
			
				|  |  |    ClientStats client_stats_;
 | 
	
		
			
				|  |  |    bool shutdown_;
 | 
	
		
			
				|  |  |  };
 |