Gnus development mailing list
 help / color / mirror / Atom feed
From: "Jouni K. Seppänen" <jks@iki.fi>
Subject: Re: Slow expiry with nnimap+Courier [patch]
Date: Fri, 29 Dec 2006 16:22:46 +0200	[thread overview]
Message-ID: <m2vejuzsqx.fsf@hella.local> (raw)
In-Reply-To: <m2lkkujzmu.fsf@hella.local>

[-- Attachment #1: Type: text/plain, Size: 128 bytes --]

jks@iki.fi (Jouni K. Seppänen) writes:

> I'll take another look at this once I have some more time.

Here's an updated patch.


[-- Attachment #2: nnimap-doc.patch --]
[-- Type: text/x-patch, Size: 8437 bytes --]

Index: lisp/ChangeLog
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/ChangeLog,v
retrieving revision 7.1442
diff -u -r7.1442 ChangeLog
--- lisp/ChangeLog	26 Dec 2006 20:08:05 -0000	7.1442
+++ lisp/ChangeLog	29 Dec 2006 14:04:35 -0000
@@ -1,3 +1,8 @@
+2006-12-29  Jouni K. Seppänen  <jks@iki.fi>
+
+	* nnimap.el (nnimap-expunge-search-string): Mention
+	nnimap-search-uids-not-since-is-evil in docstring.
+
 2006-12-26  Reiner Steib  <Reiner.Steib@gmx.de>
 
 	* gnus-msg.el (gnus-message-citation-mode): Fix autoload.
Index: lisp/nnimap.el
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/nnimap.el,v
retrieving revision 7.32
diff -u -r7.32 nnimap.el
--- lisp/nnimap.el	21 Mar 2006 19:58:50 -0000	7.32
+++ lisp/nnimap.el	29 Dec 2006 14:04:36 -0000
@@ -375,7 +375,10 @@
 One useful (and perhaps the only useful) value to change this to would
 be `UID %s NOT SENTSINCE %s' to make nnimap use the Date: header
 instead of the internal date of messages.  See section 6.4.4 of RFC
-2060 for more information on valid strings.")
+2060 for more information on valid strings.
+
+However, if `nnimap-search-uids-not-since-is-evil' is true, this
+variable has no effect since the search logic is reversed.")
 
 (defvoo nnimap-importantize-dormant t
   "If non-nil, mark \"dormant\" articles as \"ticked\" for other IMAP clients.
Index: texi/ChangeLog
===================================================================
RCS file: /usr/local/cvsroot/gnus/texi/ChangeLog,v
retrieving revision 7.295
diff -u -r7.295 ChangeLog
--- texi/ChangeLog	26 Dec 2006 17:10:01 -0000	7.295
+++ texi/ChangeLog	29 Dec 2006 14:04:36 -0000
@@ -1,3 +1,10 @@
+2006-12-29  Jouni K. Seppänen  <jks@iki.fi>
+
+	* gnus.texi: Add index terms related to expiry.
+	(IMAP): Document variables nnimap-nov-is-evil and
+	nnimap-search-uids-not-since-is-evil. Mention latter in connection
+	with nnimap-expunge-search-string and in the section on expiring.
+
 2006-12-26  Reiner Steib  <Reiner.Steib@gmx.de>
 
 	* gnus-news.texi: Add gnus-message-highlight-citation.
Index: texi/gnus.texi
===================================================================
RCS file: /usr/local/cvsroot/gnus/texi/gnus.texi,v
retrieving revision 7.201
diff -u -r7.201 gnus.texi
--- texi/gnus.texi	26 Dec 2006 17:10:01 -0000	7.201
+++ texi/gnus.texi	29 Dec 2006 14:04:42 -0000
@@ -2839,6 +2839,7 @@
 
 @item auto-expire
 @cindex auto-expire
+@cindex expiring mail
 If the group parameter has an element that looks like @code{(auto-expire
 . t)}, all articles read will be marked as expirable.  For an
 alternative approach, @pxref{Expiring Mail}.
@@ -2847,6 +2848,7 @@
 
 @item total-expire
 @cindex total-expire
+@cindex expiring mail
 If the group parameter has an element that looks like
 @code{(total-expire . t)}, all read articles will be put through the
 expiry process, even if they are not marked as expirable.  Use with
@@ -3477,6 +3479,7 @@
 @item C-c C-x
 @kindex C-c C-x (Group)
 @findex gnus-group-expire-articles
+@cindex expiring mail
 Run all expirable articles in the current group through the expiry
 process (if any) (@code{gnus-group-expire-articles}).  That is, delete
 all expirable articles in the group that have been around for a while.
@@ -3485,6 +3488,7 @@
 @item C-c C-M-x
 @kindex C-c C-M-x (Group)
 @findex gnus-group-expire-all-groups
+@cindex expiring mail
 Run all expirable articles in all groups through the expiry process
 (@code{gnus-group-expire-all-groups}).
 
@@ -3845,6 +3849,7 @@
 @item C-c C-x
 @kindex C-c C-x (Topic)
 @findex gnus-topic-expire-articles
+@cindex expiring mail
 Run all expirable articles in the current group or topic through the
 expiry process (if any)
 (@code{gnus-topic-expire-articles}).  (@pxref{Expiring Mail}).
@@ -10214,6 +10219,7 @@
 @item B e
 @kindex B e (Summary)
 @findex gnus-summary-expire-articles
+@cindex expiring mail
 Run all expirable articles in the current group through the expiry
 process (@code{gnus-summary-expire-articles}).  That is, delete all
 expirable articles in the group that have been around for a while.
@@ -10222,6 +10228,7 @@
 @item B C-M-e
 @kindex B C-M-e (Summary)
 @findex gnus-summary-expire-articles-now
+@cindex expiring mail
 Delete all the expirable articles in the group
 (@code{gnus-summary-expire-articles-now}).  This means that @strong{all}
 articles eligible for expiry in the current group will
@@ -14803,6 +14810,7 @@
 @node Expiring Mail
 @subsection Expiring Mail
 @cindex article expiry
+@cindex expiring mail
 
 Traditional mail readers have a tendency to remove mail articles when
 you mark them as read, in some way.  Gnus takes a fundamentally
@@ -16761,6 +16769,7 @@
 @item nnimap-expunge-search-string
 @cindex expunging
 @vindex nnimap-expunge-search-string
+@cindex expiring @acronym{IMAP} mail
 
 This variable contain the @acronym{IMAP} search command sent to server when
 searching for articles eligible for expiring.  The default is
@@ -16772,6 +16781,10 @@
 messages instead of the internal article date.  See section 6.4.4 of
 RFC 2060 for more information on valid strings.
 
+However, if @code{nnimap-search-uids-not-since-is-evil} 
+is true, this variable has no effect since the search logic
+is reversed, as described below.
+
 @item nnimap-authinfo-file
 @vindex nnimap-authinfo-file
 
@@ -16797,6 +16810,47 @@
 seem to need this under some circumstances; it was reported that
 Courier 1.7.1 did.
 
+@item nnimap-nov-is-evil
+@vindex nnimap-nov-is-evil
+@cindex Courier @acronym{IMAP} server
+@cindex @acronym{NOV}
+
+Never generate or use a local @acronym{NOV} database. Defaults to the
+value of @code{gnus-agent}.
+
+Using a @acronym{NOV} database usually makes header fetching much
+faster, but it uses the @code{UID SEARCH UID} command, which is very
+slow on some servers (notably some versions of Courier). Since the Gnus
+Agent caches the information in the @acronym{NOV} database without using
+the slow command, this variable defaults to true if the Agent is in use,
+and false otherwise.
+
+@item nnimap-search-uids-not-since-is-evil
+@vindex nnimap-search-uids-not-since-is-evil
+@cindex Courier @acronym{IMAP} server
+@cindex expiring @acronym{IMAP} mail
+
+Avoid the @code{UID SEARCH UID @var{message numbers} NOT SINCE
+@var{date}} command, which is slow on some @acronym{IMAP} servers
+(notably, some versions of Courier). Instead, use @code{UID SEARCH SINCE
+@var{date}} and prune the list of expirable articles within Gnus.
+
+When Gnus expires your mail (@pxref{Expiring Mail}), it starts with a
+list of expirable articles and asks the IMAP server questions like ``Of
+these articles, which ones are older than a week?'' While this seems
+like a perfectly reasonable question, some IMAP servers take a long time
+to answer it, since they seemingly go looking into every old article to
+see if it is one of the expirable ones. Curiously, the question ``Of
+@emph{all} articles, which ones are newer than a week?'' seems to be
+much faster to answer, so setting this variable causes Gnus to ask this
+question and figure out the answer to the real question itself.
+
+This problem can really sneak up on you: when you first configure Gnus,
+everything works fine, but once you accumulate a couple thousand
+messages, you start cursing Gnus for being so slow. On the other hand,
+if you get a lot of email within a week, setting this variable will
+cause a lot of network traffic between Gnus and the IMAP server.
+
 @end table
 
 @menu
@@ -16984,7 +17038,7 @@
 
 @node Expiring in IMAP
 @subsection Expiring in IMAP
-@cindex expiring imap mail
+@cindex expiring @acronym{IMAP} mail
 
 Even though @code{nnimap} is not a proper @code{nnmail} derived back
 end, it supports most features in regular expiring (@pxref{Expiring
@@ -17003,6 +17057,9 @@
 your server must support permanent storage of client specific flags on
 messages.  Most do, fortunately.
 
+If expiring @acronym{IMAP} mail seems very slow, try setting the server
+variable @code{nnimap-search-uids-not-since-is-evil}.
+
 @table @code
 
 @item nnmail-expiry-wait
@@ -19287,7 +19344,7 @@
 @findex gnus-agent-expire-group
 @cindex agent expiry
 @cindex Gnus agent expiry
-@cindex expiry
+@cindex expiry, in Gnus agent
 
 The Agent back end, @code{nnagent}, doesn't handle expiry.  Well, at
 least it doesn't handle it like other back ends.  Instead, there are

[-- Attachment #3: Type: text/plain, Size: 45 bytes --]


-- 
Jouni K. Seppänen
http://www.iki.fi/jks

  reply	other threads:[~2006-12-29 14:22 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-10-26 12:41 Jouni K Seppanen
2005-10-27  8:36 ` Simon Josefsson
2005-10-27  9:01   ` Simon Josefsson
2005-10-27 18:44     ` Jouni K Seppanen
2006-12-26 17:59       ` Reiner Steib
2006-12-26 18:11         ` Jouni K. Seppänen
2006-12-29 14:22           ` Jouni K. Seppänen [this message]
2006-12-29 15:29             ` Reiner Steib
2006-12-29 16:18               ` Jouni K. Seppänen
2006-12-29 18:09                 ` Reiner Steib
2005-11-01 21:19 ` Ted Zlatanov
2005-11-02 10:22   ` Simon Josefsson
2005-11-04 16:06     ` Ted Zlatanov
2005-11-07  3:10       ` Simon Josefsson
2005-11-07  6:47         ` Jouni K Seppanen
2005-11-07 10:33           ` Bjørn Mork
2005-11-07 20:23             ` Jouni K Seppanen

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

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

  git send-email \
    --in-reply-to=m2vejuzsqx.fsf@hella.local \
    --to=jks@iki.fi \
    /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.
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 NNTP newsgroup(s).