[PATCH v3 10/13] lib: Report progress for combined upgrade operation

2014-07-31 Thread Austin Clements
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.
---
 lib/database.cc | 17 +++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/lib/database.cc b/lib/database.cc
index 31e6a93..04b3790 100644
--- a/lib/database.cc
+++ b/lib/database.cc
@@ -1234,6 +1234,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);

@@ -1249,8 +1262,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))
@@ -1333,6 +1344,8 @@ notmuch_database_upgrade (notmuch_database_t *notmuch,

db->delete_document (*p);
}
+
+   ++count;
}
 }

-- 
2.0.0



[PATCH v3 10/13] lib: Report progress for combined upgrade operation

2014-07-31 Thread Austin Clements
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.
---
 lib/database.cc | 17 +++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/lib/database.cc b/lib/database.cc
index 31e6a93..04b3790 100644
--- a/lib/database.cc
+++ b/lib/database.cc
@@ -1234,6 +1234,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);
 
@@ -1249,8 +1262,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))
@@ -1333,6 +1344,8 @@ notmuch_database_upgrade (notmuch_database_t *notmuch,
 
db->delete_document (*p);
}
+
+   ++count;
}
 }
 
-- 
2.0.0

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch