]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts: Add reason_code=fts:index and fts:lookup
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 11 Mar 2021 21:38:01 +0000 (23:38 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 29 Sep 2021 10:09:58 +0000 (10:09 +0000)
Note that fts:index won't be used for email opening events, because the
emails are already opened by the indexer precache searching code due to
wanted_fields.

src/plugins/fts/fts-search.c
src/plugins/fts/fts-storage.c

index 6afc6aa259bd7c99fa379f7eb19bd985503d4fe4..110308bb7d57538ec975d3dfa90a8e8a2e57e3bc 100644 (file)
@@ -336,7 +336,7 @@ static void fts_search_merge_scores(struct fts_search_context *fctx)
                                      TRUE, &fctx->scores->score_map);
 }
 
-void fts_search_lookup(struct fts_search_context *fctx)
+static void fts_search_try_lookup(struct fts_search_context *fctx)
 {
        uint32_t last_uid, seq1, seq2;
 
@@ -365,3 +365,10 @@ void fts_search_lookup(struct fts_search_context *fctx)
        fts_search_deserialize(fctx->args->args, fctx->orig_matches);
        fts_backend_lookup_done(fctx->backend);
 }
+
+void fts_search_lookup(struct fts_search_context *fctx)
+{
+       struct event_reason *reason = event_reason_begin("fts:lookup");
+       fts_search_try_lookup(fctx);
+       event_reason_end(&reason);
+}
index fad1e59fddb31db09c5ae90aa49d878063f4ac6b..24d4acc2064bd227dd35ec9bb03554af0330901d 100644 (file)
@@ -557,10 +557,13 @@ static int fts_mail_precache(struct mail *_mail)
                        ft->highest_virtual_uid = _mail->uid;
        } else if (!ft->indexing) T_BEGIN {
                /* avoid recursing here from fts_mail_precache_range() */
+               struct event_reason *reason =
+                       event_reason_begin("fts:index");
                ft->indexing = TRUE;
                ret = fts_mail_index(_mail);
                i_assert(ft->indexing);
                ft->indexing = FALSE;
+               event_reason_end(&reason);
        } T_END;
        return ret;
 }
@@ -612,6 +615,7 @@ static int fts_transaction_end(struct mailbox_transaction_context *t, const char
                ret = -1;
        }
 
+       struct event_reason *reason = event_reason_begin("fts:index");
        if (ft->precached) {
                i_assert(flist->update_ctx_refcount > 0);
                if (--flist->update_ctx_refcount == 0) {
@@ -637,6 +641,7 @@ static int fts_transaction_end(struct mailbox_transaction_context *t, const char
                               ft->precache_extra_count, t->box->vname);
                }
        }
+       event_reason_end(&reason);
        i_free(ft);
        return ret;
 }