2.1.9 and DB 4.1: Deliverdb error
Mika Iisakkila
mika.iisakkila at pingrid.fi
Mon Oct 28 13:58:58 EST 2002
Mika Iisakkila wrote:
> ...so I suppose something in lib/cyrusdb_db3.c still isn't quite
> compatible with BDB 4.1. I get this same error in Linux and HP-UX 11.11,
> so I suppose it's general and not a compilation screwup. Any
> off-the-shelf ideas on how to fix this, before I plunge into the source
> myself?
Sorry, my bad -- the patch I submitted wasn't enough for actually
running with db 4.1, although it compiled fine. Delivery database is
transactional and I overlooked that. One additional flag was
required for db->open().
The attached patch should work against imapd-2.1.9.
--mika
-------------- next part --------------
diff -cr cyrus-imapd-2.1.9/lib/cyrusdb_db3.c /home/mika/src/cyrus-imapd-2.1.9/lib/cyrusdb_db3.c
*** cyrus-imapd-2.1.9/lib/cyrusdb_db3.c Tue Aug 6 19:55:03 2002
--- /home/mika/src/cyrus-imapd-2.1.9/lib/cyrusdb_db3.c Thu Oct 17 15:45:07 2002
***************
*** 232,244 ****
--- 232,248 ----
assert(dbinit);
+ #if !(DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)
do {
+ #endif
#if (DB_VERSION_MAJOR > 3) || ((DB_VERSION_MAJOR == 3) && (DB_VERSION_MINOR > 0))
r = txn_checkpoint(dbenv, 0, 0, 0);
#else
r = txn_checkpoint(dbenv, 0, 0);
#endif
+ #if !(DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)
} while (r == DB_INCOMPLETE);
+ #endif
if (r) {
syslog(LOG_ERR, "DBERROR: couldn't checkpoint: %s",
db_strerror(r));
***************
*** 347,353 ****
--- 351,361 ----
}
/* xxx set comparator! */
+ #if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1
+ r = db->open(db, NULL, fname, NULL, DB_BTREE, DB_CREATE | DB_AUTO_COMMIT, 0664);
+ #else
r = db->open(db, fname, NULL, DB_BTREE, DB_CREATE, 0664);
+ #endif
if (r != 0) {
syslog(LOG_ERR, "DBERROR: opening %s: %s", fname, db_strerror(r));
return CYRUSDB_IOERROR;
More information about the Info-cyrus
mailing list