unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* [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).