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