--- modules/node.module.orig 2004-06-07 18:44:39.000000000 -0400 +++ modules/node.module 2004-06-10 20:48:56.170688942 -0400 @@ -92,12 +92,12 @@ function node_tag_new($nid) { global $user; if ($user->uid) { - $result = db_query('SELECT timestamp FROM {history} WHERE uid = %d AND nid = %d', $user->uid, $nid); - if (db_fetch_object($result)) { - db_query('UPDATE {history} SET timestamp = %d WHERE uid = %d AND nid = %d', time(), $user->uid, $nid); - } - else { - db_query('INSERT INTO {history} (uid, nid, timestamp) VALUES (%d, %d, %d)', $user->uid, $nid, time()); + db_query('UPDATE {history} SET timestamp = %d WHERE uid = %d AND nid = %d', time(), $user->uid, $nid); + if (!db_affected_rows()) { + if ($key = lock_lock($user->uid.$nid)) { + db_query('INSERT INTO {history} (uid, nid, timestamp) VALUES (%d, %d, %d)', $user->uid, $nid, time()); + lock_unlock($user->uid.$nid, $key); + } } } }