[Pkg-db-devel] Bug#316389: Please add the transactions patch to db4.2

Peter Marschall Peter Marschall <peter@adpm.de>, 316389@bugs.debian.org
Thu, 30 Jun 2005 18:30:24 +0200


This is a multi-part MIME message sent by reportbug.

--===============1168686732==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Package: db4.2
Severity: wishlist
Tags: patch

Hi,

please consider adding the transactions patch (attached) to db4.2.

This patch is recommended for OpenLDAP 2.2.6 and 2.2.27, while it is
required for all higher OpenLDAP versions (2.2.28 enginieering as well
as 2.3.x).

Accordung to OpenLDAP developers db4.2 is the recommended Berkeley DB
library for OpenLDAP. So not having this patch in Debian's db4.2
would hinder the further development of openldap2.x packages in Debian.

You may find further finormation about this patch on Standord's
Directory pages where it was first published (accoeding to my
knowledge):
http://www.stanford.edu/services/directory/openldap/configuration/openldap-build-42.html

As you can see the patch is quite trivial and does not affect
packages that are not aware of the flag introduced with this patch.
(BTW, I have db 4.2 with this patch running for half a year without any
problems [except the need to re-build my private package whenever a new
official package comes out ;-])

Please do not hesitate to to aks if you have any questions.

Thanks in advance
PEter


-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.11-1-k7
Locale: LANG=de_DE@euro, LC_CTYPE=de_DE@euro (charmap=ISO-8859-15)

--===============1168686732==
Content-Type: text/x-c; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="transactions.diff"

## transactions.patch by Quanah Gibson-Mount <quanah@stanford.edu>
##
## fixes transaction behaviour; required for openLDAP
##  published on Stanford's Directory Services pages:
##   http://www.stanford.edu/services/directory/openldap/configuration/openldap-build-42.html


--- dbinc/db.in
+++ dbinc/db.in	2004-09-09 18:30:00.547903000 -0700
@@ -839,6 +839,7 @@
 #define	TXN_NOWAIT	0x040		/* Do not wait on locks. */
 #define	TXN_RESTORED	0x080		/* Transaction has been restored. */
 #define	TXN_SYNC	0x100		/* Sync on prepare and commit. */
+#define	TXN_NOLOG	0x200		/* Do not log this transaction. */
 	u_int32_t	flags;
 };
 
--- txn/txn.c
+++ txn/txn.c	2004-09-09 18:32:14.559561000 -0700
@@ -127,7 +127,7 @@
 	if ((ret = __db_fchk(dbenv,
 	    "txn_begin", flags,
 	    DB_DIRTY_READ | DB_TXN_NOWAIT |
-	    DB_TXN_NOSYNC | DB_TXN_SYNC)) != 0)
+	    DB_TXN_NOSYNC | DB_TXN_SYNC | DB_TXN_NOT_DURABLE )) != 0)
 		return (ret);
 	if ((ret = __db_fcchk(dbenv,
 	    "txn_begin", flags, DB_TXN_NOSYNC, DB_TXN_SYNC)) != 0)
@@ -193,6 +193,8 @@
 		F_SET(txn, TXN_SYNC);
 	if (LF_ISSET(DB_TXN_NOWAIT))
 		F_SET(txn, TXN_NOWAIT);
+	if (LF_ISSET(DB_TXN_NOT_DURABLE))
+		F_SET(txn, TXN_NOLOG);
 
 	if ((ret = __txn_begin_int(txn, 0)) != 0)
 		goto err;
@@ -328,7 +330,7 @@
 	 * We should set this value when we write the first log record, not
 	 * here.
 	 */
-	if (DBENV_LOGGING(dbenv))
+	if (DBENV_LOGGING(dbenv) && !F_ISSET(txn, TXN_NOLOG))
 		__log_txn_lsn(dbenv, &begin_lsn, NULL, NULL);
 	else
 		ZERO_LSN(begin_lsn);

--===============1168686732==--