Add sqlite_lock_timeout.
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 8 Aug 2005 10:48:26 +0000 (10:48 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 8 Aug 2005 10:48:26 +0000 (10:48 +0000)
doc/doc-txt/ChangeLog
doc/doc-txt/NewStuff
doc/doc-txt/OptionLists.txt
src/OS/Makefile-HP-UX
src/src/globals.c
src/src/globals.h
src/src/lookups/sqlite.c
src/src/readconf.c

index 2be9f29b6704adc0bff61ae0d5e4f12de04d2713..2f3153030079bfbd7a1ac31e38a5a54fb82b824c 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.201 2005/08/08 10:32:58 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.202 2005/08/08 10:48:26 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -71,6 +71,8 @@ PH/18 Reversed 4.52/PH/17 because the HP-UX user found it wasn't the cause
       of the problem. Specifically, suggested +O2 rather than +O1 for the
       HP-UX compiler.
 
+PH/19 Added sqlite_lock_timeout option (David Woodhouse's patch).
+
 
 Exim version 4.52
 -----------------
index 2d653616df1a0ad011de867009056e27044a0892..0a23d2d1b670121de925e965c56943ee52929102 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/NewStuff,v 1.61 2005/08/02 15:19:20 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/NewStuff,v 1.62 2005/08/08 10:48:26 ph10 Exp $
 
 New Features in Exim
 --------------------
@@ -42,6 +42,14 @@ PH/01 Support for SQLite database lookups has been added. This is another
       The only character affected by the ${quote_sqlite: operator is a single
       quote, which it doubles.
 
+      The SQLite library handles multiple simultaneous accesses to the database
+      internally. Multiple readers are permitted, but only one process can
+      update at once. Attempts to access the database while it is being updated
+      are rejected after a timeout period, during which the SQLite library
+      waits for the lock to be released. In Exim, the default timeout is set
+      to 5 seconds, but it can be changed by means of the sqlite_lock_timeout
+      option.
+
       Note that you must set LOOKUP_SQLITE=yes in Local/Makefile in order to
       obtain SQLite support, and you will also need to add -lsqlite3 to the
       EXTRALIBS setting. And of course, you have to install SQLite on your
index 53b76d304f9c4e423af30a15ffe45c071bce5015..22b83e728aeb34156aed6f1019b0a2685b32dfb3 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/OptionLists.txt,v 1.9 2005/06/21 14:14:55 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/OptionLists.txt,v 1.10 2005/08/08 10:48:26 ph10 Exp $
 
 LISTS OF EXIM OPTIONS
 ---------------------
@@ -474,6 +474,7 @@ socket                               string*         unset         lmtp
 spamd_address                        string          +             main              4.50 with content scan
 split_spool_directory                boolean         false         main              1.70
 spool_directory                      string          ++            main
+sqlite_lock_timeout                  time            5s            main              4.53
 srv_fail_domains                     domain list     unset         dnslookup         4.43
 strip_excess_angle_brackets          boolean         false         main
 strip_trailing_dot                   boolean         false         main
index d0c29f9f9956d917e52e4dc81721937afc674613..a28c7ed31284e7a4d0fb26fca75b2c3d0e6c7886 100644 (file)
@@ -1,10 +1,13 @@
-# $Cambridge: exim/src/OS/Makefile-HP-UX,v 1.3 2005/08/08 10:32:58 ph10 Exp $
+# $Cambridge: exim/src/OS/Makefile-HP-UX,v 1.4 2005/08/08 10:48:27 ph10 Exp $
 
 # Exim: OS-specific make file for HP-UX later than 9
 
 # HP ANSI C compiler
 #CC=cc
 #CFLAGS=+O2 +Onolimit -z -D_XOPEN_SOURCE_EXTENDED
+# Users of the A.06.00 compiler might need to use +O1 rather than +O2 as
+# there have been some problems reported with this compiler with +O2 set.
+
 # gcc
 CFLAGS=-O -Wl,-z -D_XOPEN_SOURCE_EXTENDED
 
index c233e76bd69107cb695e14b1a3e77380ea162bb1..fabfe1c249f8d911ba06f39b1c9e5192cd267766 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/globals.c,v 1.33 2005/08/02 15:19:20 ph10 Exp $ */
+/* $Cambridge: exim/src/src/globals.c,v 1.34 2005/08/08 10:48:27 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -87,6 +87,10 @@ uschar *oracle_servers         = NULL;
 uschar *pgsql_servers          = NULL;
 #endif
 
+#ifdef LOOKUP_SQLITE
+int     sqlite_lock_timeout    = 5;
+#endif
+
 #ifdef SUPPORT_MOVE_FROZEN_MESSAGES
 BOOL    move_frozen_messages   = FALSE;
 #endif
index 484a8d4f95177efc9312c74986e5ac12442a19d7..3126f276b430698943407b4e87ea71062b6f1ee7 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/globals.h,v 1.24 2005/08/02 15:19:20 ph10 Exp $ */
+/* $Cambridge: exim/src/src/globals.h,v 1.25 2005/08/08 10:48:27 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -51,6 +51,10 @@ extern uschar *oracle_servers;         /* List of servers and connect info */
 extern uschar *pgsql_servers;          /* List of servers and connect info */
 #endif
 
+#ifdef LOOKUP_SQLITE
+extern int     sqlite_lock_timeout;    /* Internal lock waiting timeout */
+#endif
+
 #ifdef SUPPORT_MOVE_FROZEN_MESSAGES
 extern BOOL    move_frozen_messages;   /* Get them out of the normal directory */
 #endif
index af4c0eac6a5c35acb93d7973251386b13437328d..bb024b50ebd98d4897ccdb89fa4c0a614b1e2d08 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/lookups/sqlite.c,v 1.1 2005/08/01 13:20:28 ph10 Exp $ */
+/* $Cambridge: exim/src/src/lookups/sqlite.c,v 1.2 2005/08/08 10:48:27 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -36,6 +36,7 @@ if (ret != 0)
   debug_printf("Error opening database: %s\n", *errmsg);
   }
 
+sqlite3_busy_timeout(db, 1000 * sqlite_lock_timeout);
 return db;
 }
 
index 1cc95b90d6c6d61988d7181fda7ac4d3bb93e739..220438ada3504d94d514f6b3921cc2280e3906c9 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/readconf.c,v 1.11 2005/06/27 14:29:43 ph10 Exp $ */
+/* $Cambridge: exim/src/src/readconf.c,v 1.12 2005/08/08 10:48:27 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -339,6 +339,9 @@ static optionlist optionlist_config[] = {
 #endif
   { "split_spool_directory",    opt_bool,        &split_spool_directory },
   { "spool_directory",          opt_stringptr,   &spool_directory },
+#ifdef LOOKUP_SQLITE
+  { "sqlite_lock_timeout",      opt_int,         &sqlite_lock_timeout },
+#endif
 #ifdef EXPERIMENTAL_SRS
   { "srs_config",               opt_stringptr,   &srs_config },
   { "srs_hashlength",           opt_int,         &srs_hashlength },