indexer: don't wait when indexing does not progress

Should help for #2233.
This commit is contained in:
Dirk-Jan C. Binnema 2022-04-16 16:49:25 +03:00
parent a1c430908a
commit db1a5c8dd2
1 changed files with 11 additions and 5 deletions

View File

@ -276,12 +276,18 @@ Indexer::Private::start(const Indexer::Config& conf)
fq_.size()); fq_.size());
} }
// now there may still be messages in the work queue... // now there may still be messages in the work queue...
// finish those; this is a bit ugly; perhaps we should // finish those; it's possible that the thread has already
// handle SIGTERM etc. // stopped, so stop when there's no progress. A bit ugly, fixed
while (!fq_.empty()) // in >= 1.7
std::this_thread::sleep_for(100ms); {
while (!fq_.empty()) {
const auto n = fq_.size();
std::this_thread::sleep_for(250ms);
if (fq_.size() >= n)
break; // no progress.
}
}
if (conf_.cleanup) { if (conf_.cleanup) {
g_debug ("starting cleanup"); g_debug ("starting cleanup");