Gnus development mailing list
 help / color / mirror / Atom feed
From: Simon Josefsson <jas@extundo.com>
Subject: Re: gnus marks nonexistent articles
Date: Sun, 08 Dec 2002 06:38:10 +0100	[thread overview]
Message-ID: <iluvg259ikd.fsf@extundo.com> (raw)
In-Reply-To: <m3bs3xtepf.fsf_-_@multivac.cwru.edu> (prj@po.cwru.edu's message of "Sat, 07 Dec 2002 21:40:54 -0500")

prj@po.cwru.edu (Paul Jarc) writes:

> I think I've figured it out now.  When Gnus finds that an article does
> not exist, it marks it as read.  But nnmaildir doesn't store marks for
> nonexistent articles.  (Does nnimap?  nnml?)

Nnimap tries hard to not reset Gnus' marks but only update them with
correct information from the server.  So if Gnus thinks a non-existing
article has some set of marks, nnimap never changes it.  This is what
is slowing down group entry, btw..  relevant code from
nnimap-request-update-info-internal:

	(when (nnimap-mark-permanent-p 'read)
	  (let (seen unseen)
	    ;; read info could contain articles marked unread by other
	    ;; imap clients!  we correct this
	    (setq seen (gnus-uncompress-range (gnus-info-read info))
		  unseen (imap-search "UNSEEN UNDELETED")
		  seen (gnus-set-difference seen unseen)
		  ;; seen might lack articles marked as read by other
		  ;; imap clients! we correct this
		  seen (append seen (imap-search "SEEN"))
		  ;; remove dupes
		  seen (sort seen '<)
		  seen (gnus-compress-sequence seen t)
		  ;; we can't return '(1) since this isn't a "list of ranges",
		  ;; and we can't return '((1)) since g-list-of-unread-articles
		  ;; is buggy so we return '((1 . 1)).
		  seen (if (and (integerp (car seen))
				(null (cdr seen)))
			   (list (cons (car seen) (car seen)))
			 seen))
	    (gnus-info-set-read info seen)))

I guess similar code could be used in nnmaildir too.

> nnmaildir-request-update-info returns only the marks it knows about;
> it removes marks supplied by Gnus that weren't stored by nnmaildir.
> So after it's called, all the nonexistent articles seem to exist as
> unread, as far as Gnus is concerned.  Even if nnmaildir is the only
> backend currently affected by this problem, I think it makes sense to
> fix this in Gnus:  gnus-request-update-info could artificially add
> (1 . (1- min)) to the read range after getting marks from the backend.
> Thoughts?  Objections?  Other ideas?

If it is that simple to fix it, I'm for it.  OTOH it might be a good
property that backends should never update marks on
server-non-existing articles; it would allow Gnus to have local
articles using those article numbers.




  reply	other threads:[~2002-12-08  5:38 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-12-06 17:41 nnmaildir's article counts are better now Paul Jarc
2002-12-06 19:36 ` Josh Huber
2002-12-06 19:42   ` Paul Jarc
2002-12-06 19:53     ` Josh Huber
2002-12-06 20:09       ` Paul Jarc
2002-12-06 21:01         ` Josh Huber
2002-12-08  2:40           ` gnus marks nonexistent articles (was: nnmaildir's article counts are better now) Paul Jarc
2002-12-08  5:38             ` Simon Josefsson [this message]
2002-12-09  5:50               ` gnus marks nonexistent articles Paul Jarc
2002-12-09  9:44                 ` Simon Josefsson
2002-12-09 19:42                 ` Paul Jarc

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=iluvg259ikd.fsf@extundo.com \
    --to=jas@extundo.com \
    /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).