diff --git a/src/chunkserver/network_worker_thread.cc b/src/chunkserver/network_worker_thread.cc index 13fa55345..b68f226cc 100644 --- a/src/chunkserver/network_worker_thread.cc +++ b/src/chunkserver/network_worker_thread.cc @@ -122,6 +122,11 @@ void NetworkWorkerThread::operator()() { } bool NetworkWorkerThread::updateAndCheckTerminationStatus() { + // Don't even check the rest if we already know we can terminate. + if (canTerminate_.load()) { + return true; + } + std::lock_guard lock(csservheadLock); bool canTerminate = doTerminate.load() && ((csservEntries.empty() && diff --git a/tests/test_suites/SingleMachineTests/test_helgrind_basic.sh b/tests/test_suites/SingleMachineTests/test_helgrind_basic.sh index 000668189..b731b078d 100644 --- a/tests/test_suites/SingleMachineTests/test_helgrind_basic.sh +++ b/tests/test_suites/SingleMachineTests/test_helgrind_basic.sh @@ -53,3 +53,5 @@ generateFiles # finishes validating files and sometimes it gets stuck # drop_caches # validateFiles + +saunafs_chunkserver_daemon 0 stop