| 1570 | } |
| 1571 | |
| 1572 | vector<NetworkAddressPB> Coordinator::GetActiveBackends( |
| 1573 | const vector<NetworkAddressPB>& candidates) { |
| 1574 | // Build set from vector so that runtime of this function is O(backend_states.size()). |
| 1575 | std::unordered_set<NetworkAddressPB> candidate_set( |
| 1576 | candidates.begin(), candidates.end()); |
| 1577 | vector<NetworkAddressPB> result; |
| 1578 | lock_guard<SpinLock> l(backend_states_init_lock_); |
| 1579 | for (BackendState* backend_state : backend_states_) { |
| 1580 | if (candidate_set.find(backend_state->impalad_address()) != candidate_set.end() |
| 1581 | && !backend_state->IsDone()) { |
| 1582 | result.push_back(backend_state->impalad_address()); |
| 1583 | } |
| 1584 | } |
| 1585 | return result; |
| 1586 | } |
| 1587 | |
| 1588 | list<pair<NetworkAddressPB, Coordinator::ResourceUtilization>> |
| 1589 | Coordinator::BackendResourceUtilization() { |