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