[Raw Msg Headers][Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: message file is missing(!)



On Wed, Jun 07, 2000 at 09:21:19PM +0400, Eugene Crosser wrote:
> I found that I did NOT have SCHEDULERDIRHASH=1.
> Another change that I did just before it started was mounting the
> postoffice directory with logging (Solaris 7 mount option).
> BTW apparently the latter significantly lowered busy level on the
> logical device!  I was expecting the opposite effect.

  Transaction logging should help contention on directory related operations,
  but perhaps there exists some peculiar access problem ...

  Uh, oh...  ( transports/libta/ctlopen.c )

	if ((d.msgfd = open(mfpath, O_RDONLY, 0)) < 0) {
	  int e = errno;
	  for (rp = d.recipients; rp != NULL; rp = rp->next) {
	    diagnostic(rp, EX_UNAVAILABLE, 0,
		       "message file is missing(!) -- possibly due to delivery scheduler restart.  Consider resending your message");
	  }
	  errno = e;
	  warning("Cannot open message file \"%s\"! (%m)", mfpath);
	...

  No handling of  EINTR and related operation retry for  open(2)  call.

  A warning is generated, thus SCHEDULER's log may contain some additional info!  Hmm... but (%m) isn't honoured except at syslog(), and that means the
  errno isn't reported at all..  Not very usefull :-(

  Do following change (manually), and perhaps better info would become
  available in these cases:

[mea@mea zmailer-2-cvs]$ cvs diff -u transports/libta/
cvs diff: Diffing transports/libta/
Index: transports/libta//ctlopen.c
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/transports/libta/ctlopen.c,v
retrieving revision 1.19
diff -u -r1.19 ctlopen.c
--- transports/libta/ctlopen.c 2000/04/14 14:17:11     1.19
+++ transports/libta/ctlopen.c 2000/06/07 17:47:00
@@ -655,7 +655,7 @@
                       "message file is missing(!) -- possibly due to delivery scheduler restart.  Consider resending your message");
          }
          errno = e;
-         warning("Cannot open message file \"%s\"! (%m)", mfpath);
+         warning("Cannot open message file \"%s\"! (errno=%d)", mfpath, errno);
 #ifndef USE_ALLOCA
          free(mfpath);
 #endif


  Solaris might yield some surprises, like  EBUSY, EAGAIN, or EINTR
  in these cases..


> Eugene

-- 
/Matti Aarnio	<mea@nic.funet.fi>