dovecot-2.2: fts-solr: doveadm fts rescan now resets the last-in...
dovecot at dovecot.org
dovecot at dovecot.org
Sun May 20 03:26:32 EEST 2012
details: http://hg.dovecot.org/dovecot-2.2/rev/d145ea6f7061
changeset: 14460:d145ea6f7061
user: Timo Sirainen <tss at iki.fi>
date: Wed Apr 18 19:56:29 2012 +0300
description:
fts-solr: doveadm fts rescan now resets the last-indexed-uid fields to allow reindexing.
diffstat:
src/plugins/fts-solr/fts-backend-solr.c | 30 +++++++++++++++++++++++++++++-
1 files changed, 29 insertions(+), 1 deletions(-)
diffs (47 lines):
diff -r 51b40cffb628 -r d145ea6f7061 src/plugins/fts-solr/fts-backend-solr.c
--- a/src/plugins/fts-solr/fts-backend-solr.c Wed Apr 18 19:29:22 2012 +0300
+++ b/src/plugins/fts-solr/fts-backend-solr.c Wed Apr 18 19:56:29 2012 +0300
@@ -545,6 +545,34 @@
return 0;
}
+static int fts_backend_solr_rescan(struct fts_backend *backend)
+{
+ struct mailbox_list_iterate_context *iter;
+ const struct mailbox_info *info;
+ struct mailbox *box;
+ int ret = 0;
+
+ /* FIXME: proper rescan needed. for now we'll just reset the
+ last-uids */
+ iter = mailbox_list_iter_init(backend->ns->list, "*",
+ MAILBOX_LIST_ITER_NO_AUTO_BOXES);
+ while ((info = mailbox_list_iter_next(iter)) != NULL) {
+ if ((info->flags &
+ (MAILBOX_NONEXISTENT | MAILBOX_NOSELECT)) != 0)
+ continue;
+
+ box = mailbox_alloc(info->ns->list, info->name, 0);
+ if (mailbox_open(box) == 0) {
+ if (fts_index_set_last_uid(box, 0) < 0)
+ ret = -1;
+ }
+ mailbox_free(&box);
+ }
+ if (mailbox_list_iter_deinit(&iter) < 0)
+ ret = -1;
+ return ret;
+}
+
static int fts_backend_solr_optimize(struct fts_backend *backend ATTR_UNUSED)
{
return 0;
@@ -850,7 +878,7 @@
fts_backend_solr_update_unset_build_key,
fts_backend_solr_update_build_more,
fts_backend_solr_refresh,
- NULL,
+ fts_backend_solr_rescan,
fts_backend_solr_optimize,
fts_backend_default_can_lookup,
fts_backend_solr_lookup,
More information about the dovecot-cvs
mailing list