[notmuch] [PATCH 1/2] Close message file after parsing message headers

2009-11-18 Thread Carl Worth
On Tue, 17 Nov 2009 13:15:25 -0800, Keith Packard  wrote:
> Threading the message also involves displaying the from and to contents,
> which requires opening the message file. The alternative to the fix I
> provided is to just parse all of the message headers when first opening
> the message; it could then be immediately closed and the hash referred
> to for all header data. Given the choice, just having the caller say
> when it has finished with a message is probably a reasonable option...

Hi Keith,

Once I finally got back on the ground again, I pushed out a revised
version of your patch, (didn't need the reply-to stuff anymore since I
had fixed that differently in the meantime).

I'm pretty happy with the state of this portion of the code now.

Thanks Keith and Mikhail for your input on and code to fix this bug.

-Carl



[notmuch] [PATCH 1/2] Close message file after parsing message headers

2009-11-17 Thread Mikhail Gusarov
Keeping unused files open helps to see "Too many open files" often.

Signed-off-by: Mikhail Gusarov 
---
 lib/message-file.c |5 +
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/lib/message-file.c b/lib/message-file.c
index 8a3f8ee..197ab01 100644
--- a/lib/message-file.c
+++ b/lib/message-file.c
@@ -325,6 +325,11 @@ notmuch_message_file_get_header (notmuch_message_file_t 
*message,
return decoded_value;
 }

+if (message->parsing_finished) {
+fclose (message->file);
+message->file = NULL;
+}
+
 if (message->line)
free (message->line);
 message->line = NULL;
-- 
1.6.3.3



[notmuch] [PATCH 1/2] Close message file after parsing message headers

2009-11-17 Thread Keith Packard
On Tue, 17 Nov 2009 09:13:27 -0800, Carl Worth  wrote:

> I didn't apply Keith's fix yet, because I think I'd rather just fix the
> indexer to store the In-Reply-To header in a separate term prefix from
> the term used for the References header[*]. That will then let us lookup
> the in-reply-to value later for thread constructions without having to
> open the original email file at all.

Threading the message also involves displaying the from and to contents,
which requires opening the message file. The alternative to the fix I
provided is to just parse all of the message headers when first opening
the message; it could then be immediately closed and the hash referred
to for all header data. Given the choice, just having the caller say
when it has finished with a message is probably a reasonable option...

-keith


[notmuch] [PATCH 1/2] Close message file after parsing message headers

2009-11-17 Thread Carl Worth
On Tue, 17 Nov 2009 21:28:37 +0600, Mikhail Gusarov  wrote:
> Keeping unused files open helps to see "Too many open files" often.
> 
> Signed-off-by: Mikhail Gusarov 
...
On Tue, 17 Nov 2009 21:28:38 +0600, Mikhail Gusarov  wrote:
> 
> Signed-off-by: Mikhail Gusarov 
> ---
>  lib/message.cc |2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)

Hi Mikhail,

Welcome to notmuch, and thanks for these patches! I've pushed both of
them out now.

Keith ran into the same problem of "too many open files" and wrote a
more complex fix, (which included what you did here). His code can be
seen at:

git://keithp.com/git/notmuch

I didn't apply Keith's fix yet, because I think I'd rather just fix the
indexer to store the In-Reply-To header in a separate term prefix from
the term used for the References header[*]. That will then let us lookup
the in-reply-to value later for thread constructions without having to
open the original email file at all.

-Carl

[*] Yes, this is my first post to our new mailing list and I'm already
spouting off about "terms" and "prefixes" without any definitions. I
apologize for that. I hope that people will ask questions freely here on
the list whenever anything is not clear, and I'll be glad to explain
things as needed. (Then when can shove answers into a HACKING document.)

PS. This reply is a great example of a feature that notmuch *almost*
supports already---repling to multiple messages at once. The "notmuch
reply" command line does everything necessary to make this work, but we
haven't yet hooked up any keybindings for this in the emacs client yet.
Obviously, 'r' from the search view could reply to the entire thread.
But when viewing a thread, anyone have a good keybinding suggestion?
(There's obviously 'R' as opposed to 'r', but I think we'll probably
want to distinguish "reply to sender" from "reply to all" before trying
to distinguish "reply to message" from "reply to thread" (which I
imagine is more rare of an operation).