Index: modules/comment/comment.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v
retrieving revision 1.652
diff -u -p -r1.652 comment.module
--- modules/comment/comment.module	27 Sep 2008 20:37:00 -0000	1.652
+++ modules/comment/comment.module	28 Sep 2008 00:19:18 -0000
@@ -609,6 +609,19 @@ function comment_user($type, $edit, &$us
   }
 }
 
+
+/**
+ * Implementation of hook_comment().
+ */
+function comment_comment($comment, $op) {
+  switch ($op) {
+    case 'insert':
+    case 'update':
+      $_SESSION['ignore_slave_server'] = REQUEST_TIME + variable_get('maximal_replication_lag', 10);
+      break;
+  }
+}
+
 /**
  * This is *not* a hook_access() implementation. This function is called
  * to determine whether the current user has access to a particular comment.
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.978
diff -u -p -r1.978 node.module
--- modules/node/node.module	27 Sep 2008 19:47:43 -0000	1.978
+++ modules/node/node.module	28 Sep 2008 00:19:19 -0000
@@ -1389,6 +1389,19 @@ function node_user($op, &$edit, &$user) 
 }
 
 /**
+ * Implementation of hook_nodeapi().
+ */
+function node_nodeapi(&$node, $op, $arg = 0) {
+  switch ($op) {
+    case 'update':
+    case 'insert':
+      $_SESSION['ignore_slave_server'] = REQUEST_TIME + variable_get('maximal_replication_lag', 10);
+      break;
+  }
+}
+
+
+/**
  * Theme the content ranking part of the search settings admin page.
  *
  * @ingroup themeable
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.624
diff -u -p -r1.624 system.module
--- modules/system/system.module	27 Sep 2008 19:47:43 -0000	1.624
+++ modules/system/system.module	28 Sep 2008 00:19:20 -0000
@@ -692,6 +692,17 @@ function system_init() {
   drupal_add_css(drupal_get_path('module', 'system') . '/defaults.css', 'module');
   drupal_add_css(drupal_get_path('module', 'system') . '/system.css', 'module');
   drupal_add_css(drupal_get_path('module', 'system') . '/system-menus.css', 'module');
+
+  // Check whether this user should not use a potential slave server
+  // for the current request.
+  if (isset($_SESSION['ignore_slave_server'])) {
+    if ($_SESSION['ignore_slave_server'] < REQUEST_TIME) {
+      Database::ignoreTarget('default', 'slave');
+    }
+    else {
+      unset($_SESSION['ignore_slave_server']);
+    }
+  }
 }
 
 /**
