On Tue, 2008-06-03 at 17:28 +0200, Anders wrote: > I have not been able to reproduce this at will, but do see 1-Jan-1970 in > rawlog about two times every day now (with some 80 accounts and probably > thousands of deliveries).
Could you try with the attached debug patch? What does it log when it happens?
diff -r e043135e971d src/lib-storage/index/maildir/maildir-mail.c
--- a/src/lib-storage/index/maildir/maildir-mail.c Tue Jun 03 16:04:32 2008 +0300
+++ b/src/lib-storage/index/maildir/maildir-mail.c Tue Jun 03 18:54:27 2008 +0300
@@ -116,8 +116,10 @@
if (index_mail_get_received_date(_mail, date_r) == 0)
return 0;
- if (maildir_mail_stat(_mail, &st) < 0)
+ if (maildir_mail_stat(_mail, &st) < 0) {
+ i_warning("received date lookup failed");
return -1;
+ }
*date_r = data->received_date = st.st_mtime;
return 0;
diff -r e043135e971d src/lib-storage/index/maildir/maildir-uidlist.c
--- a/src/lib-storage/index/maildir/maildir-uidlist.c Tue Jun 03 16:04:32 2008 +0300
+++ b/src/lib-storage/index/maildir/maildir-uidlist.c Tue Jun 03 18:54:27 2008 +0300
@@ -831,6 +831,7 @@
enum maildir_uidlist_rec_flag *flags_r)
{
const char *fname;
+ bool refresh = FALSE;
fname = maildir_uidlist_lookup_nosync(uidlist, uid, flags_r);
if (fname == NULL) {
@@ -839,6 +840,7 @@
after the last mailbox sync */
if (maildir_uidlist_refresh(uidlist) < 0)
return NULL;
+ refresh = TRUE;
} else {
/* the uidlist doesn't exist. */
if (maildir_storage_sync_force(uidlist->mbox, uid) < 0)
@@ -847,6 +849,8 @@
/* try again */
fname = maildir_uidlist_lookup_nosync(uidlist, uid, flags_r);
+ i_warning("uidlist: uid=%u not found, refreshed=%d, again=%s",
+ uid, refresh, fname == NULL ? "" : fname);
}
return fname;
diff -r e043135e971d src/lib-storage/index/maildir/maildir-util.c
--- a/src/lib-storage/index/maildir/maildir-util.c Tue Jun 03 16:04:32 2008 +0300
+++ b/src/lib-storage/index/maildir/maildir-util.c Tue Jun 03 18:54:27 2008 +0300
@@ -24,9 +24,10 @@
int ret;
fname = maildir_uidlist_lookup(mbox->uidlist, uid, &flags);
- if (fname == NULL)
+ if (fname == NULL) {
+ i_warning("do_try: uid=%u file name not found", uid);
return -2; /* expunged */
-
+ }
if ((flags & MAILDIR_UIDLIST_REC_FLAG_NEW_DIR) != 0) {
/* probably in new/ dir */
T_BEGIN {
@@ -45,6 +46,8 @@
path = t_strconcat(mbox->path, "/cur/", fname, NULL);
ret = callback(mbox, path, context);
} T_END;
+ if (ret == 0)
+ i_warning("do_try: uid=%u file=%s not found", uid, fname);
return ret;
}
signature.asc
Description: This is a digitally signed message part
