indexer: disable lazy check for "full" scan

Lazy would actually do _more_ work a full scan.
This commit is contained in:
Dirk-Jan C. Binnema 2023-08-06 13:42:28 +03:00
parent 4ecf386cda
commit 253b44043b
1 changed files with 15 additions and 7 deletions

View File

@ -158,13 +158,16 @@ Indexer::Private::handler(const std::string& fullpath, struct stat* statbuf,
// is up-to-date (this is _not_ always true; hence we call it
// lazy-mode); only for actual message dirs, since the dir
// tstamps may not bubble up.
dirstamp_ = store_.dirstamp(fullpath);
if (conf_.lazy_check && dirstamp_ >= statbuf->st_ctime &&
htype == Scanner::HandleType::EnterNewCur) {
mu_debug("skip {} (seems up-to-date: {:%FT%T} >= {:%FT%T})",
fullpath, mu_time(dirstamp_), mu_time(statbuf->st_ctime));
return false;
}
if (conf_.lazy_check) {
dirstamp_ = store_.dirstamp(fullpath);
if (dirstamp_ >= statbuf->st_ctime &&
htype == Scanner::HandleType::EnterNewCur) {
mu_debug("skip {} (seems up-to-date: {:%FT%T} >= {:%FT%T})",
fullpath, mu_time(dirstamp_), mu_time(statbuf->st_ctime));
return false;
}
} else
dirstamp_ = 0;
// don't index dirs with '.noindex'
auto noindex = ::access((fullpath + "/.noindex").c_str(), F_OK) == 0;
@ -379,6 +382,11 @@ Indexer::Private::start(const Indexer::Config& conf)
} else
max_workers_ = conf.max_threads;
if (store_.empty() && conf_.lazy_check) {
mu_debug("turn off lazy check since we have an empty store");
conf_.lazy_check = false;
}
mu_debug("starting indexer with <= {} worker thread(s)", max_workers_);
mu_debug("indexing: {}; clean-up: {}", conf_.scan ? "yes" : "no",
conf_.cleanup ? "yes" : "no");