? be-nice-to-sequences.patch
Index: xcvs-db.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cvslog/xcvs/xcvs-db.php,v
retrieving revision 1.4
diff -u -p -r1.4 xcvs-db.php
--- xcvs-db.php	12 Nov 2006 08:01:59 -0000	1.4
+++ xcvs-db.php	14 Mar 2007 23:57:05 -0000
@@ -45,6 +45,17 @@ function xcvs_db_get_drupal_uid($user) {
 }
 
 /**
+ * Return a new unique ID in the given sequence.
+ */
+function xcvs_next_id($name) {
+  db_query('LOCK TABLES sequences WRITE');
+  $id = db_result(db_query("SELECT id FROM sequences WHERE name = '%s'", $name)) + 1;
+  db_query("REPLACE INTO sequences VALUES ('%s', %d)", $name, $id);
+  db_query('UNLOCK TABLES');
+  return $id;
+}
+
+/**
  * Determines the numeric drupal node id (nid) for the project a given
  * file belongs to.
  */
Index: xcvs-loginfo.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cvslog/xcvs/xcvs-loginfo.php,v
retrieving revision 1.8
diff -u -p -r1.8 xcvs-loginfo.php
--- xcvs-loginfo.php	21 Jan 2007 18:39:45 -0000	1.8
+++ xcvs-loginfo.php	14 Mar 2007 23:57:05 -0000
@@ -206,11 +206,7 @@ function xcvs_init($argc, $argv) {
 
         $connection = xcvs_db_connect($xcvs);
 
-        // Lock the affected tables so avoid clashes (transactions):
-        mysql_query('LOCK TABLES cvs_messages, cvs_files, cvs_users, cvs_tags');
-        
-        $cid = mysql_result(mysql_query("SELECT id FROM sequences WHERE name = 'cvs_messages_cid'"), 0) + 1;
-        mysql_query("REPLACE INTO sequences VALUES ('cvs_messages_cid', $cid)");
+        $cid = xcvs_next_id('cvs_messages_cid');
 
         $uid = mysql_result(mysql_query("SELECT uid FROM cvs_accounts WHERE name = '". mysql_escape_string($user) ."'"), 0);
 
@@ -237,9 +233,6 @@ function xcvs_init($argc, $argv) {
           }
         }
 
-        // Lock the affected tables so avoid clashes (transactions):
-        mysql_query('UNLOCK TABLES');
-        
         mysql_close($connection);
      }
 
