Re: automatic database upgrades (was: Re: [PATCH 0/7] cli: notmuch new improvements)
authorMark Walters <markwalters1009@gmail.com>
Sat, 25 Jan 2014 17:32:04 +0000 (17:32 +0000)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 17:59:21 +0000 (09:59 -0800)
18/43147aa5313531c5f18ec7981824bfd8226803 [new file with mode: 0644]

diff --git a/18/43147aa5313531c5f18ec7981824bfd8226803 b/18/43147aa5313531c5f18ec7981824bfd8226803
new file mode 100644 (file)
index 0000000..4befb65
--- /dev/null
@@ -0,0 +1,170 @@
+Return-Path: <m.walters@qmul.ac.uk>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id 17F4A431FBD\r
+       for <notmuch@notmuchmail.org>; Sat, 25 Jan 2014 09:34:48 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: -1.098\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=-1.098 tagged_above=-999 required=5\r
+       tests=[DKIM_ADSP_CUSTOM_MED=0.001, FREEMAIL_FROM=0.001,\r
+       NML_ADSP_CUSTOM_MED=1.2, RCVD_IN_DNSWL_MED=-2.3] autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id 5RfQtks94255 for <notmuch@notmuchmail.org>;\r
+       Sat, 25 Jan 2014 09:34:40 -0800 (PST)\r
+Received: from mail2.qmul.ac.uk (mail2.qmul.ac.uk [138.37.6.6])\r
+       (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))\r
+       (No client certificate requested)\r
+       by olra.theworths.org (Postfix) with ESMTPS id D1B95431FBC\r
+       for <notmuch@notmuchmail.org>; Sat, 25 Jan 2014 09:34:39 -0800 (PST)\r
+Received: from smtp.qmul.ac.uk ([138.37.6.40])\r
+       by mail2.qmul.ac.uk with esmtp (Exim 4.71)\r
+       (envelope-from <m.walters@qmul.ac.uk>)\r
+       id 1W777i-0003An-LB; Sat, 25 Jan 2014 17:34:32 +0000\r
+Received: from 93-97-24-31.zone5.bethere.co.uk ([93.97.24.31] helo=localhost)\r
+       by smtp.qmul.ac.uk with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.71)\r
+       (envelope-from <m.walters@qmul.ac.uk>)\r
+       id 1W776p-00073r-9V; Sat, 25 Jan 2014 17:33:31 +0000\r
+From: Mark Walters <markwalters1009@gmail.com>\r
+To: Jani Nikula <jani@nikula.org>, notmuch@notmuchmail.org\r
+Subject: Re: automatic database upgrades (was: Re: [PATCH 0/7] cli: notmuch\r
+       new improvements)\r
+In-Reply-To: <87lhy4f6pr.fsf@nikula.org>\r
+References: <cover.1390163335.git.jani@nikula.org> <87ppnga21o.fsf@qmul.ac.uk>\r
+       <87lhy4f6pr.fsf@nikula.org>\r
+User-Agent: Notmuch/0.15.2+484~gfb59956 (http://notmuchmail.org) Emacs/23.4.1\r
+       (x86_64-pc-linux-gnu)\r
+Date: Sat, 25 Jan 2014 17:32:04 +0000\r
+Message-ID: <87fvoc9dd7.fsf@qmul.ac.uk>\r
+MIME-Version: 1.0\r
+Content-Type: text/plain; charset=us-ascii\r
+X-Sender-Host-Address: 93.97.24.31\r
+X-QM-Geographic: According to ripencc,\r
+       this message was delivered by a machine in Britain (UK) (GB).\r
+X-QM-SPAM-Info: Sender has good ham record.  :)\r
+X-QM-Body-MD5: fad9b9e59c7a2386aac17b9357b9d26b (of first 20000 bytes)\r
+X-SpamAssassin-Score: 0.0\r
+X-SpamAssassin-SpamBar: /\r
+X-SpamAssassin-Report: The QM spam filters have analysed this message to\r
+       determine if it is\r
+       spam. We require at least 5.0 points to mark a message as spam.\r
+       This message scored 0.0 points. Summary of the scoring: \r
+       * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\r
+       provider *      (markwalters1009[at]gmail.com)\r
+       *  0.0 AWL AWL: From: address is in the auto white-list\r
+X-QM-Scan-Virus: ClamAV says the message is clean\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Sat, 25 Jan 2014 17:34:48 -0000\r
+\r
+\r
+Thanks for posting this. You are quite right about it being orthogonal\r
+to this series so a clear +1 from me for the series.\r
+\r
+What about a config option? Something like\r
+database_auto_upgrade=true/false? I wouldn't have a strong preference\r
+which was the default (though I would choose "false" in my own\r
+config). I guess we would need a command line --upgrade to allow people\r
+with database_auto_upgrade=false to do force/allow the upgrade.\r
+\r
+Best wishes\r
+\r
+Mark\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+On Sat, 25 Jan 2014, Jani Nikula <jani@nikula.org> wrote:\r
+> On Sat, 25 Jan 2014, Mark Walters <markwalters1009@gmail.com> wrote:\r
+>> This series LGTM.\r
+>\r
+> Hi Mark, thanks for the review!\r
+>\r
+>> I do now recall there was some discussion on irc about the automatic\r
+>> database upgrade: it would be good to have that documented but the\r
+>> consensus was to do it, so +1 from me.\r
+>\r
+> Here's some summary, as promised. Please bear in mind that the\r
+> discussion is pretty much irrelevant to this particular patch\r
+> series. (We might discuss whether a warning about upgrade should be\r
+> printed to stderr also with --quiet, but IMHO that can be a follow-up\r
+> patch.)\r
+>\r
+> A database upgrade is required when the user upgrades to a new version\r
+> of notmuch that has a modified database schema. See\r
+> id:cover.1389304779.git.jani@nikula.org for an example of a proposed\r
+> database change.\r
+>\r
+> A database upgrade is a rare event. Most of the time, it's okay to go\r
+> back and forth with notmuch versions on the same database, but a\r
+> database upgrade is an irreversible process after which the user must\r
+> use the new version of notmuch. To go back requires a full rebuild of\r
+> the database.\r
+>\r
+> We don't have recent experience with the database upgrades. The last\r
+> time it happened was before notmuch 0.1 (yes, 0.1) was released, when\r
+> the whole upgrade mechanism was introduced:\r
+>\r
+> commit 909f52bd8c4bdfa11cd3e75e3d0959e0293689bd\r
+> Author: Carl Worth <cworth@cworth.org>\r
+> Date:   Thu Jan 7 18:26:31 2010 -0800\r
+>\r
+>     lib: Implement versioning in the database and provide upgrade function.\r
+>\r
+> Some of the points in favor of requiring manual intervention (such as\r
+> running 'notmuch new --upgrade' or a new command 'notmuch upgrade')\r
+> before upgrading the database:\r
+>\r
+> * The database upgrade is an irreversible process. The user should have\r
+>   a chance to decide whether to go ahead with that. You can't go back to\r
+>   the old notmuch and database version without rebuilding the database.\r
+>\r
+> * The user should be given the chance to make backups first in case\r
+>   something goes wrong.\r
+>\r
+> * The database upgrade might take a long time for large databases. The\r
+>   user should be able to choose when to go ahead with that.\r
+>\r
+> Some of the points in favor of upgrading automatically:\r
+>\r
+> * cworth: "One potential concern is that [requiring manual intervention]\r
+>   effectively breaks notmuch until the user intervenese and runs this\r
+>   new command. So that can complicate things for any interface that sits\r
+>   on top of notmuch."\r
+>\r
+> * cworth: "In general, I'm often frustrated with programs that say "I\r
+>   cannot continue until you run command <foo>.". If command <foo> needs\r
+>   to be run, and the software knows it, why doesn't it just run it\r
+>   itself? [...] So a message like "Run 'notmuch upgrade'" seems it could\r
+>   corrode the user's trust in notmuch to maintain its own state."\r
+>\r
+> * There are people who run notmuch new non-interactively. There's no\r
+>   easy answer to handling that if manual intervention is required.\r
+>\r
+> * It should always be okay to kill the upgrade, and continue at a later\r
+>   time, in case it takes too long.\r
+>\r
+> Reading the logs again, I'm not so confident about us reaching a\r
+> concensus. Maybe it was just me changing my mind during the course of\r
+> the discussion... so we can try to reach concensus here.\r
+>\r
+>\r
+> BR,\r
+> Jani.\r