From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.emacs.gnus.general/75365 Path: news.gmane.org!not-for-mail From: Sven Joachim Newsgroups: gmane.emacs.gnus.general Subject: Re: expirable mark lost in nnfolder groups Date: Tue, 21 Dec 2010 17:00:37 +0100 Message-ID: <87ipynnmje.fsf@turtle.gmx.de> References: <8739prpekz.fsf@turtle.gmx.de> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: dough.gmane.org 1292947297 1721 80.91.229.12 (21 Dec 2010 16:01:37 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 21 Dec 2010 16:01:37 +0000 (UTC) To: ding@gnus.org Original-X-From: ding-owner+M23717@lists.math.uh.edu Tue Dec 21 17:01:33 2010 Return-path: Envelope-to: ding-account@gmane.org Original-Received: from util0.math.uh.edu ([129.7.128.18]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1PV4eW-00071n-6L for ding-account@gmane.org; Tue, 21 Dec 2010 17:01:28 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.math.uh.edu) by util0.math.uh.edu with smtp (Exim 4.63) (envelope-from ) id 1PV4dw-0006P5-PE; Tue, 21 Dec 2010 10:00:52 -0600 Original-Received: from mx2.math.uh.edu ([129.7.128.33]) by util0.math.uh.edu with esmtps (TLSv1:AES256-SHA:256) (Exim 4.63) (envelope-from ) id 1PV4dv-0006Or-AF for ding@lists.math.uh.edu; Tue, 21 Dec 2010 10:00:51 -0600 Original-Received: from quimby.gnus.org ([80.91.231.51]) by mx2.math.uh.edu with esmtp (Exim 4.72) (envelope-from ) id 1PV4dr-0001hJ-2A for ding@lists.math.uh.edu; Tue, 21 Dec 2010 10:00:51 -0600 Original-Received: from mailout-de.gmx.net ([213.165.64.23] helo=mail.gmx.net) by quimby.gnus.org with smtp (Exim 4.72) (envelope-from ) id 1PV4dp-0003J0-KT for ding@gnus.org; Tue, 21 Dec 2010 17:00:45 +0100 Original-Received: (qmail invoked by alias); 21 Dec 2010 16:00:40 -0000 Original-Received: from p54865F74.dip.t-dialin.net (EHLO turtle.gmx.de) [84.134.95.116] by mail.gmx.net (mp033) with SMTP; 21 Dec 2010 17:00:40 +0100 X-Authenticated: #28250155 X-Provags-ID: V01U2FsdGVkX1+Pvm4DJ/+PoqAm13IuG3HMBo25X+HxjV0T0jf5AH dU/+yRDCWOoAqM Original-Received: by turtle.gmx.de (Postfix, from userid 1000) id 59B1F3F432; Tue, 21 Dec 2010 17:00:37 +0100 (CET) Mail-Followup-To: ding@gnus.org In-Reply-To: <8739prpekz.fsf@turtle.gmx.de> (Sven Joachim's message of "Tue, 21 Dec 2010 12:09:32 +0100") User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.2.91 (gnu/linux) X-Y-GMX-Trusted: 0 X-Spam-Score: -1.9 (-) List-ID: Precedence: bulk Xref: news.gmane.org gmane.emacs.gnus.general:75365 Archived-At: On 2010-12-21 12:09 +0100, Sven Joachim wrote: > Hi, > > expiration seems to be broken (at least) in nnfolder groups. I can mark > an article as expirable (or set auto-expire to t in the group > parameters), but upon leaving and re-entering the group, all expirable > marks are lost. :-( Anyone else seeing this? Bisecting shows that commit 06eeefe0 is the first "bad" one, fully cited (with "git show") below. Sven commit 06eeefe0c892fd77f7a79493fa4f1db0f8058761 Author: Lars Magne Ingebrigtsen Date: Thu Dec 16 18:58:19 2010 +0100 Clear up nnml expiry target performance regressions. Fix previous fix by having nnfolder save all its buffers explicitly. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 9036447..bac3f9e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,14 @@ +2010-12-16 Lars Magne Ingebrigtsen + + * nnfolder.el (nnfolder-save-all-buffers): Refactor out into its own + function. + (nnfolder-request-expire-articles): Save all the buffers after doing + expiry. + + * nnmail.el (nnmail-expiry-target-group): Revert the "all articles are + the last article", since that led to serious performance regressions + when expiring nnml groups. + 2010-12-16 Andrew Cohen * nnir.el: Improve customizations. diff --git a/lisp/nnfolder.el b/lisp/nnfolder.el index 5de8653..f0a21c5 100644 --- a/lisp/nnfolder.el +++ b/lisp/nnfolder.el @@ -322,20 +322,20 @@ the group. Then the marks file will be regenerated properly by Gnus.") (when nnfolder-get-new-mail (nnfolder-possibly-change-group group server) (nnmail-get-new-mail - 'nnfolder - (lambda () - (let ((bufs nnfolder-buffer-alist)) - (save-excursion - (while bufs - (if (not (gnus-buffer-live-p (nth 1 (car bufs)))) - (setq nnfolder-buffer-alist - (delq (car bufs) nnfolder-buffer-alist)) - (set-buffer (nth 1 (car bufs))) - (nnfolder-save-buffer) - (kill-buffer (current-buffer))) - (setq bufs (cdr bufs)))))) - nnfolder-directory - group))) + 'nnfolder 'nnfolder-save-all-buffers + nnfolder-directory group))) + +(defun nnfolder-save-all-buffers () + (let ((bufs nnfolder-buffer-alist)) + (save-excursion + (while bufs + (if (not (gnus-buffer-live-p (nth 1 (car bufs)))) + (setq nnfolder-buffer-alist + (delq (car bufs) nnfolder-buffer-alist)) + (set-buffer (nth 1 (car bufs))) + (nnfolder-save-buffer) + (kill-buffer (current-buffer))) + (setq bufs (cdr bufs)))))) ;; Don't close the buffer if we're not shutting down the server. This way, ;; we can keep the buffer in the group buffer cache, and not have to grovel @@ -488,7 +488,8 @@ the group. Then the marks file will be regenerated properly by Gnus.") (nnfolder-save-buffer) (nnfolder-adjust-min-active newsgroup) (nnfolder-save-active nnfolder-group-alist nnfolder-active-file) - (gnus-sorted-difference articles (nreverse deleted-articles))))) + (gnus-sorted-difference articles (nreverse deleted-articles))) + (nnfolder-save-all-buffers))) (deffoo nnfolder-request-move-article (article group server accept-form &optional last move-is-internal) diff --git a/lisp/nnmail.el b/lisp/nnmail.el index 06b464c..c86e96b 100644 --- a/lisp/nnmail.el +++ b/lisp/nnmail.el @@ -1915,7 +1915,7 @@ If TIME is nil, then return the cutoff time for oldness instead." (unless (eq target 'delete) (when (or (gnus-request-group target) (gnus-request-create-group target)) - (let ((group-art (gnus-request-accept-article target nil t t))) + (let ((group-art (gnus-request-accept-article target nil nil t))) (when (and (consp group-art) (cdr group-art)) (gnus-group-mark-article-read target (cdr group-art))))))))