void AsyncConnectionPool::ConnStorage::cleanupOperations()

in squangle/mysql_client/AsyncConnectionPool.cpp [764:787]


void AsyncConnectionPool::ConnStorage::cleanupOperations() {
  DCHECK_EQ(std::this_thread::get_id(), allowed_thread_id_);

  for (auto poolOpListIt = waitList_.begin();
       poolOpListIt != waitList_.end();) {
    auto& poolOpList = poolOpListIt->second;
    for (PoolOpList::iterator it = poolOpList.begin();
         it != poolOpList.end();) {
      // check if weak pointer expired
      auto op = (*it).lock();
      if (!op || op->done()) {
        it = poolOpList.erase(it);
        VLOG(11) << "Operation being erased during clean up";
      } else {
        ++it;
      }
    }
    if (poolOpList.empty()) {
      poolOpListIt = waitList_.erase(poolOpListIt);
    } else {
      ++poolOpListIt;
    }
  }
}