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;
}
}
}