* [PATCH] Compact tests and error handling
@ 2013-10-15 1:13 Ben Gamari
2013-10-15 1:13 ` [PATCH 1/3] test: Add compact test Ben Gamari
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Ben Gamari @ 2013-10-15 1:13 UTC (permalink / raw)
To: notmuch
Here are a few patches adding a test case and some more user feedback on
rename failure during compaction.
Cheers,
- Ben
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/3] test: Add compact test
2013-10-15 1:13 [PATCH] Compact tests and error handling Ben Gamari
@ 2013-10-15 1:13 ` Ben Gamari
2013-10-20 12:18 ` David Bremner
2013-10-15 1:13 ` [PATCH 2/3] compact: Give user more feedback on failure renaming Ben Gamari
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Ben Gamari @ 2013-10-15 1:13 UTC (permalink / raw)
To: notmuch
Signed-off-by: Ben Gamari <bgamari.foss@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 0000000..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.1.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/3] compact: Give user more feedback on failure renaming
2013-10-15 1:13 [PATCH] Compact tests and error handling Ben Gamari
2013-10-15 1:13 ` [PATCH 1/3] test: Add compact test Ben Gamari
@ 2013-10-15 1:13 ` Ben Gamari
2013-10-15 1:13 ` [PATCH 3/3] compact: Provide user with more error feedback Ben Gamari
2013-10-26 12:26 ` [PATCH] Compact tests and error handling David Bremner
3 siblings, 0 replies; 8+ messages in thread
From: Ben Gamari @ 2013-10-15 1:13 UTC (permalink / raw)
To: notmuch
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.foss@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.1.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/3] compact: Provide user with more error feedback
2013-10-15 1:13 [PATCH] Compact tests and error handling Ben Gamari
2013-10-15 1:13 ` [PATCH 1/3] test: Add compact test Ben Gamari
2013-10-15 1:13 ` [PATCH 2/3] compact: Give user more feedback on failure renaming Ben Gamari
@ 2013-10-15 1:13 ` Ben Gamari
2013-10-20 18:13 ` Tomi Ollila
2013-10-26 12:26 ` [PATCH] Compact tests and error handling David Bremner
3 siblings, 1 reply; 8+ messages in thread
From: Ben Gamari @ 2013-10-15 1:13 UTC (permalink / raw)
To: notmuch
Provide instructions on what to do when we couldn't move the compacted
database into place.
Signed-off-by: Ben Gamari <bgamari.foss@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));
+ 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.1.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] test: Add compact test
2013-10-15 1:13 ` [PATCH 1/3] test: Add compact test Ben Gamari
@ 2013-10-20 12:18 ` David Bremner
0 siblings, 0 replies; 8+ messages in thread
From: David Bremner @ 2013-10-20 12:18 UTC (permalink / raw)
To: Ben Gamari, notmuch
Hi Ben;
Thanks for writing these tests. I have some proposed changes. I didn't
understand why you called notmuch search twice, and for whatever reason
test_begin_subtest doesn't pair up with test_expect_success
diff --git a/test/compact b/test/compact
index 54e85ab..5bb5cea 100755
--- a/test/compact
+++ b/test/compact
@@ -10,11 +10,9 @@ 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"
+test_expect_success "Running compact" "notmuch compact"
-notmuch search \*
+test_begin_subtest "Compact preserves database"
output=$(notmuch search \* | notmuch_search_sanitize)
test_expect_equal "$output" "\
thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; One (inbox tag1 unread)
@@ -25,7 +23,6 @@ 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)
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 3/3] compact: Provide user with more error feedback
2013-10-15 1:13 ` [PATCH 3/3] compact: Provide user with more error feedback Ben Gamari
@ 2013-10-20 18:13 ` Tomi Ollila
0 siblings, 0 replies; 8+ messages in thread
From: Tomi Ollila @ 2013-10-20 18:13 UTC (permalink / raw)
To: Ben Gamari, notmuch
On Tue, Oct 15 2013, Ben Gamari <bgamari.foss@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.foss@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));
At this point 'errno' may have changed, so the above error string might not
be the same. Maybe removing the '%s ' part altogether as inserting the part
looks a bit strange...
> + 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");
the commas (,) here and a few lines above looks a bit strange to me.
> + fprintf (stderr, "\n");
> + fprintf (stderr, " %s\n", backup_path);
Maybe saying something how to do this revert would be enlightening to the
user... (i.e. mentioning that backup_path needs to be moved as xapian_path).
> + }
> ret = NOTMUCH_STATUS_FILE_ERROR;
> goto DONE;
> }
> --
Tomi
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Compact tests and error handling
2013-10-15 1:13 [PATCH] Compact tests and error handling Ben Gamari
` (2 preceding siblings ...)
2013-10-15 1:13 ` [PATCH 3/3] compact: Provide user with more error feedback Ben Gamari
@ 2013-10-26 12:26 ` David Bremner
2013-10-27 20:29 ` Ben Gamari
3 siblings, 1 reply; 8+ messages in thread
From: David Bremner @ 2013-10-26 12:26 UTC (permalink / raw)
To: Ben Gamari, notmuch
Ben Gamari <bgamari.foss@gmail.com> writes:
> Here are a few patches adding a test case and some more user feedback on
> rename failure during compaction.
>
Hi Ben;
I'd like to include this series in the next release, freezing on
Nov. 8. Will you have a chance to revise it before then?
d
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Compact tests and error handling
2013-10-26 12:26 ` [PATCH] Compact tests and error handling David Bremner
@ 2013-10-27 20:29 ` Ben Gamari
0 siblings, 0 replies; 8+ messages in thread
From: Ben Gamari @ 2013-10-27 20:29 UTC (permalink / raw)
To: David Bremner, notmuch
[-- Attachment #1: Type: text/plain, Size: 467 bytes --]
David Bremner <david@tethera.net> writes:
> Ben Gamari <bgamari.foss@gmail.com> writes:
>
>> Here are a few patches adding a test case and some more user feedback on
>> rename failure during compaction.
>>
>
> Hi Ben;
>
> I'd like to include this series in the next release, freezing on
> Nov. 8. Will you have a chance to revise it before then?
>
Yes, I actually have the set sitting around waiting to be sent out. I'll
take care of this right now.
Cheers,
- Ben
[-- Attachment #2: Type: application/pgp-signature, Size: 489 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-10-27 20:30 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-10-15 1:13 [PATCH] Compact tests and error handling Ben Gamari
2013-10-15 1:13 ` [PATCH 1/3] test: Add compact test Ben Gamari
2013-10-20 12:18 ` David Bremner
2013-10-15 1:13 ` [PATCH 2/3] compact: Give user more feedback on failure renaming Ben Gamari
2013-10-15 1:13 ` [PATCH 3/3] compact: Provide user with more error feedback Ben Gamari
2013-10-20 18:13 ` Tomi Ollila
2013-10-26 12:26 ` [PATCH] Compact tests and error handling David Bremner
2013-10-27 20:29 ` Ben Gamari
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).