unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: David Bremner <david@tethera.net>
To: Gaute Hope <eg@gaute.vetsj.com>, notmuch@notmuchmail.org
Subject: Re: [RFC patch 2/2] lib: handle DatabaseModifiedError in _n_message_ensure_metadata
Date: Thu, 23 Feb 2017 22:49:02 -0400	[thread overview]
Message-ID: <87efyo2ti9.fsf@tethera.net> (raw)
In-Reply-To: <20170224020048.10718-2-david@tethera.net>

David Bremner <david@tethera.net> writes:

> The error handling here still needs work. The retry count should be
> handled in more sane way, and both running out of retries and an error
> return from notmuch_database_reopen should be handled.

Probably the number of retries can be limited to 1, since afaict, reopen
is not going to return any recoverable errors.

Gaute's test program seems run to completion without any source
modifications.

One general comment about this approach is that it does not do anything
about any the metadata that may be cached by notmuch for other
messages. Roughly speaking the behaviour should be atomic with respect
to messages, but not e.g. within threads. A message read earlier may not
reflect changes seen in a later one. That potential inconsistency would
only occur in cases currently resulting in crashes.

It is possible there is some scheme we can use to invalidate all of the
cached metadata. Here's an initial idea. The notmuch_database_t object
keeps a counter/timestamp which indicates the last time it was
invalidated. Each message object has a counter/timestamp indicating the
last time it it was synced/validated. Instead of checking if some
pointer is null force a read, we'd have to compare these two counters. I
think the main counter could be set to zero by database_open and
incremented by database_reopen

  reply	other threads:[~2017-02-24  2:49 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-18 14:45 add status value to _notmuch_message_ensure_metadata David Bremner
2017-02-18 14:45 ` [PATCH 1/8] lib: make _notmuch_message_ensure_metadata static David Bremner
2017-02-23 12:59   ` David Bremner
2017-02-18 14:45 ` [PATCH 2/8] lib: add status return to _notmuch_message_ensure_metadata David Bremner
2017-02-18 14:45 ` [PATCH 3/8] lib: propagate error return from some calls to _n_m_e_metadata David Bremner
2017-02-18 14:45 ` [PATCH 4/8] lib: push error from nme_metadata through nme_filename_list David Bremner
2017-02-18 14:45 ` [PATCH 5/8] lib: make _notmuch_message_ensure_property_map static David Bremner
2017-02-18 14:45 ` [PATCH 6/8] lib: propagate errors from nme_metadata through properties API David Bremner
2017-02-18 14:45 ` [PATCH 7/8] lib: add notmuch_message_get_database to public API David Bremner
2017-02-18 14:45 ` [PATCH 8/8] lib: add status return to notmuch_message_get_flag David Bremner
2017-02-20  9:27 ` add status value to _notmuch_message_ensure_metadata Gaute Hope
2017-02-20  9:44   ` Gaute Hope
2017-02-23  0:58     ` David Bremner
2017-02-23  7:46       ` Gaute Hope
2017-02-23 11:59         ` David Bremner
2017-02-24  2:00           ` [RFC patch 1/2] lib: add notmuch_database_reopen David Bremner
2017-02-24  2:00             ` [RFC patch 2/2] lib: handle DatabaseModifiedError in _n_message_ensure_metadata David Bremner
2017-02-24  2:49               ` David Bremner [this message]
2017-02-24 10:21                 ` Gaute Hope
2017-02-24 11:40                   ` David Bremner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87efyo2ti9.fsf@tethera.net \
    --to=david@tethera.net \
    --cc=eg@gaute.vetsj.com \
    --cc=notmuch@notmuchmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).