mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 17:34:54 +01:00
lib: Report progress for combined upgrade operation
Previously, some parts of upgrade didn't report progress and for others it was possible for the progress meter to restart at 0 part way through the upgrade because each stage was reported separately. Fix this by computing the total amount of work that needs to be done up-front and updating completed work monotonically.
This commit is contained in:
parent
e0635bd003
commit
02fec226fc
1 changed files with 15 additions and 2 deletions
|
@ -1241,6 +1241,19 @@ notmuch_database_upgrade (notmuch_database_t *notmuch,
|
|||
timer_is_active = TRUE;
|
||||
}
|
||||
|
||||
/* Figure out how much total work we need to do. */
|
||||
if (new_features &
|
||||
(NOTMUCH_FEATURE_FILE_TERMS | NOTMUCH_FEATURE_BOOL_FOLDER)) {
|
||||
notmuch_query_t *query = notmuch_query_create (notmuch, "");
|
||||
total += notmuch_query_count_messages (query);
|
||||
notmuch_query_destroy (query);
|
||||
}
|
||||
if (new_features & NOTMUCH_FEATURE_DIRECTORY_DOCS) {
|
||||
t_end = db->allterms_end ("XTIMESTAMP");
|
||||
for (t = db->allterms_begin ("XTIMESTAMP"); t != t_end; t++)
|
||||
++total;
|
||||
}
|
||||
|
||||
/* Perform the upgrade in a transaction. */
|
||||
db->begin_transaction (true);
|
||||
|
||||
|
@ -1256,8 +1269,6 @@ notmuch_database_upgrade (notmuch_database_t *notmuch,
|
|||
notmuch_message_t *message;
|
||||
char *filename;
|
||||
|
||||
total = notmuch_query_count_messages (query);
|
||||
|
||||
for (messages = notmuch_query_search_messages (query);
|
||||
notmuch_messages_valid (messages);
|
||||
notmuch_messages_move_to_next (messages))
|
||||
|
@ -1340,6 +1351,8 @@ notmuch_database_upgrade (notmuch_database_t *notmuch,
|
|||
|
||||
db->delete_document (*p);
|
||||
}
|
||||
|
||||
++count;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue