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: [EMAIL PROTECTED], [EMAIL PROTECTED] (charmap=ISO-8859-15)
## transactions.patch by Quanah Gibson-Mount <[EMAIL PROTECTED]> ## ## 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);