[PATCH v2] new: Don't scan unchanged directories with no sub-directories

2013-10-28 Thread Vladimir Marek
> > 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

2013-10-28 Thread Ben Gamari
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

2013-10-28 Thread Ben Gamari
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

2013-10-28 Thread Ben Gamari
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

2013-10-28 Thread Ben Gamari
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

2013-10-28 Thread Ben Gamari
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

2013-10-28 Thread Tomi Ollila
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

2013-10-28 Thread David Bremner
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

2013-10-28 Thread Jani Nikula
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

2013-10-28 Thread David Bremner
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

2013-10-28 Thread Tomi Ollila
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

2013-10-28 Thread David Bremner
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

2013-10-28 Thread Jani Nikula
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

2013-10-28 Thread Tomi Ollila
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

2013-10-28 Thread David Bremner
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

2013-10-28 Thread Vladimir Marek
  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

2013-10-28 Thread Ben Gamari
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

2013-10-28 Thread Ben Gamari
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

2013-10-28 Thread Ben Gamari
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

2013-10-28 Thread Ben Gamari
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