Pantek Library
Hosting Provided By
CybrHost
High Speed Hosting

bk commit into 5.0 tree (anozdrin:1.2524) BUG#16918

From: Alexander Nozdrin <alik(at)mysql.com>
Date: Thu Sep 13 2007 - 09:30:51 EDT


Below is the list of changes that have just been committed into a local 5.0 repository of alik. When alik does a push these changes will be propagated to the main repository and, within 24 hours after the push, to the public repository.
For information on how to access the public repository see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@1.2524, 2007-09-13 17:30:44+04:00, anozdrin@station. +2 -0   Bug#16918: Aborted_clients > Connections.   

  The problem was that aborted_threads variable was updated   twice when a client connection had been aborted.   

  The fix is to refactor a code to have aborted_threads updated   only in one place.

  sql/mysql_priv.h@1.461, 2007-09-13 17:30:42+04:00, anozdrin@station. +0 -1     Make do_command() a private function.

  sql/sql_parse.cc@1.636, 2007-09-13 17:30:43+04:00, anozdrin@station. +17 -10

  1. Make do_command() a private function;
  2. Update aborted_threads in the only one place.

diff -Nrup a/sql/mysql_priv.h b/sql/mysql_priv.h

--- a/sql/mysql_priv.h	2007-08-16 20:56:08 +04:00

+++ b/sql/mysql_priv.h 2007-09-13 17:30:42 +04:00
@@ -726,7 +726,6 @@ pthread_handler_t handle_bootstrap(void  void end_thread(THD *thd,bool put_in_cache);  void flush_thread_cache();
 bool mysql_execute_command(THD *thd);
-bool do_command(THD *thd);
 bool dispatch_command(enum enum_server_command command, THD *thd,

                       char* packet, uint packet_length);  void log_slow_statement(THD *thd);
diff -Nrup a/sql/sql_parse.cc b/sql/sql_parse.cc

--- a/sql/sql_parse.cc	2007-08-05 07:53:13 +04:00

+++ b/sql/sql_parse.cc 2007-09-13 17:30:43 +04:00
@@ -93,6 +93,8 @@ const char *xa_state_names[]={
Do you need help?X

   "NON-EXISTING", "ACTIVE", "IDLE", "PREPARED"  };  

+static bool do_command(THD *thd);
+

 #ifdef __WIN__
 static void test_signal(int sig_ptr)
 {
@@ -1199,23 +1201,28 @@ pthread_handler_t handle_one_connection(

     }
     if (thd->user_connect)
       decrease_user_connections(thd->user_connect);

+
+ if (thd->killed ||
+ net->vio && net->error && net->report_error)
+ {
+ statistic_increment(aborted_threads, &LOCK_status);
+ }
+
     if (net->error && net->vio != 0 && net->report_error)
     {
       if (!thd->killed && thd->variables.log_warnings > 1)
-	sql_print_warning(ER(ER_NEW_ABORTING_CONNECTION),

+ {
+ sql_print_warning(ER(ER_NEW_ABORTING_CONNECTION),
thd->thread_id,(thd->db ? thd->db : "unconnected"), sctx->user ? sctx->user : "unauthenticated", sctx->host_or_ip, (net->last_errno ? ER(net->last_errno) : ER(ER_UNKNOWN_ERROR)));
+ }
+
net_send_error(thd, net->last_errno, NullS); - statistic_increment(aborted_threads,&LOCK_status); } - else if (thd->killed) - { - statistic_increment(aborted_threads,&LOCK_status);
- }
-
+

 end_thread:
     close_connection(thd, 0, 1);
     end_thread(thd,1);
@@ -1550,12 +1557,12 @@ bool do_command(THD *thd)
     DBUG_PRINT("info",("Got error %d reading command from socket %s",
 		       net->error,
 		       vio_description(net->vio)));

+
/* Check if we can continue without closing the connection */
+
if (net->error != 3) - { - statistic_increment(aborted_threads,&LOCK_status); DBUG_RETURN(TRUE); // We have to close it.
- }
+
     net_send_error(thd, net->last_errno, NullS);
     net->error= 0;
     DBUG_RETURN(FALSE);
-- 
MySQL Code Commits Mailing List
For list archives: 
http://lists.mysql.com/commits
To unsubscribe:    
http://lists.mysql.com/commits?unsub=lists@pantek.com
Received on Thu Sep 13 09:29:14 2007

This archive was generated by hypermail 2.1.8 : Sun Oct 07 2007 - 09:24:41 EDT


Contact Us  Legal Notices  Order Services Online 
Pantek Home  Privacy Policy  IT news  Site Map  Pantek Library