Move the fast-ramp two phase queue run support from Experimental to the mainline
authorJeremy Harris <jgh146exb@wizmail.org>
Sat, 9 May 2020 17:00:08 +0000 (18:00 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Sat, 9 May 2020 17:00:08 +0000 (18:00 +0100)
12 files changed:
doc/doc-txt/ChangeLog
doc/doc-txt/NewStuff
src/src/EDITME
src/src/config.h.defaults
src/src/daemon.c
src/src/exim.c
src/src/functions.h
src/src/globals.c
src/src/globals.h
src/src/queue.c
src/src/readconf.c
src/src/transport.c

index 3cd92b8168bfe78680c71ad3408e0832038bc1d4..62777266f6f22717985a64b2c9c8a257e1b9a880 100644 (file)
@@ -3,6 +3,12 @@ affect Exim's operation, with an unchanged configuration file.  For new
 options, and new features, see the NewStuff file next to this ChangeLog.
 
 
 options, and new features, see the NewStuff file next to this ChangeLog.
 
 
+Since Exim version 4.94
+----------------------
+
+(none yet)
+
+
 Exim version 4.94
 -----------------
 
 Exim version 4.94
 -----------------
 
index c29525d5002b97cddd714ab9630b991e5536eba2..7f8f628f9b26627ac49bc558c582d923d8b67496 100644 (file)
@@ -6,6 +6,13 @@ Before a formal release, there may be quite a lot of detail so that people can
 test from the snapshots or the Git before the documentation is updated. Once
 the documentation is updated, this file is reduced to a short list.
 
 test from the snapshots or the Git before the documentation is updated. Once
 the documentation is updated, this file is reduced to a short list.
 
+Version 4.95
+------------
+
+ 1. The fast-ramp two phase queue run support, previously experimental, is
+    now supported by default.
+
+
 Version 4.94
 ------------
 
 Version 4.94
 ------------
 
index 8d8552346a98233a98eaa8c856b7abb64757e939..c6f30b58c8ab877872b271b2cfc1c8b247f4df3c 100644 (file)
@@ -561,7 +561,6 @@ DISABLE_MAL_MKS=yes
 # DISABLE_DNSSEC=yes
 
 # To disable support for Events set DISABLE_EVENT to "yes"
 # DISABLE_DNSSEC=yes
 
 # To disable support for Events set DISABLE_EVENT to "yes"
-
 # DISABLE_EVENT=yes
 
 
 # DISABLE_EVENT=yes
 
 
@@ -570,6 +569,10 @@ DISABLE_MAL_MKS=yes
 # SUPPORT_PIPE_CONNECT=yes
 
 
 # SUPPORT_PIPE_CONNECT=yes
 
 
+# Uncomment the following to remove the fast-ramp two-phase-queue-run support
+# DISABLE_QUEUE_RAMP=yes
+
+
 #------------------------------------------------------------------------------
 # Compiling Exim with experimental features. These are documented in
 # experimental-spec.txt. "Experimental" means that the way these features are
 #------------------------------------------------------------------------------
 # Compiling Exim with experimental features. These are documented in
 # experimental-spec.txt. "Experimental" means that the way these features are
@@ -632,9 +635,6 @@ DISABLE_MAL_MKS=yes
 # Uncomment the following line to include support for TLS Resumption
 # EXPERIMENTAL_TLS_RESUME=yes
 
 # Uncomment the following line to include support for TLS Resumption
 # EXPERIMENTAL_TLS_RESUME=yes
 
-# Uncomment the following to include the fast-ramp two-phase-queue-run support
-# EXPERIMENTAL_QUEUE_RAMP=yes
-
 ###############################################################################
 #                 THESE ARE THINGS YOU MIGHT WANT TO SPECIFY                  #
 ###############################################################################
 ###############################################################################
 #                 THESE ARE THINGS YOU MIGHT WANT TO SPECIFY                  #
 ###############################################################################
index e17f015f96775627175eda7e49427b1284c80d24..bc3beb931637c6c54207efa8d5d9baeff6e7bb43 100644 (file)
@@ -52,6 +52,7 @@ Do not put spaces between # and the 'define'.
 #define DISABLE_OCSP
 #define DISABLE_PIPE_CONNECT
 #define DISABLE_PRDR
 #define DISABLE_OCSP
 #define DISABLE_PIPE_CONNECT
 #define DISABLE_PRDR
+#define DISABLE_QUEUE_RAMP
 #define DISABLE_TLS
 #define DISABLE_D_OPTION
 
 #define DISABLE_TLS
 #define DISABLE_D_OPTION
 
@@ -202,7 +203,6 @@ Do not put spaces between # and the 'define'.
 #define EXPERIMENTAL_DCC
 #define EXPERIMENTAL_DSN_INFO
 #define EXPERIMENTAL_LMDB
 #define EXPERIMENTAL_DCC
 #define EXPERIMENTAL_DSN_INFO
 #define EXPERIMENTAL_LMDB
-#define EXPERIMENTAL_QUEUE_RAMP
 #define EXPERIMENTAL_QUEUEFILE
 #define EXPERIMENTAL_SRS
 #define EXPERIMENTAL_SRS_NATIVE
 #define EXPERIMENTAL_QUEUEFILE
 #define EXPERIMENTAL_SRS
 #define EXPERIMENTAL_SRS_NATIVE
index 2bed143a188ac1ed57e263904c142309545bd813..1816537ecfc055d17cd639961ee41b3fa630cd92 100644 (file)
@@ -1138,14 +1138,14 @@ for (struct cmsghdr * cp = CMSG_FIRSTHDR(&msg);
 buf[sz] = 0;
 switch (buf[0])
   {
 buf[sz] = 0;
 switch (buf[0])
   {
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
   case NOTIFY_MSG_QRUN:
     /* this should be a message_id */
     DEBUG(D_queue_run)
       debug_printf("%s: qrunner trigger: %s\n", __FUNCTION__, buf+1);
     memcpy(queuerun_msgid, buf+1, MESSAGE_ID_LENGTH+1);
     return TRUE;
   case NOTIFY_MSG_QRUN:
     /* this should be a message_id */
     DEBUG(D_queue_run)
       debug_printf("%s: qrunner trigger: %s\n", __FUNCTION__, buf+1);
     memcpy(queuerun_msgid, buf+1, MESSAGE_ID_LENGTH+1);
     return TRUE;
-#endif /*EXPERIMENTAL_QUEUE_RAMP*/
+#endif
 
   case NOTIFY_QUEUE_SIZE_REQ:
     {
 
   case NOTIFY_QUEUE_SIZE_REQ:
     {
@@ -2120,7 +2120,7 @@ for (;;)
     else
       {
       DEBUG(D_any) debug_printf("%s received\n",
     else
       {
       DEBUG(D_any) debug_printf("%s received\n",
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
        *queuerun_msgid ? "qrun notification" :
 #endif
        "SIGALRM");
        *queuerun_msgid ? "qrun notification" :
 #endif
        "SIGALRM");
@@ -2165,7 +2165,7 @@ for (;;)
             *p++ = '-';
             *p++ = 'q';
             if (  f.queue_2stage
             *p++ = '-';
             *p++ = 'q';
             if (  f.queue_2stage
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
               && !*queuerun_msgid
 #endif
               ) *p++ = 'q';
               && !*queuerun_msgid
 #endif
               ) *p++ = 'q';
@@ -2177,7 +2177,7 @@ for (;;)
            extra[0] = *queue_name
              ? string_sprintf("%sG%s", opt, queue_name) : opt;
 
            extra[0] = *queue_name
              ? string_sprintf("%sG%s", opt, queue_name) : opt;
 
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
            if (*queuerun_msgid)
              {
              log_write(0, LOG_MAIN, "notify triggered queue run");
            if (*queuerun_msgid)
              {
              log_write(0, LOG_MAIN, "notify triggered queue run");
@@ -2212,7 +2212,7 @@ for (;;)
 
           /* No need to re-exec; SIGALRM remains set to the default handler */
 
 
           /* No need to re-exec; SIGALRM remains set to the default handler */
 
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
          if (*queuerun_msgid)
            {
            log_write(0, LOG_MAIN, "notify triggered queue run");
          if (*queuerun_msgid)
            {
            log_write(0, LOG_MAIN, "notify triggered queue run");
@@ -2248,7 +2248,7 @@ for (;;)
       /* Reset the alarm clock */
 
       sigalrm_seen = FALSE;
       /* Reset the alarm clock */
 
       sigalrm_seen = FALSE;
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
       if (*queuerun_msgid)
        *queuerun_msgid = 0;
       else
       if (*queuerun_msgid)
        *queuerun_msgid = 0;
       else
index 920e9e226d422df06924e466b3104ab0b75e00f8..d8ad1989929a4f5e8af22b0ebdb79d905fe112cd 100644 (file)
@@ -946,6 +946,9 @@ g = string_cat(NULL, US"Support for:");
 #ifndef DISABLE_DKIM
   g = string_cat(g, US" DKIM");
 #endif
 #ifndef DISABLE_DKIM
   g = string_cat(g, US" DKIM");
 #endif
+#ifdef SUPPORT_DMARC
+  g = string_cat(g, US" DMARC");
+#endif
 #ifndef DISABLE_DNSSEC
   g = string_cat(g, US" DNSSEC");
 #endif
 #ifndef DISABLE_DNSSEC
   g = string_cat(g, US" DNSSEC");
 #endif
@@ -967,15 +970,15 @@ g = string_cat(NULL, US"Support for:");
 #ifdef SUPPORT_PROXY
   g = string_cat(g, US" PROXY");
 #endif
 #ifdef SUPPORT_PROXY
   g = string_cat(g, US" PROXY");
 #endif
+#ifndef DISABLE_QUEUE_RAMP
+  g = string_cat(g, US" Experimental_Queue_Ramp");
+#endif
 #ifdef SUPPORT_SOCKS
   g = string_cat(g, US" SOCKS");
 #endif
 #ifdef SUPPORT_SPF
   g = string_cat(g, US" SPF");
 #endif
 #ifdef SUPPORT_SOCKS
   g = string_cat(g, US" SOCKS");
 #endif
 #ifdef SUPPORT_SPF
   g = string_cat(g, US" SPF");
 #endif
-#ifdef SUPPORT_DMARC
-  g = string_cat(g, US" DMARC");
-#endif
 #ifdef TCP_FASTOPEN
   tcp_init();
   if (f.tcp_fastopen_ok) g = string_cat(g, US" TCP_Fast_Open");
 #ifdef TCP_FASTOPEN
   tcp_init();
   if (f.tcp_fastopen_ok) g = string_cat(g, US" TCP_Fast_Open");
@@ -995,9 +998,6 @@ g = string_cat(NULL, US"Support for:");
 #ifdef EXPERIMENTAL_LMDB
   g = string_cat(g, US" Experimental_LMDB");
 #endif
 #ifdef EXPERIMENTAL_LMDB
   g = string_cat(g, US" Experimental_LMDB");
 #endif
-#ifdef EXPERIMENTAL_QUEUE_RAMP
-  g = string_cat(g, US" Experimental_Queue_Ramp");
-#endif
 #ifdef EXPERIMENTAL_QUEUEFILE
   g = string_cat(g, US" Experimental_QUEUEFILE");
 #endif
 #ifdef EXPERIMENTAL_QUEUEFILE
   g = string_cat(g, US" Experimental_QUEUEFILE");
 #endif
index 0028deb0d6d2622aa0c8e88d463c6984e74df84d..2a4597202fbabfbe5a5e42e1c3595836390351a0 100644 (file)
@@ -379,7 +379,7 @@ extern void    queue_check_only(void);
 extern unsigned queue_count(void);
 extern unsigned queue_count_cached(void);
 extern void    queue_list(int, uschar **, int);
 extern unsigned queue_count(void);
 extern unsigned queue_count_cached(void);
 extern void    queue_list(int, uschar **, int);
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
 extern void    queue_notify_daemon(const uschar * hostname);
 #endif
 extern void    queue_run(uschar *, uschar *, BOOL);
 extern void    queue_notify_daemon(const uschar * hostname);
 #endif
 extern void    queue_run(uschar *, uschar *, BOOL);
index ba772c631cf2759106285248dc5aecdc874cd481..e9529b493ec9f3701fddb7169350782591d6914b 100644 (file)
@@ -382,7 +382,7 @@ BOOL    prod_requires_admin    = TRUE;
 BOOL    proxy_session          = FALSE;
 #endif
 
 BOOL    proxy_session          = FALSE;
 #endif
 
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
 BOOL    queue_fast_ramp                = FALSE;
 #endif
 BOOL    queue_list_requires_admin = TRUE;
 BOOL    queue_fast_ramp                = FALSE;
 #endif
 BOOL    queue_list_requires_admin = TRUE;
index 3a8e824cf897e98dfb5a02880a37e9b848eb79db..95cc25f6a2f2e641ca5f0a43d37c555ea985d20d 100644 (file)
@@ -792,7 +792,7 @@ extern uschar *prvscheck_result;       /* Set during prvscheck expansion item */
 extern const uschar *qualify_domain_recipient; /* Domain to qualify recipients with */
 extern uschar *qualify_domain_sender;  /* Domain to qualify senders with */
 extern uschar *queue_domains;          /* Queue these domains */
 extern const uschar *qualify_domain_recipient; /* Domain to qualify recipients with */
 extern uschar *qualify_domain_sender;  /* Domain to qualify senders with */
 extern uschar *queue_domains;          /* Queue these domains */
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
 extern BOOL    queue_fast_ramp;        /* 2-phase queue-run overlap */
 #endif
 extern BOOL    queue_list_requires_admin; /* TRUE if -bp requires admin */
 extern BOOL    queue_fast_ramp;        /* 2-phase queue-run overlap */
 #endif
 extern BOOL    queue_list_requires_admin; /* TRUE if -bp requires admin */
index 37d6124822b0b2c8725080b48a03a35d08d20ce7..6748afd5d8c99e5eaa237ccf29f530faaf165edc 100644 (file)
@@ -1531,7 +1531,7 @@ if (s)
 /******************************************************************************/
 /******************************************************************************/
 
 /******************************************************************************/
 /******************************************************************************/
 
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
 void
 queue_notify_daemon(const uschar * msgid)
 {
 void
 queue_notify_daemon(const uschar * msgid)
 {
index 40506010c0bf1eb10948fd1f70272f6b3f3da24d..68079e6f82bc4c525246014e823b757c99bbdc1d 100644 (file)
@@ -262,7 +262,7 @@ static optionlist optionlist_config[] = {
   { "qualify_domain",           opt_stringptr,   {&qualify_domain_sender} },
   { "qualify_recipient",        opt_stringptr,   {&qualify_domain_recipient} },
   { "queue_domains",            opt_stringptr,   {&queue_domains} },
   { "qualify_domain",           opt_stringptr,   {&qualify_domain_sender} },
   { "qualify_recipient",        opt_stringptr,   {&qualify_domain_recipient} },
   { "queue_domains",            opt_stringptr,   {&queue_domains} },
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
   { "queue_fast_ramp",          opt_bool,        {&queue_fast_ramp} },
 #endif
   { "queue_list_requires_admin",opt_bool,        {&queue_list_requires_admin} },
   { "queue_fast_ramp",          opt_bool,        {&queue_fast_ramp} },
 #endif
   { "queue_list_requires_admin",opt_bool,        {&queue_list_requires_admin} },
index 2d8426f297acfadfe03dfe432e826ddc8261c77e..f9ff521f78f5208429650d12f337e0f6345bb43c 100644 (file)
@@ -1571,7 +1571,7 @@ for (host_item * host = hostlist; host; host = host->next)
     {
     sprintf(CS buffer, "%.200s:%d", host->name, host_record->sequence);
     dbfn_write(dbm_file, buffer, host_record, sizeof(dbdata_wait) + host_length);
     {
     sprintf(CS buffer, "%.200s:%d", host->name, host_record->sequence);
     dbfn_write(dbm_file, buffer, host_record, sizeof(dbdata_wait) + host_length);
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
     if (f.queue_2stage && queue_fast_ramp && !queue_run_in_order)
       queue_notify_daemon(message_id);
 #endif
     if (f.queue_2stage && queue_fast_ramp && !queue_run_in_order)
       queue_notify_daemon(message_id);
 #endif