mu: update the index 'processed' -> 'checked'

The 'processed' statistic for indexing was more-or-less synonymous for
'updated'; let's change to something more useful, 'checked' which roughly means
the number of messages checked for updates (typically a cheap timestamp check).
This commit is contained in:
Dirk-Jan C. Binnema 2021-11-10 21:50:43 +02:00
parent dd3efb0b8b
commit 503d7224e0
4 changed files with 18 additions and 15 deletions

View File

@ -124,7 +124,10 @@ Indexer::Private::handler(const std::string& fullpath,
dirstamp_ = store_.dirstamp(fullpath); dirstamp_ = store_.dirstamp(fullpath);
if (conf_.lazy_check && dirstamp_ >= statbuf->st_mtime && if (conf_.lazy_check && dirstamp_ >= statbuf->st_mtime &&
htype == Scanner::HandleType::EnterNewCur) { htype == Scanner::HandleType::EnterNewCur) {
g_debug("skip %s (seems up-to-date)", fullpath.c_str()); g_debug("skip %s (seems up-to-date: %s >= %s)",
fullpath.c_str(),
time_to_string("%FT%T", dirstamp_).c_str(),
time_to_string("%FT%T", statbuf->st_mtime).c_str());
return false; return false;
} }
@ -145,7 +148,7 @@ Indexer::Private::handler(const std::string& fullpath,
} }
} }
g_debug("process %s", fullpath.c_str()); g_debug("checked %s", fullpath.c_str());
return true; return true;
} }
case Scanner::HandleType::LeaveDir: { case Scanner::HandleType::LeaveDir: {
@ -154,6 +157,8 @@ Indexer::Private::handler(const std::string& fullpath,
} }
case Scanner::HandleType::File: { case Scanner::HandleType::File: {
++progress_.checked;
if ((size_t)statbuf->st_size > max_message_size_) { if ((size_t)statbuf->st_size > max_message_size_) {
g_debug("skip %s (too big: %" G_GINT64_FORMAT " bytes)", g_debug("skip %s (too big: %" G_GINT64_FORMAT " bytes)",
fullpath.c_str(), fullpath.c_str(),
@ -168,6 +173,8 @@ Indexer::Private::handler(const std::string& fullpath,
return false; return false;
} }
// push the remaining messages to our "todo" queue for
// (re)parsing and adding/updating to the database.
fq_.push(std::string{fullpath}); fq_.push(std::string{fullpath});
return true; return true;
} }
@ -194,10 +201,6 @@ Indexer::Private::worker()
while (state_ == IndexState::Scanning || !fq_.empty()) { while (state_ == IndexState::Scanning || !fq_.empty()) {
if (!fq_.pop(item, 250ms)) if (!fq_.pop(item, 250ms))
continue; continue;
// g_debug ("popped (n=%zu) path %s", fq_.size(), item.c_str());
++progress_.processed;
try { try {
std::unique_lock lock{lock_}; std::unique_lock lock{lock_};

View File

@ -29,7 +29,7 @@ class Store;
/// An object abstracting the index process. /// An object abstracting the index process.
class Indexer { class Indexer {
public: public:
/** /**
* Construct an indexer object * Construct an indexer object
* *
@ -86,10 +86,10 @@ class Indexer {
// Object describing current progress // Object describing current progress
struct Progress { struct Progress {
bool running{}; /**< Is an index operation in progress? */ bool running{}; /**< Is an index operation in progress? */
size_t processed{}; /**< Number of messages processed */ size_t checked{}; /**< Number of messages checked for changes */
size_t updated{}; /**< Number of messages added/updated to store */ size_t updated{}; /**< Number of messages (re)parsed & added/updated to store */
size_t removed{}; /**< Number of message removed from store */ size_t removed{}; /**< Number of message removed from store */
}; };
/** /**
@ -101,7 +101,7 @@ class Indexer {
*/ */
Progress progress() const; Progress progress() const;
private: private:
struct Private; struct Private;
std::unique_ptr<Private> priv_; std::unique_ptr<Private> priv_;
}; };

View File

@ -104,7 +104,7 @@ struct Server::Private {
void sent_handler(const Parameters& params); void sent_handler(const Parameters& params);
void view_handler(const Parameters& params); void view_handler(const Parameters& params);
private: private:
// helpers // helpers
Sexp build_message_sexp(MuMsg* msg, Sexp build_message_sexp(MuMsg* msg,
unsigned docid, unsigned docid,
@ -754,7 +754,7 @@ get_stats(const Indexer::Progress& stats, const std::string& state)
lst.add_prop(":info", Sexp::make_symbol("index")); lst.add_prop(":info", Sexp::make_symbol("index"));
lst.add_prop(":status", Sexp::make_symbol(std::string{state})); lst.add_prop(":status", Sexp::make_symbol(std::string{state}));
lst.add_prop(":processed", Sexp::make_number(stats.processed)); lst.add_prop(":checked", Sexp::make_number(stats.checked));
lst.add_prop(":updated", Sexp::make_number(stats.updated)); lst.add_prop(":updated", Sexp::make_number(stats.updated));
lst.add_prop(":cleaned-up", Sexp::make_number(stats.removed)); lst.add_prop(":cleaned-up", Sexp::make_number(stats.removed));

View File

@ -72,7 +72,7 @@ print_stats(const Indexer::Progress& stats, bool color)
using Color = MaybeAnsi::Color; using Color = MaybeAnsi::Color;
std::cout << col.fg(Color::Yellow) << kars[++i % 4] << col.reset() << " indexing messages; " std::cout << col.fg(Color::Yellow) << kars[++i % 4] << col.reset() << " indexing messages; "
<< "processed: " << col.fg(Color::Green) << stats.processed << col.reset() << "checked: " << col.fg(Color::Green) << stats.checked << col.reset()
<< "; updated/new: " << col.fg(Color::Green) << stats.updated << col.reset() << "; updated/new: " << col.fg(Color::Green) << stats.updated << col.reset()
<< "; cleaned-up: " << col.fg(Color::Green) << stats.removed << col.reset(); << "; cleaned-up: " << col.fg(Color::Green) << stats.removed << col.reset();
} }