]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Added MAILBOX_SYNC_FLAG_OPTIMIZE flag for triggering fts optimize.
authorTimo Sirainen <tss@iki.fi>
Tue, 16 Aug 2011 19:20:40 +0000 (22:20 +0300)
committerTimo Sirainen <tss@iki.fi>
Tue, 16 Aug 2011 19:20:40 +0000 (22:20 +0300)
This is a pretty ugly kludge, since it does nothing when FTS isn't enabled..

src/lib-storage/mail-storage.h
src/plugins/fts/fts-storage.c

index 13e553d9b912889c5af5de4c3e429f5891018a93..6f66e9ed3af61642d1175be22e142e3bf2c554bd 100644 (file)
@@ -172,7 +172,10 @@ enum mailbox_sync_flags {
        /* Force doing a full resync of indexes. */
        MAILBOX_SYNC_FLAG_FORCE_RESYNC          = 0x100,
        /* Add all missing data to cache and fts index ("doveadm index") */
-       MAILBOX_SYNC_FLAG_PRECACHE              = 0x200
+       MAILBOX_SYNC_FLAG_PRECACHE              = 0x200,
+       /* FIXME: kludge until something better comes along:
+          Request full text search index optimization */
+       MAILBOX_SYNC_FLAG_OPTIMIZE              = 0x400
 };
 
 enum mailbox_sync_type {
index d778615eac504f56bc89b9bb8564e70276fadd8e..f7e40264c527f2fc7add0f3104f3aa2b9428ca24 100644 (file)
@@ -422,17 +422,18 @@ static int fts_sync_deinit(struct mailbox_sync_context *ctx,
        struct mailbox *box = ctx->box;
        struct fts_mailbox *fbox = FTS_CONTEXT(box);
        struct fts_mailbox_list *flist = FTS_LIST_CONTEXT(box->list);
-       bool precache, force_resync;
+       bool precache, optimize;
        int ret = 0;
 
        precache = (ctx->flags & MAILBOX_SYNC_FLAG_PRECACHE) != 0;
-       force_resync = (ctx->flags & MAILBOX_SYNC_FLAG_FORCE_RESYNC) != 0;
+       optimize = (ctx->flags & (MAILBOX_SYNC_FLAG_FORCE_RESYNC |
+                                 MAILBOX_SYNC_FLAG_OPTIMIZE)) != 0;
        if (fbox->module_ctx.super.sync_deinit(ctx, status_r) < 0)
                return -1;
        ctx = NULL;
 
        flist->backend->syncing = TRUE;
-       if (force_resync) {
+       if (optimize) {
                if (fts_backend_optimize(flist->backend) < 0) {
                        mail_storage_set_critical(box->storage,
                                "FTS optimize for mailbox %s failed",