diff --git a/src/ray/core_worker/reference_count.cc b/src/ray/core_worker/reference_count.cc index 8ee731473..561dca4ac 100644 --- a/src/ray/core_worker/reference_count.cc +++ b/src/ray/core_worker/reference_count.cc @@ -256,11 +256,15 @@ void ReferenceCounter::SetNestedRefInUseRecursive(ReferenceTable::iterator inner void ReferenceCounter::ReleaseAllLocalReferences() { absl::MutexLock lock(&mutex_); + std::vector refs_to_remove; for (auto &ref : object_id_refs_) { for (int i = ref.second.local_ref_count; i > 0; --i) { - RemoveLocalReferenceInternal(ref.first, nullptr); + refs_to_remove.push_back(ref.first); } } + for (const auto &object_id_to_remove : refs_to_remove) { + RemoveLocalReferenceInternal(object_id_to_remove, nullptr); + } } void ReferenceCounter::RemoveLocalReference(const ObjectID &object_id,