[PATCH v2] new: Don't scan unchanged directories with no sub-directories
> > This can substantially reduce the cost of notmuch new in some > > situations, such as when the file system cache is cold or when the > > Maildir is on NFS. > > --- > > pushed as commit 516efb7807 Muchas gracias! -- Vlad
[PATCH 4/4] database: Handle error while deleting uncompacted database
We never checked to ensure that the rmtree() of the old database succeeded. Signed-off-by: Ben Gamari --- lib/database.cc | 14 +- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/database.cc b/lib/database.cc index 34753ab..bfc5dac 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -934,7 +934,19 @@ notmuch_database_compact (const char* path, goto DONE; } } else { - rmtree(xapian_path); + if (rmtree(xapian_path)) { + fprintf (stderr, "Error removing old database: %s\n", +strerror(errno)); + fprintf (stderr, "\n"); + fprintf (stderr, "Old database: %s\n", xapian_path); + fprintf (stderr, "\n"); + fprintf (stderr, "Please remove the old database and move the compacted one in to place manually with\n"); + fprintf (stderr, "\n"); + fprintf (stderr, "mv %s %s\n", compact_xapian_path, xapian_path); + fprintf (stderr, "\n"); + ret = NOTMUCH_STATUS_FILE_ERROR; + goto DONE; + } } if (rename(compact_xapian_path, xapian_path)) { -- 1.8.3.2
[PATCH 3/4] compact: Provide user with more error feedback
Provide instructions on what to do when we couldn't move the compacted database into place. Signed-off-by: Ben Gamari --- lib/database.cc | 20 +++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/database.cc b/lib/database.cc index 57c2292..34753ab 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -938,7 +938,25 @@ notmuch_database_compact (const char* path, } if (rename(compact_xapian_path, xapian_path)) { - fprintf (stderr, "Error moving compacted database\n"); + fprintf (stderr, "Error moving compacted database into place: %s\n", strerror(errno)); + fprintf (stderr, "\n"); + fprintf (stderr, "Encountered error while moving the compacted database\n"); + fprintf (stderr, "\n"); + fprintf (stderr, "%s\n", compact_xapian_path); + fprintf (stderr, "\n"); + fprintf (stderr, "to\n"); + fprintf (stderr, "\n"); + fprintf (stderr, "%s\n", xapian_path); + fprintf (stderr, "\n"); + fprintf (stderr, "Please identify the reason for this and move the compacted database\n"); + fprintf (stderr, "into place manually.\n"); + if (old_xapian_path != NULL) { + fprintf (stderr, "\n"); + fprintf (stderr, "Alternatively you can revert to the uncompacted database with\n"); + fprintf (stderr, "\n"); + fprintf (stderr, "mv %s %s\n", old_xapian_path, xapian_path); + fprintf (stderr, "\n"); + } ret = NOTMUCH_STATUS_FILE_ERROR; goto DONE; } -- 1.8.3.2
[PATCH 2/4] compact: Give user more feedback on failure renaming
Provide the user with instructions after we fail to move the old un-compacted database out of the way. Signed-off-by: Ben Gamari --- lib/database.cc | 9 - 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/database.cc b/lib/database.cc index 06f1c0a..57c2292 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -922,7 +922,14 @@ notmuch_database_compact (const char* path, if (old_xapian_path != NULL) { if (rename(xapian_path, old_xapian_path)) { - fprintf (stderr, "Error moving old database out of the way\n"); + fprintf (stderr, "Error moving old database out of the way: %s\n", +strerror(errno)); + fprintf (stderr, "\n"); + fprintf (stderr, "Old database: %s\n", xapian_path); + fprintf (stderr, "Compacted database: %s\n", compact_xapian_path); + fprintf (stderr, "\n"); + fprintf (stderr, "At this point it's probably best to remove the compacted database,\n"); + fprintf (stderr, "find the cause of this error, and try compacting again.\n"); ret = NOTMUCH_STATUS_FILE_ERROR; goto DONE; } -- 1.8.3.2
[PATCH 1/4] test: Add compact test
Signed-off-by: Ben Gamari --- test/compact | 35 +++ test/notmuch-test | 1 + 2 files changed, 36 insertions(+) create mode 100755 test/compact diff --git a/test/compact b/test/compact new file mode 100755 index 000..54e85ab --- /dev/null +++ b/test/compact @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +test_description='"notmuch compact"' +. ./test-lib.sh + +add_message '[subject]=One' +add_message '[subject]=Two' +add_message '[subject]=Three' + +notmuch tag +tag1 \* +notmuch tag +tag2 subject:Two +notmuch tag -tag1 +tag3 subject:Three + +test_begin_subtest "Compacting" +notmuch compact +test_expect_success "compact" "notmuch compact" + +notmuch search \* +output=$(notmuch search \* | notmuch_search_sanitize) +test_expect_equal "$output" "\ +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; One (inbox tag1 unread) +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Two (inbox tag1 tag2 unread) +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Three (inbox tag3 unread)" + +test_begin_subtest "Restoring backup" +rm -Rf ${TEST_TMPDIR}/mail/xapian +mv ${TEST_TMPDIR}/mail/xapian.old ${TEST_TMPDIR}/mail/xapian + +notmuch search \* +output=$(notmuch search \* | notmuch_search_sanitize) +test_expect_equal "$output" "\ +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; One (inbox tag1 unread) +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Two (inbox tag1 tag2 unread) +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Three (inbox tag3 unread)" + +test_done diff --git a/test/notmuch-test b/test/notmuch-test index aa28bb0..ec94baf 100755 --- a/test/notmuch-test +++ b/test/notmuch-test @@ -19,6 +19,7 @@ cd $(dirname "$0") TESTS=" basic help-test + compact config setup new -- 1.8.3.2
[PATCH 3/3] compact: Provide user with more error feedback
Tomi Ollila writes: > On Sun, Oct 27 2013, Ben Gamari wrote: > >> Provide instructions on what to do when we couldn't move the compacted >> database into place. >> >> Signed-off-by: Ben Gamari >> --- >> lib/database.cc | 18 +- >> 1 file changed, 17 insertions(+), 1 deletion(-) >> >> diff --git a/lib/database.cc b/lib/database.cc >> index 57c2292..6f9fed1 100644 >> --- a/lib/database.cc >> +++ b/lib/database.cc >> @@ -938,7 +938,23 @@ notmuch_database_compact (const char* path, >> } >> >> if (rename(compact_xapian_path, xapian_path)) { >> -fprintf (stderr, "Error moving compacted database\n"); >> +fprintf (stderr, "Error moving compacted database into place: %s\n", >> strerror(errno)); >> +fprintf (stderr, "\n"); >> +fprintf (stderr, "Encountered error %s while moving the compacted >> database,\n", >> + strerror(errno)); > > You probably missed my comments in id:m2d2mz7qv7.fsf at guru.guru-group.fi ? > Indeed I did. My apologies. New set coming. Cheers, - Ben -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 489 bytes Desc: not available URL: <http://notmuchmail.org/pipermail/notmuch/attachments/20131028/6c698f89/attachment.pgp>
[PATCH] lib: fix build on !HAVE_XAPIAN_COMPACT
On Mon, Oct 28 2013, Jani Nikula wrote: > Minimal change to build notmuch against xapian that doesn't have > compaction support. > --- LGTM. Tomi > lib/database.cc |4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/lib/database.cc b/lib/database.cc > index 06f1c0a..20e5ec2 100644 > --- a/lib/database.cc > +++ b/lib/database.cc > @@ -944,7 +944,9 @@ DONE: > } > #else > notmuch_status_t > -notmuch_database_compact_close (unused (notmuch_database_t *notmuch)) > +notmuch_database_compact (unused (const char* path), > + unused (const char* backup_path), > + unused (notmuch_compact_status_cb_t status_cb)) > { > fprintf (stderr, "notmuch was compiled against a xapian version lacking > compaction support.\n"); > return NOTMUCH_STATUS_UNSUPPORTED_OPERATION; > -- > 1.7.2.5 > > ___ > notmuch mailing list > notmuch at notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH v2] new: Don't scan unchanged directories with no sub-directories
Austin Clements writes: > This can substantially reduce the cost of notmuch new in some > situations, such as when the file system cache is cold or when the > Maildir is on NFS. > --- pushed as commit 516efb7807 d
[PATCH] lib: fix build on !HAVE_XAPIAN_COMPACT
Minimal change to build notmuch against xapian that doesn't have compaction support. --- lib/database.cc |4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/lib/database.cc b/lib/database.cc index 06f1c0a..20e5ec2 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -944,7 +944,9 @@ DONE: } #else notmuch_status_t -notmuch_database_compact_close (unused (notmuch_database_t *notmuch)) +notmuch_database_compact (unused (const char* path), + unused (const char* backup_path), + unused (notmuch_compact_status_cb_t status_cb)) { fprintf (stderr, "notmuch was compiled against a xapian version lacking compaction support.\n"); return NOTMUCH_STATUS_UNSUPPORTED_OPERATION; -- 1.7.2.5
[PATCH] emacs: Add a space after completed tag operations
Austin Clements writes: > Previously, when a user fully completed a tag operation, they had to > press space to begin entering another tag operation. This is > different from, say, shell file name completion, which typically > inserts a space after an unambiguous completion under the assumption > that the user will want to enter more input. pushed. d
[PATCH 3/3] compact: Provide user with more error feedback
On Sun, Oct 27 2013, Ben Gamari wrote: > Provide instructions on what to do when we couldn't move the compacted > database into place. > > Signed-off-by: Ben Gamari > --- > lib/database.cc | 18 +- > 1 file changed, 17 insertions(+), 1 deletion(-) > > diff --git a/lib/database.cc b/lib/database.cc > index 57c2292..6f9fed1 100644 > --- a/lib/database.cc > +++ b/lib/database.cc > @@ -938,7 +938,23 @@ notmuch_database_compact (const char* path, > } > > if (rename(compact_xapian_path, xapian_path)) { > - fprintf (stderr, "Error moving compacted database\n"); > + fprintf (stderr, "Error moving compacted database into place: %s\n", > strerror(errno)); > + fprintf (stderr, "\n"); > + fprintf (stderr, "Encountered error %s while moving the compacted > database,\n", > + strerror(errno)); You probably missed my comments in id:m2d2mz7qv7.fsf at guru.guru-group.fi ? Tomi > + fprintf (stderr, "\n"); > + fprintf (stderr, "%s\n", compact_xapian_path); > + fprintf (stderr, "\n"); > + fprintf (stderr, "to\n"); > + fprintf (stderr, "\n"); > + fprintf (stderr, "%s\n", xapian_path); > + fprintf (stderr, "\n"); > + fprintf (stderr, "Please identify the reason for this and move the > compacted database into place manually.\n"); > + if (backup_path != NULL) { > + fprintf (stderr, "Otherwise, you can revert to the backup database > located at,\n"); > + fprintf (stderr, "\n"); > + fprintf (stderr, "%s\n", backup_path); > + } > ret = NOTMUCH_STATUS_FILE_ERROR; > goto DONE; > } > -- > 1.8.3.2 > > ___ > notmuch mailing list > notmuch at notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH] emacs: Add a space after completed tag operations
Austin Clements amdra...@mit.edu writes: Previously, when a user fully completed a tag operation, they had to press space to begin entering another tag operation. This is different from, say, shell file name completion, which typically inserts a space after an unambiguous completion under the assumption that the user will want to enter more input. pushed. d ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH] lib: fix build on !HAVE_XAPIAN_COMPACT
Minimal change to build notmuch against xapian that doesn't have compaction support. --- lib/database.cc |4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/lib/database.cc b/lib/database.cc index 06f1c0a..20e5ec2 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -944,7 +944,9 @@ DONE: } #else notmuch_status_t -notmuch_database_compact_close (unused (notmuch_database_t *notmuch)) +notmuch_database_compact (unused (const char* path), + unused (const char* backup_path), + unused (notmuch_compact_status_cb_t status_cb)) { fprintf (stderr, notmuch was compiled against a xapian version lacking compaction support.\n); return NOTMUCH_STATUS_UNSUPPORTED_OPERATION; -- 1.7.2.5 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH] lib: fix build on !HAVE_XAPIAN_COMPACT
On Mon, Oct 28 2013, Jani Nikula j...@nikula.org wrote: Minimal change to build notmuch against xapian that doesn't have compaction support. --- LGTM. Tomi lib/database.cc |4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/lib/database.cc b/lib/database.cc index 06f1c0a..20e5ec2 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -944,7 +944,9 @@ DONE: } #else notmuch_status_t -notmuch_database_compact_close (unused (notmuch_database_t *notmuch)) +notmuch_database_compact (unused (const char* path), + unused (const char* backup_path), + unused (notmuch_compact_status_cb_t status_cb)) { fprintf (stderr, notmuch was compiled against a xapian version lacking compaction support.\n); return NOTMUCH_STATUS_UNSUPPORTED_OPERATION; -- 1.7.2.5 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v2] new: Don't scan unchanged directories with no sub-directories
Austin Clements amdra...@mit.edu writes: This can substantially reduce the cost of notmuch new in some situations, such as when the file system cache is cold or when the Maildir is on NFS. --- pushed as commit 516efb7807 d ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: Re: [PATCH v2] new: Don't scan unchanged directories with no sub-directories
This can substantially reduce the cost of notmuch new in some situations, such as when the file system cache is cold or when the Maildir is on NFS. --- pushed as commit 516efb7807 Muchas gracias! -- Vlad ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH 3/3] compact: Provide user with more error feedback
Tomi Ollila tomi.oll...@iki.fi writes: On Sun, Oct 27 2013, Ben Gamari bgamari.f...@gmail.com wrote: Provide instructions on what to do when we couldn't move the compacted database into place. Signed-off-by: Ben Gamari bgamari.f...@gmail.com --- lib/database.cc | 18 +- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/database.cc b/lib/database.cc index 57c2292..6f9fed1 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -938,7 +938,23 @@ notmuch_database_compact (const char* path, } if (rename(compact_xapian_path, xapian_path)) { -fprintf (stderr, Error moving compacted database\n); +fprintf (stderr, Error moving compacted database into place: %s\n, strerror(errno)); +fprintf (stderr, \n); +fprintf (stderr, Encountered error %s while moving the compacted database,\n, + strerror(errno)); You probably missed my comments in id:m2d2mz7qv7@guru.guru-group.fi ? Indeed I did. My apologies. New set coming. Cheers, - Ben pgptHpiHJ_QFy.pgp Description: PGP signature ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH 2/4] compact: Give user more feedback on failure renaming
Provide the user with instructions after we fail to move the old un-compacted database out of the way. Signed-off-by: Ben Gamari bgamari.f...@gmail.com --- lib/database.cc | 9 - 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/database.cc b/lib/database.cc index 06f1c0a..57c2292 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -922,7 +922,14 @@ notmuch_database_compact (const char* path, if (old_xapian_path != NULL) { if (rename(xapian_path, old_xapian_path)) { - fprintf (stderr, Error moving old database out of the way\n); + fprintf (stderr, Error moving old database out of the way: %s\n, +strerror(errno)); + fprintf (stderr, \n); + fprintf (stderr, Old database: %s\n, xapian_path); + fprintf (stderr, Compacted database: %s\n, compact_xapian_path); + fprintf (stderr, \n); + fprintf (stderr, At this point it's probably best to remove the compacted database,\n); + fprintf (stderr, find the cause of this error, and try compacting again.\n); ret = NOTMUCH_STATUS_FILE_ERROR; goto DONE; } -- 1.8.3.2 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH 4/4] database: Handle error while deleting uncompacted database
We never checked to ensure that the rmtree() of the old database succeeded. Signed-off-by: Ben Gamari bgamari.f...@gmail.com --- lib/database.cc | 14 +- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/database.cc b/lib/database.cc index 34753ab..bfc5dac 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -934,7 +934,19 @@ notmuch_database_compact (const char* path, goto DONE; } } else { - rmtree(xapian_path); + if (rmtree(xapian_path)) { + fprintf (stderr, Error removing old database: %s\n, +strerror(errno)); + fprintf (stderr, \n); + fprintf (stderr, Old database: %s\n, xapian_path); + fprintf (stderr, \n); + fprintf (stderr, Please remove the old database and move the compacted one in to place manually with\n); + fprintf (stderr, \n); + fprintf (stderr, mv %s %s\n, compact_xapian_path, xapian_path); + fprintf (stderr, \n); + ret = NOTMUCH_STATUS_FILE_ERROR; + goto DONE; + } } if (rename(compact_xapian_path, xapian_path)) { -- 1.8.3.2 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH 1/4] test: Add compact test
Signed-off-by: Ben Gamari bgamari.f...@gmail.com --- test/compact | 35 +++ test/notmuch-test | 1 + 2 files changed, 36 insertions(+) create mode 100755 test/compact diff --git a/test/compact b/test/compact new file mode 100755 index 000..54e85ab --- /dev/null +++ b/test/compact @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +test_description='notmuch compact' +. ./test-lib.sh + +add_message '[subject]=One' +add_message '[subject]=Two' +add_message '[subject]=Three' + +notmuch tag +tag1 \* +notmuch tag +tag2 subject:Two +notmuch tag -tag1 +tag3 subject:Three + +test_begin_subtest Compacting +notmuch compact +test_expect_success compact notmuch compact + +notmuch search \* +output=$(notmuch search \* | notmuch_search_sanitize) +test_expect_equal $output \ +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; One (inbox tag1 unread) +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Two (inbox tag1 tag2 unread) +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Three (inbox tag3 unread) + +test_begin_subtest Restoring backup +rm -Rf ${TEST_TMPDIR}/mail/xapian +mv ${TEST_TMPDIR}/mail/xapian.old ${TEST_TMPDIR}/mail/xapian + +notmuch search \* +output=$(notmuch search \* | notmuch_search_sanitize) +test_expect_equal $output \ +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; One (inbox tag1 unread) +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Two (inbox tag1 tag2 unread) +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Three (inbox tag3 unread) + +test_done diff --git a/test/notmuch-test b/test/notmuch-test index aa28bb0..ec94baf 100755 --- a/test/notmuch-test +++ b/test/notmuch-test @@ -19,6 +19,7 @@ cd $(dirname $0) TESTS= basic help-test + compact config setup new -- 1.8.3.2 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch