You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Justin Erenkrantz <je...@apache.org> on 2002/09/20 21:29:40 UTC

[PATCH] Add Berkeley DB 4.1.24 support

I'm purposely going to ignore whether we should drop support for
4.0 and move to 4.1 or support both at the same time.  That's not
my call - I think we should move to 4.1.24 due to the number of
fixes present in 4.1 - listed here:

http://www.sleepycat.com/update/4.1.24/if.4.1.24.html

But, that might be a tad painful (supposedly it is backwards
compatible file-wise - just not API-wise).

This passes 'make check' for me.  -- justin

Add support for Berkeley DB 4.1.24.

* subversion/libsvn_fs/bdb/txn-table.c (svn_fs__open_transactions_table)
  subversion/libsvn_fs/bdb/reps-table.c (svn_fs__open_reps_table),
  subversion/libsvn_fs/bdb/copies-table.c (svn_fs__open_copies_table),
  subversion/libsvn_fs/bdb/strings-table.c (svn_fs__open_strings_table),
  subversion/libsvn_fs/bdb/rev-table.c (svn_fs__open_revisions_table),
  subversion/libsvn_fs/bdb/changes-table.c (svn_fs__open_changes_table),
  subversion/libsvn_fs/bdb/nodes-table.c (svn_fs__open_nodes_table),
  Pass NULL Transaction ID and DB_AUTO_COMMIT to open.
  Pass DB_AUTO_COMMIT to txns->put when no transaction is passed.

* subversion/libsvn_fs/fs.c (cleanup_fs_db, cleanup_fs):
  Remove references to obsolete DB_INCOMPLETE error.

Index: subversion/libsvn_fs/bdb/txn-table.c
===================================================================
--- subversion/libsvn_fs/bdb/txn-table.c
+++ subversion/libsvn_fs/bdb/txn-table.c	2002-09-19 23:43:33.840001000 -0700
@@ -46,8 +46,8 @@
   DB *txns;
 
   DB_ERR (db_create (&txns, env, 0));
-  DB_ERR (txns->open (txns, "transactions", 0, DB_BTREE,
-                      create ? (DB_CREATE | DB_EXCL) : 0,
+  DB_ERR (txns->open (txns, NULL, "transactions", 0, DB_BTREE,
+                      (create ? (DB_CREATE | DB_EXCL) : 0) | DB_AUTO_COMMIT,
                       0666));
 
   /* Create the `next-id' table entry.  */
@@ -59,7 +59,7 @@
                        svn_fs__str_to_dbt (&key, 
                                            (char *) svn_fs__next_key_key),
                        svn_fs__str_to_dbt (&value, (char *) "0"),
-                       0));
+                       DB_AUTO_COMMIT));
   }
 
   *transactions_p = txns;
Index: subversion/libsvn_fs/bdb/reps-table.c
===================================================================
--- subversion/libsvn_fs/bdb/reps-table.c
+++ subversion/libsvn_fs/bdb/reps-table.c	2002-09-19 23:43:05.180007000 -0700
@@ -38,8 +38,8 @@
   DB *reps;
 
   DB_ERR (db_create (&reps, env, 0));
-  DB_ERR (reps->open (reps, "representations", 0, DB_BTREE,
-                      create ? (DB_CREATE | DB_EXCL) : 0,
+  DB_ERR (reps->open (reps, NULL, "representations", 0, DB_BTREE,
+                      (create ? (DB_CREATE | DB_EXCL) : 0) | DB_AUTO_COMMIT,
                       0666));
 
   /* Create the `next-key' table entry.  */
@@ -51,7 +51,7 @@
             (reps, 0,
              svn_fs__str_to_dbt (&key, (char *) svn_fs__next_key_key),
              svn_fs__str_to_dbt (&value, (char *) "0"),
-             0));
+             DB_AUTO_COMMIT));
   }
 
   *reps_p = reps;
Index: subversion/libsvn_fs/bdb/copies-table.c
===================================================================
--- subversion/libsvn_fs/bdb/copies-table.c
+++ subversion/libsvn_fs/bdb/copies-table.c	2002-09-19 23:42:39.600010000 -0700
@@ -38,8 +38,8 @@
   DB *copies;
 
   DB_ERR (db_create (&copies, env, 0));
-  DB_ERR (copies->open (copies, "copies", 0, DB_BTREE,
-                        create ? (DB_CREATE | DB_EXCL) : 0,
+  DB_ERR (copies->open (copies, NULL, "copies", 0, DB_BTREE,
+                        (create ? (DB_CREATE | DB_EXCL) : 0) | DB_AUTO_COMMIT,
                         0666));
 
   /* Create the initial `next-id' table entry.  */
@@ -50,7 +50,7 @@
                          svn_fs__str_to_dbt (&key, 
                                              (char *) svn_fs__next_key_key),
                          svn_fs__str_to_dbt (&value, (char *) "0"),
-                         0));
+                         DB_AUTO_COMMIT));
   }
 
   *copies_p = copies;
Index: subversion/libsvn_fs/bdb/strings-table.c
===================================================================
--- subversion/libsvn_fs/bdb/strings-table.c
+++ subversion/libsvn_fs/bdb/strings-table.c	2002-09-19 23:43:29.590017000 -0700
@@ -41,9 +41,9 @@
      multiple records. Note: this must occur before ->open().  */
   DB_ERR (strings->set_flags (strings, DB_DUP));
 
-  DB_ERR (strings->open (strings, "strings", 0, DB_BTREE,
-                       create ? (DB_CREATE | DB_EXCL) : 0,
-                       0666));
+  DB_ERR (strings->open (strings, NULL, "strings", 0, DB_BTREE,
+                         (create ? (DB_CREATE | DB_EXCL) : 0) | DB_AUTO_COMMIT,
+                         0666));
 
   if (create)
   {
@@ -54,7 +54,7 @@
             (strings, 0,
              svn_fs__str_to_dbt (&key, (char *) svn_fs__next_key_key),
              svn_fs__str_to_dbt (&value, (char *) "0"),
-             0));
+             DB_AUTO_COMMIT));
   }
   
   *strings_p = strings;
Index: subversion/libsvn_fs/bdb/rev-table.c
===================================================================
--- subversion/libsvn_fs/bdb/rev-table.c
+++ subversion/libsvn_fs/bdb/rev-table.c	2002-09-19 23:43:25.590000000 -0700
@@ -34,8 +34,8 @@
   DB *revisions;
 
   DB_ERR (db_create (&revisions, env, 0));
-  DB_ERR (revisions->open (revisions, "revisions", 0, DB_RECNO,
-                           create ? (DB_CREATE | DB_EXCL) : 0,
+  DB_ERR (revisions->open (revisions, NULL, "revisions", 0, DB_RECNO,
+                           (create ? (DB_CREATE | DB_EXCL) : 0) | DB_AUTO_COMMIT,
                            0666));
 
   *revisions_p = revisions;
Index: subversion/libsvn_fs/bdb/changes-table.c
===================================================================
--- subversion/libsvn_fs/bdb/changes-table.c
+++ subversion/libsvn_fs/bdb/changes-table.c	2002-09-19 23:42:30.640011000 -0700
@@ -45,8 +45,8 @@
      one-per-row.  Note: this must occur before ->open().  */
   DB_ERR (changes->set_flags (changes, DB_DUP));
 
-  DB_ERR (changes->open (changes, "changes", 0, DB_BTREE,
-                         create ? (DB_CREATE | DB_EXCL) : 0,
+  DB_ERR (changes->open (changes, NULL, "changes", 0, DB_BTREE,
+                         (create ? (DB_CREATE | DB_EXCL) : 0) | DB_AUTO_COMMIT,
                          0666));
 
   *changes_p = changes;
Index: subversion/libsvn_fs/bdb/nodes-table.c
===================================================================
--- subversion/libsvn_fs/bdb/nodes-table.c
+++ subversion/libsvn_fs/bdb/nodes-table.c	2002-09-19 23:42:50.660011000 -0700
@@ -44,8 +44,8 @@
   DB *nodes;
 
   DB_ERR (db_create (&nodes, env, 0));
-  DB_ERR (nodes->open (nodes, "nodes", 0, DB_BTREE,
-                       create ? (DB_CREATE | DB_EXCL) : 0,
+  DB_ERR (nodes->open (nodes, NULL, "nodes", 0, DB_BTREE,
+                       (create ? (DB_CREATE | DB_EXCL) : 0) | DB_AUTO_COMMIT,
                        0666));
 
   /* Create the `next-id' table entry (use '1' because '0' is
@@ -58,7 +58,7 @@
                         svn_fs__str_to_dbt (&key, 
                                             (char *) svn_fs__next_key_key),
                         svn_fs__str_to_dbt (&value, (char *) "1"),
-                        0));
+                        DB_AUTO_COMMIT));
   }
 
   *nodes_p = nodes;
Index: subversion/libsvn_fs/fs.c
===================================================================
--- subversion/libsvn_fs/fs.c
+++ subversion/libsvn_fs/fs.c	2002-09-19 01:21:48.590003000 -0700
@@ -104,15 +104,6 @@
       *db_ptr = 0;
       db_err = db->close (db, 0);
 
-      /* We can ignore DB_INCOMPLETE on db->close and db->sync; it
-       * just means someone else was using the db at the same time
-       * we were.  See the Berkeley documentation at:
-       * http://www.sleepycat.com/docs/ref/program/errorret.html#DB_INCOMPLETE
-       * http://www.sleepycat.com/docs/api_c/db_close.html
-       */
-      if (db_err == DB_INCOMPLETE)
-        db_err = 0;
-
       SVN_ERR (DB_WRAP (fs, msg, db_err));
     }
 
@@ -141,12 +132,6 @@
   {
     int db_err = env->txn_checkpoint (env, 0, 0, 0);
 
-    while (db_err == DB_INCOMPLETE)
-      {
-        apr_sleep (APR_USEC_PER_SEC * 1);
-        db_err = env->txn_checkpoint (env, 0, 0, 0);
-      }
-
     /* If the environment was not (properly) opened, then txn_checkpoint
        will typically return EINVAL. Ignore this case.
 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] Add Berkeley DB 4.1.24 support

Posted by Branko Čibej <br...@xbc.nu>.
Justin Erenkrantz wrote:

>I'm purposely going to ignore whether we should drop support for
>4.0 and move to 4.1 or support both at the same time.  That's not
>my call - I think we should move to 4.1.24 due to the number of
>fixes present in 4.1 - listed here:
>
>http://www.sleepycat.com/update/4.1.24/if.4.1.24.html
>
>But, that might be a tad painful (supposedly it is backwards
>compatible file-wise - just not API-wise).
>
I think we should test that this is actually true -- i.e., that we can 
use BDB 4.1 with a repository built with BDB 4.0 with no problems. Or, 
alternatvely, that we can migrate from 4.0 to 4.1 by using just the BDB 
utilities db_dump and db_load -- that should be possible, now that we 
don't use custom key ordering functions any more.

>This passes 'make check' for me.  -- justin
>
>Add support for Berkeley DB 4.1.24.
>  
>
The patch itself looks fine to me. +1, assuming the above.


-- 
Brane Čibej   <br...@xbc.nu>   http://www.xbc.nu/brane/


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org