Re: [PATCH v7.1 11/11] NEWS: news for reply enhancements
[notmuch-archives.git] / 86 / cc727bff38a99d7ba5d23a8a2e69bc5a09e895
1 Return-Path: <james@hackervisions.org>\r
2 X-Original-To: notmuch@notmuchmail.org\r
3 Delivered-To: notmuch@notmuchmail.org\r
4 Received: from localhost (localhost [127.0.0.1])\r
5         by olra.theworths.org (Postfix) with ESMTP id 4A82E431FBC\r
6         for <notmuch@notmuchmail.org>; Wed, 24 Feb 2010 11:28:27 -0800 (PST)\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
8 X-Spam-Flag: NO\r
9 X-Spam-Score: -0.422\r
10 X-Spam-Level: \r
11 X-Spam-Status: No, score=-0.422 tagged_above=-999 required=5\r
12         tests=[AWL=-0.523, BAYES_50=0.001, RDNS_DYNAMIC=0.1] autolearn=no\r
13 Received: from olra.theworths.org ([127.0.0.1])\r
14         by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
15         with ESMTP id qmHORpox0dLR for <notmuch@notmuchmail.org>;\r
16         Wed, 24 Feb 2010 11:28:26 -0800 (PST)\r
17 Received: from hackervisions.org (67-207-143-141.slicehost.net\r
18         [67.207.143.141])\r
19         by olra.theworths.org (Postfix) with ESMTP id DD272431FAE\r
20         for <notmuch@notmuchmail.org>; Wed, 24 Feb 2010 11:28:26 -0800 (PST)\r
21 Received: from john-marshall.sflc.info ([216.27.154.200]\r
22         helo=wyzanski.hackervisions.org)\r
23         by hv with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.69)\r
24         (envelope-from <james@hackervisions.org>)\r
25         id 1NkMuF-0006dk-TC; Wed, 24 Feb 2010 14:28:24 -0500\r
26 Date: Wed, 24 Feb 2010 14:28:16 -0500\r
27 Message-ID: <878waiwi0f.wl%james@hackervisions.org>\r
28 From: James Vasile <james@hackervisions.org>\r
29 To: notmuch@notmuchmail.org\r
30 In-Reply-To: <87vddnlxos.wl%james@hackervisions.org>\r
31 References: <87vddnlxos.wl%james@hackervisions.org>\r
32 X-Mailer: Wanderlust/2.15.6\r
33 User-Agent: SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=)\r
34         APEL/10.7 Emacs/23.1 (i486-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO)\r
35 MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka")\r
36 Content-Type: text/plain; charset=US-ASCII\r
37 Subject: Re: [notmuch] [PATCH] Calls to notmuch get queued and\r
38         executed        asynchronously.\r
39 X-BeenThere: notmuch@notmuchmail.org\r
40 X-Mailman-Version: 2.1.13\r
41 Precedence: list\r
42 List-Id: "Use and development of the notmuch mail system."\r
43         <notmuch.notmuchmail.org>\r
44 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
45         <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
46 List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
47 List-Post: <mailto:notmuch@notmuchmail.org>\r
48 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
49 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
50         <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
51 X-List-Received-Date: Wed, 24 Feb 2010 19:28:27 -0000\r
52 \r
53 Sleep between retrying asynchronous notmuch commands and check for\r
54 notmuch-process before firing off a new one\r
55 \r
56 If the db is locked when notmuch tries to write to it, an error is\r
57 reported to the client (in this case, notmuch.el).  Instead of\r
58 accepting that error, wait a small amount of time and then try again.\r
59 \r
60 Also, don't start multiple asynchronous processes.\r
61 ---\r
62  notmuch.el |   16 +++++++++++++---\r
63  1 files changed, 13 insertions(+), 3 deletions(-)\r
64 \r
65 diff --git a/notmuch.el b/notmuch.el\r
66 index 7fc63e9..31e89b9 100644\r
67 --- a/notmuch.el\r
68 +++ b/notmuch.el\r
69 @@ -1402,9 +1402,14 @@ args is a list of arguments to notmuch.  ex: (\"tag\" \"+list\"\r
70  \r
71  Calls to notmuch are queued and called asynchronously."\r
72    (setq notmuch-asynch-queue (append notmuch-asynch-queue (list args)))\r
73 -  (when (= (length notmuch-asynch-queue) 1)\r
74 +  (when (and (= (length notmuch-asynch-queue) 1)\r
75 +            (not (get-process "notmuch-process")))\r
76      (apply 'notmuch-call-notmuch-process-asynch (pop notmuch-asynch-queue))))\r
77 -  \r
78 +\r
79 +(defun notmuch-asynch-sleep-sentinel (process event)\r
80 +  "After we sleep, try a command from the notmuch queue"\r
81 +  (apply 'notmuch-call-notmuch-process-asynch (pop notmuch-asynch-queue)))\r
82 +\r
83  (defun notmuch-call-notmuch-process-asynch-sentinel (process event)\r
84    "Handle the exit of a notmuch asynch process.\r
85  \r
86 @@ -1416,11 +1421,16 @@ command, try it again."\r
87      (if (= (process-exit-status process) 0)\r
88         (kill-buffer (buffer-name (process-buffer process)))\r
89         (if (search-forward "Unable to acquire database write lock" nil t)\r
90 -           (apply 'notmuch-call-notmuch-process-asynch (cdr (process-command process)))\r
91 +           (progn\r
92 +             (push (cdr (process-command process)) notmuch-asynch-queue)\r
93 +             (set-process-sentinel \r
94 +              (start-process "notmuch-sleep" nil "sleep" "3")\r
95 +              'notmuch-asynch-sleep-sentinel))\r
96             (error (format "%s: %s" (join-string-list (process-command process))\r
97                            (buffer-string))))))\r
98    (apply 'notmuch-call-notmuch-process-asynch (pop notmuch-asynch-queue)))\r
99  \r
100 +\r
101  (defun notmuch-call-notmuch-process (&rest args)\r
102    "Synchronously invoke \"notmuch\" with the given list of arguments.\r
103  \r
104 -- \r
105 1.6.3.3\r
106 \r