[PATCH 4/4] Update NEWS for user.other_name
[notmuch-archives.git] / f8 / df11d0939914b6ca19b340e6203c2f7cf8b436
1 Return-Path: <aclements@csail.mit.edu>\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 19362431FD8\r
6         for <notmuch@notmuchmail.org>; Sun, 12 Oct 2014 23:20:26 -0700 (PDT)\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
8 X-Spam-Flag: NO\r
9 X-Spam-Score: -2.3\r
10 X-Spam-Level: \r
11 X-Spam-Status: No, score=-2.3 tagged_above=-999 required=5\r
12         tests=[RCVD_IN_DNSWL_MED=-2.3] autolearn=disabled\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 mq5YbDnu2QYv for <notmuch@notmuchmail.org>;\r
16         Sun, 12 Oct 2014 23:20:18 -0700 (PDT)\r
17 Received: from dmz-mailsec-scanner-6.mit.edu (dmz-mailsec-scanner-6.mit.edu\r
18         [18.7.68.35])\r
19         (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))\r
20         (No client certificate requested)\r
21         by olra.theworths.org (Postfix) with ESMTPS id 7E3C2431FBD\r
22         for <notmuch@notmuchmail.org>; Sun, 12 Oct 2014 23:20:14 -0700 (PDT)\r
23 X-AuditID: 12074423-f799d6d00000337c-0b-543b6f1c3870\r
24 Received: from mailhub-auth-4.mit.edu ( [18.7.62.39])\r
25         (using TLS with cipher AES256-SHA (256/256 bits))\r
26         (Client did not present a certificate)\r
27         by dmz-mailsec-scanner-6.mit.edu (Symantec Messaging Gateway) with SMTP\r
28         id BF.74.13180.C1F6B345; Mon, 13 Oct 2014 02:20:12 -0400 (EDT)\r
29 Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11])\r
30         by mailhub-auth-4.mit.edu (8.13.8/8.9.2) with ESMTP id s9D6K8wt019181; \r
31         Mon, 13 Oct 2014 02:20:08 -0400\r
32 Received: from drake.dyndns.org ([73.162.189.21]) (authenticated bits=0)\r
33         (User authenticated as amdragon@ATHENA.MIT.EDU)\r
34         by outgoing.mit.edu (8.13.8/8.12.4) with ESMTP id s9D6K5Ve031972\r
35         (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT);\r
36         Mon, 13 Oct 2014 02:20:07 -0400\r
37 Received: from amthrax by drake.dyndns.org with local (Exim 4.84)\r
38         (envelope-from <aclements@csail.mit.edu>)\r
39         id 1XdYzF-0000U8-8L; Mon, 13 Oct 2014 02:20:05 -0400\r
40 From: Austin Clements <aclements@csail.mit.edu>\r
41 To: notmuch@notmuchmail.org\r
42 Subject: [WIP PATCH 1/4] lib: Only sync modified message documents\r
43 Date: Mon, 13 Oct 2014 02:20:00 -0400\r
44 Message-Id: <1413181203-1676-2-git-send-email-aclements@csail.mit.edu>\r
45 X-Mailer: git-send-email 2.1.0\r
46 In-Reply-To: <1413181203-1676-1-git-send-email-aclements@csail.mit.edu>\r
47 References: <1413181203-1676-1-git-send-email-aclements@csail.mit.edu>\r
48 X-Brightmail-Tracker:\r
49  H4sIAAAAAAAAA+NgFtrIIsWRmVeSWpSXmKPExsUixG6nriuTbx1i0Phc3eL6zZnMDowez1bd\r
50         Yg5gjOKySUnNySxLLdK3S+DKaJ6yjL1gj1jFm5lHmRoYfwp2MXJySAiYSOy7cosNwhaTuHBv\r
51         PZDNxSEkMJtJ4vfZ21DORkaJtXdgnOVMEt9erWeFcJYwSpxq6GUF6WcT0JdYsXYSmC0iIC2x\r
52         8+5sIJuDg1lATeJPlwqIKSzgJPFvtQ5IBYuAqkTbrxcsIGFeATeJTb8DIY6Qk9iw+z8jiM0p\r
53         4C5xceJZZhBbCKjkWNs1lgmM/AsYGVYxyqbkVunmJmbmFKcm6xYnJ+blpRbpmunlZpbopaaU\r
54         bmIEh4yL8g7GPweVDjEKcDAq8fBa/rEKEWJNLCuuzD3EKMnBpCTKG5BmHSLEl5SfUpmRWJwR\r
55         X1Sak1p8iFGCg1lJhPetDVCONyWxsiq1KB8mJc3BoiTOu+kHX4iQQHpiSWp2ampBahFMVoaD\r
56         Q0mCVz0PqFGwKDU9tSItM6cEIc3EwQkynAdoeEsOyPDigsTc4sx0iPwpRkUpcd7vuUAJAZBE\r
57         RmkeXC8spl8xigO9IswbB7KCB5gO4LpfAQ1mAhp8tMscZHBJIkJKqoHRKvn1kWvVgTzq29VT\r
58         znlHTdfc9OtsTXB7vKLjogk6urG7nj8zrfAR60+o0FirNtmN0znkvf+dQq9c/a3Pwy+1lCdc\r
59         3OWcy5R/1NpBofE2j7qBdATLFFblOWvNNqxTdte9wnE9NIL56sStt5eWXrqrWtYmmxy1dUXo\r
60         zSvcx7paObLk9x5bpqPEUpyRaKjFXFScCAAjIfjwxAIAAA==\r
61 X-BeenThere: notmuch@notmuchmail.org\r
62 X-Mailman-Version: 2.1.13\r
63 Precedence: list\r
64 List-Id: "Use and development of the notmuch mail system."\r
65         <notmuch.notmuchmail.org>\r
66 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
67         <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
68 List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
69 List-Post: <mailto:notmuch@notmuchmail.org>\r
70 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
71 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
72         <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
73 X-List-Received-Date: Mon, 13 Oct 2014 06:20:26 -0000\r
74 \r
75 From: Austin Clements <amdragon@mit.edu>\r
76 \r
77 Previously, we updated the database copy of a message on every call to\r
78 _notmuch_message_sync, even if nothing had changed.  In particular,\r
79 this always happens on a thaw, so a freeze/thaw pair with no\r
80 modifications between still caused a database update.\r
81 \r
82 We only modify message documents in a handful of places, so keep track\r
83 of whether the document has been modified and only sync it when\r
84 necessary.  This will be particularly important when we add message\r
85 revision tracking.\r
86 ---\r
87  lib/message.cc | 12 ++++++++++++\r
88  1 file changed, 12 insertions(+)\r
89 \r
90 diff --git a/lib/message.cc b/lib/message.cc\r
91 index a7a13cc..cf2fd7c 100644\r
92 --- a/lib/message.cc\r
93 +++ b/lib/message.cc\r
94 @@ -43,6 +43,9 @@ struct visible _notmuch_message {\r
95       * if each flag has been initialized. */\r
96      unsigned long lazy_flags;\r
97  \r
98 +    /* Message document modified since last sync */\r
99 +    notmuch_bool_t modified;\r
100 +\r
101      Xapian::Document doc;\r
102      Xapian::termcount termpos;\r
103  };\r
104 @@ -538,6 +541,7 @@ _notmuch_message_remove_terms (notmuch_message_t *message, const char *prefix)\r
105  \r
106         try {\r
107             message->doc.remove_term ((*i));\r
108 +           message->modified = TRUE;\r
109         } catch (const Xapian::InvalidArgumentError) {\r
110             /* Ignore failure to remove non-existent term. */\r
111         }\r
112 @@ -791,6 +795,7 @@ void\r
113  _notmuch_message_clear_data (notmuch_message_t *message)\r
114  {\r
115      message->doc.set_data ("");\r
116 +    message->modified = TRUE;\r
117  }\r
118  \r
119  static void\r
120 @@ -988,6 +993,7 @@ _notmuch_message_set_header_values (notmuch_message_t *message,\r
121                             Xapian::sortable_serialise (time_value));\r
122      message->doc.add_value (NOTMUCH_VALUE_FROM, from);\r
123      message->doc.add_value (NOTMUCH_VALUE_SUBJECT, subject);\r
124 +    message->modified = TRUE;\r
125  }\r
126  \r
127  /* Synchronize changes made to message->doc out into the database. */\r
128 @@ -999,8 +1005,12 @@ _notmuch_message_sync (notmuch_message_t *message)\r
129      if (message->notmuch->mode == NOTMUCH_DATABASE_MODE_READ_ONLY)\r
130         return;\r
131  \r
132 +    if (! message->modified)\r
133 +       return;\r
134 +\r
135      db = static_cast <Xapian::WritableDatabase *> (message->notmuch->xapian_db);\r
136      db->replace_document (message->doc_id, message->doc);\r
137 +    message->modified = FALSE;\r
138  }\r
139  \r
140  /* Delete a message document from the database. */\r
141 @@ -1075,6 +1085,7 @@ _notmuch_message_add_term (notmuch_message_t *message,\r
142         return NOTMUCH_PRIVATE_STATUS_TERM_TOO_LONG;\r
143  \r
144      message->doc.add_term (term, 0);\r
145 +    message->modified = TRUE;\r
146  \r
147      talloc_free (term);\r
148  \r
149 @@ -1143,6 +1154,7 @@ _notmuch_message_remove_term (notmuch_message_t *message,\r
150  \r
151      try {\r
152         message->doc.remove_term (term);\r
153 +       message->modified = TRUE;\r
154      } catch (const Xapian::InvalidArgumentError) {\r
155         /* We'll let the philosopher's try to wrestle with the\r
156          * question of whether failing to remove that which was not\r
157 -- \r
158 2.1.0\r
159 \r