]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-index: Remove mail_index_transaction_get_highest_modseq()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 22 Jul 2021 12:31:11 +0000 (15:31 +0300)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Mon, 9 Aug 2021 15:53:56 +0000 (15:53 +0000)
This isn't actually used anywhere, so there's no need to keep it.

src/lib-index/mail-index-transaction-export.c
src/lib-index/mail-index-transaction.c
src/lib-index/mail-index.h
src/lib-index/mail-transaction-log-file.c

index e944edd2058b2794fc7d90a1d76c4e5e40519662..4f903cf8e7f450e1c6d20d5ad9e15bad34e1a8e7 100644 (file)
@@ -530,117 +530,3 @@ void mail_index_transaction_export(struct mail_index_transaction *t,
                (t->view->index->set.fsync_mask & change_mask) != 0 ||
                (t->flags & MAIL_INDEX_TRANSACTION_FLAG_FSYNC) != 0;
 }
-
-static unsigned int
-count_modseq_incs_with(struct mail_index_transaction *t,
-                      ARRAY_TYPE(seq_range) *tmp_seqs,
-                      const ARRAY_TYPE(seq_range) *orig_seqs)
-{
-       if (!array_is_created(orig_seqs))
-               return 0;
-
-       array_clear(tmp_seqs);
-       array_append_array(tmp_seqs, orig_seqs);
-       mail_index_transaction_seq_range_to_uid(t, tmp_seqs);
-       return array_count(tmp_seqs) > 0 ? 1 : 0;
-}
-
-static unsigned int
-mail_index_transaction_keywords_count_modseq_incs(struct mail_index_transaction *t)
-{
-        const struct mail_index_transaction_keyword_update *update;
-       ARRAY_TYPE(seq_range) tmp_seqs;
-       unsigned int count = 0;
-
-       i_array_init(&tmp_seqs, 64);
-       array_foreach_modifiable(&t->keyword_updates, update) {
-               count += count_modseq_incs_with(t, &tmp_seqs, &update->add_seq);
-               count += count_modseq_incs_with(t, &tmp_seqs, &update->remove_seq);
-       }
-       array_free(&tmp_seqs);
-       return count;
-}
-
-static bool
-transaction_flag_updates_have_non_internal(struct mail_index_transaction *t)
-{
-       struct mail_transaction_log_file *file = t->view->index->log->head;
-       const uint8_t internal_flags =
-               MAIL_INDEX_MAIL_FLAG_BACKEND | MAIL_INDEX_MAIL_FLAG_DIRTY;
-       const struct mail_index_flag_update *u;
-       const unsigned int hdr_version =
-               MAIL_TRANSACTION_LOG_HDR_VERSION(&file->hdr);
-
-       if (!MAIL_TRANSACTION_LOG_VERSION_HAVE(hdr_version, HIDE_INTERNAL_MODSEQS)) {
-               /* this check can be a bit racy if the call isn't done while
-                  transaction log is locked. practically it won't matter
-                  now though. */
-               return array_count(&t->updates) > 0;
-       }
-
-       array_foreach(&t->updates, u) {
-               uint16_t changed_flags = u->add_flags | u->remove_flags;
-
-               if ((changed_flags & ~internal_flags) != 0)
-                       return TRUE;
-       }
-       return FALSE;
-}
-
-uint64_t mail_index_transaction_get_highest_modseq(struct mail_index_transaction *t)
-{
-       struct mail_transaction_log_file *file = t->view->index->log->head;
-       uint64_t new_highest_modseq = file->sync_highest_modseq;
-
-       i_assert(file->locked);
-
-       if (new_highest_modseq == 0) {
-               /* highest-modseq tracking isn't enabled in this transaction
-                  log file. This shouldn't happen with logs created since
-                  v2.2.26+, because initial_modseq is always set. We don't
-                  also bother checking if this transaction itself enables the
-                  highest-modseq tracking, because it's always done as a
-                  standalone transaction in mail_index_modseq_enable(),
-                  which doesn't care about this function. */
-               i_warning("%s: Requested highest-modseq for transaction, "
-                         "but modseq tracking isn't enabled for the file "
-                         "(this shouldn't happen)", file->filepath);
-               return 0;
-       }
-
-       /* finish everything that can affect highest-modseq */
-       mail_index_transaction_finish_so_far(t);
-
-       /* NOTE: keep in sync with mail_transaction_update_modseq() */
-       if (array_is_created(&t->appends) && array_count(&t->appends) > 0) {
-               /* sorting may change the order of keyword_updates,  */
-               new_highest_modseq++;
-       }
-       if (array_is_created(&t->updates) &&
-           transaction_flag_updates_have_non_internal(t))
-               new_highest_modseq++;
-       if (array_is_created(&t->keyword_updates)) {
-               new_highest_modseq +=
-                       mail_index_transaction_keywords_count_modseq_incs(t);
-       }
-       if (t->attribute_updates != NULL)
-               new_highest_modseq++;
-       /* NOTE: the order of modseq_updates and everything following it
-          must match mail_index_transaction_export(). */
-       if (array_is_created(&t->modseq_updates)) {
-               const struct mail_transaction_modseq_update *mu;
-
-               /* mail_index_update_highest_modseq() is handled here also,
-                  as a special case of uid==0. */
-               array_foreach(&t->modseq_updates, mu) {
-                       uint64_t modseq = ((uint64_t)mu->modseq_high32 << 32) |
-                               mu->modseq_low32;
-                       if (new_highest_modseq < modseq)
-                               new_highest_modseq = modseq;
-               }
-       }
-       if (array_is_created(&t->expunges) && array_count(&t->expunges) > 0 &&
-           (t->flags & MAIL_INDEX_TRANSACTION_FLAG_EXTERNAL) != 0)
-               new_highest_modseq++;
-       return new_highest_modseq;
-}
index ae152eae15495a52bbd4a947b94c61c0bf7d9f06..0c61170a181e98275f6d30f6fd3f0af67ffb8687 100644 (file)
@@ -191,11 +191,6 @@ mail_index_transaction_commit_real(struct mail_index_transaction *t,
        if (mail_transaction_log_append_begin(log->index, trans_flags, &ctx) < 0)
                return -1;
        ret = mail_transaction_log_file_refresh(t, ctx);
-#ifdef DEBUG
-       uint64_t expected_highest_modseq =
-               log->head->sync_highest_modseq == 0 ? 0 :
-               mail_index_transaction_get_highest_modseq(t);
-#endif
        if (ret > 0) T_BEGIN {
                mail_index_transaction_finish(t);
                mail_index_transaction_export(t, ctx, changes_r);
@@ -207,11 +202,6 @@ mail_index_transaction_commit_real(struct mail_index_transaction *t,
        mail_transaction_log_get_head(log, &log_seq2, &log_offset2);
        i_assert(log_seq1 == log_seq2);
 
-#ifdef DEBUG
-       i_assert(t->reset ||
-                expected_highest_modseq == log->head->sync_highest_modseq);
-#endif
-
        if (t->reset) {
                /* get rid of the old index. it might just confuse readers,
                   especially if it's broken. */
index 7f34eb52bc8c30378a79c1620f48de349664d187..4a397f4810f4c054ae242ccfccf5146f9e788d9f 100644 (file)
@@ -450,11 +450,6 @@ void mail_index_transaction_reset(struct mail_index_transaction *t);
 void mail_index_transaction_set_max_modseq(struct mail_index_transaction *t,
                                           uint64_t max_modseq,
                                           ARRAY_TYPE(seq_range) *seqs);
-/* Returns the resulting highest-modseq after this commit. This can be called
-   only if transaction log is locked, which normally means only during mail
-   index syncing. If there are any appends, they all must have been assigned
-   UIDs before calling this. */
-uint64_t mail_index_transaction_get_highest_modseq(struct mail_index_transaction *t);
 
 /* Returns the view transaction was created for. */
 struct mail_index_view *
index 3e66d7e00ae33a43eb6021ff6f015944c773c930..753cb65c769a1fb837097be6ef79d738cd6f3e21 100644 (file)
@@ -1056,7 +1056,6 @@ void mail_transaction_update_modseq(const struct mail_transaction_header *hdr,
                return;
        }
 
-       /* NOTE: keep in sync with mail_index_transaction_get_highest_modseq() */
        switch (hdr->type & MAIL_TRANSACTION_TYPE_MASK) {
        case MAIL_TRANSACTION_EXPUNGE | MAIL_TRANSACTION_EXPUNGE_PROT:
        case MAIL_TRANSACTION_EXPUNGE_GUID | MAIL_TRANSACTION_EXPUNGE_PROT: