List:Commits« Previous MessageNext Message »
From:cbell Date:March 14 2008 12:51pm
Subject:bk commit into 6.0 tree (cbell:1.2589) BUG#34858
View as plain text  
Below is the list of changes that have just been committed into a local
6.0 repository of cbell.  When cbell 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@stripped, 2008-03-14 08:51:11-04:00, cbell@mysql_cab_desk. +3 -0
  BUG#34858 Server crashes by backup tests 
  
  Patch fixes problems encountered when merging runtime code changes
  into main for online backup.

  mysql-test/t/disabled.def@stripped, 2008-03-14 08:51:06-04:00, cbell@mysql_cab_desk. +0 -5
    BUG#34858 Server crashes by backup tests 
    
    Reenabled disabled tests.

  sql/backup/backup_progress.cc@stripped, 2008-03-14 08:51:07-04:00, cbell@mysql_cab_desk. +37 -5
    BUG#34858 Server crashes by backup tests 
    
    Patch adds code to turn off binlogging for progress table writes.
    Patch fixes bug caused by changes to handler.cc WRT current thread
    access for writes.

  sql/backup/be_snapshot.cc@stripped, 2008-03-14 08:51:08-04:00, cbell@mysql_cab_desk. +1 -0
    BUG#34858 Server crashes by backup tests 
    
    Added code to perform commit of consistent read to avoid another
    problem introduced from changes to handler.cc.

diff -Nrup a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def
--- a/mysql-test/t/disabled.def	2008-03-10 08:58:17 -04:00
+++ b/mysql-test/t/disabled.def	2008-03-14 08:51:06 -04:00
@@ -35,8 +35,3 @@ backup_snapshot       :BUG#34235 pending
 csv_alter_table      : Bug#33696 2008-01-21 pcrews no .result file - bug allows NULL columns in CSV tables
 ctype_latin2_ch      : BUG #33791 2008-01-18 mats Wrong ORDER BY with latin2_czech_cs
 
-backup_errors        : Bug#34858 2008-Feb-28 Server crashes by backup tests
-backup_fkey          : Bug#34858 2008-Feb-28 Server crashes by backup tests
-backup_no_data       : Bug#34858 2008-Feb-28 Server crashes by backup tests
-backup_no_engine     : Bug#34858 2008-Feb-28 Server crashes by backup tests
-backup_objects       : Bug#34858 2008-Feb-28 Server crashes by backup tests
diff -Nrup a/sql/backup/backup_progress.cc b/sql/backup/backup_progress.cc
--- a/sql/backup/backup_progress.cc	2008-02-26 15:18:12 -05:00
+++ b/sql/backup/backup_progress.cc	2008-03-14 08:51:07 -04:00
@@ -276,6 +276,9 @@ int update_online_backup_int_field(ulong
   table= locking_thd->tables_in_backup->table;
   table->use_all_columns();
 
+  THD *t= table->in_use;
+  table->in_use= current_thd;
+
   if (find_online_backup_row(table, backup_id))
   {
     ret= close_backup_progress_table(locking_thd);
@@ -290,12 +293,17 @@ int update_online_backup_int_field(ulong
   table->field[fld]->store(value, TRUE);
   table->field[fld]->set_notnull();
 
+  tmp_disable_binlog(current_thd);
+
   /*
     Update the row.
   */
   if ((ret= table->file->ha_update_row(table->record[1], table->record[0])))
     table->file->print_error(ret, MYF(0));
 
+  reenable_binlog(current_thd);
+
+  table->in_use= t;
   ret= close_backup_progress_table(locking_thd);
   DBUG_RETURN(ret);
 }
@@ -336,6 +344,9 @@ int update_online_backup_datetime_field(
   table= locking_thd->tables_in_backup->table;
   table->use_all_columns();
 
+  THD *t= table->in_use;
+  table->in_use= current_thd;
+
   if (find_online_backup_row(table, backup_id))
   {
     ret= close_backup_progress_table(locking_thd);
@@ -356,12 +367,17 @@ int update_online_backup_datetime_field(
     table->field[fld]->store_time(&time, MYSQL_TIMESTAMP_DATETIME);
   }
 
+  tmp_disable_binlog(current_thd);
+
   /*
     Update the row.
   */
   if ((ret= table->file->ha_update_row(table->record[1], table->record[0])))
     table->file->print_error(ret, MYF(0));
 
+  reenable_binlog(current_thd);
+
+  table->in_use= t;
   ret= close_backup_progress_table(locking_thd);
   DBUG_RETURN(ret);
 }
@@ -470,16 +486,19 @@ ulonglong report_ob_init(int process_id,
       goto end;
     table->field[ET_FIELD_COMMAND]->set_notnull();
   }
-  table->in_use= t;
 
   table->next_number_field=table->found_next_number_field;
 
+  tmp_disable_binlog(current_thd);
+
   /*
     Write the row.
   */
   if ((ret= table->file->ha_write_row(table->record[0])))
     table->file->print_error(ret, MYF(0));
 
+  reenable_binlog(current_thd);
+
   /*
     Get last insert id for row.
   */
@@ -488,6 +507,7 @@ ulonglong report_ob_init(int process_id,
 
 end:
 
+  table->in_use= t;
   ret= close_backup_progress_table(locking_thd);
   /*
     Record progress update.
@@ -557,7 +577,8 @@ int report_ob_binlog_info(ulonglong back
       goto end;
     table->field[ET_FIELD_BINLOG_FILE]->set_notnull();
   }
-  table->in_use= t;
+
+  tmp_disable_binlog(current_thd);
 
   /*
     Update the row.
@@ -565,8 +586,11 @@ int report_ob_binlog_info(ulonglong back
   if ((ret= table->file->ha_update_row(table->record[1], table->record[0])))
     table->file->print_error(ret, MYF(0));
 
+  reenable_binlog(current_thd);
+
 end:
 
+  table->in_use= t;
   ret= close_backup_progress_table(locking_thd);
   DBUG_RETURN(ret);
 }
@@ -753,7 +777,8 @@ int report_ob_engines(ulonglong backup_i
       goto end;
     table->field[ET_FIELD_ENGINES]->set_notnull();
   }
-  table->in_use= t;
+
+  tmp_disable_binlog(current_thd);
 
   /*
     Update the row.
@@ -761,8 +786,11 @@ int report_ob_engines(ulonglong backup_i
   if ((ret= table->file->ha_update_row(table->record[1], table->record[0])))
     table->file->print_error(ret, MYF(0));
 
+  reenable_binlog(current_thd);
+
 end:
 
+  table->in_use= t;
   ret= close_backup_progress_table(locking_thd);
   DBUG_RETURN(ret);
 }
@@ -872,7 +900,6 @@ int report_ob_progress(ulonglong backup_
       goto end;
     table->field[ET_FIELD_PROG_NOTES]->set_notnull();
   }
-  table->in_use= t;
 
   if (start)
   {
@@ -899,14 +926,19 @@ int report_ob_progress(ulonglong backup_
   table->field[ET_FIELD_PROG_ERROR_NUM]->store(error_num, TRUE);
   table->field[ET_FIELD_PROG_ERROR_NUM]->set_notnull();
 
+  tmp_disable_binlog(current_thd);
+
   /*
     Write the row.
   */
   if ((ret= table->file->ha_write_row(table->record[0])))
     table->file->print_error(ret, MYF(0));
 
+  reenable_binlog(current_thd);
+
 end:
 
+  table->in_use= t;
   ret= close_backup_progress_table(locking_thd);
   DBUG_RETURN(ret);
 }
@@ -951,10 +983,10 @@ ulonglong sum_progress_rows(ulonglong ba
         (table->field[ET_FIELD_PROG_ERROR_NUM]->val_int() == 0) &&
         ((ulonglong)table->field[ET_FIELD_BACKUP_ID_FK]->val_int() == backup_id))
       size+= table->field[ET_FIELD_PROG_SIZE]->val_int();
-  table->in_use= t;
 
   hdl->ha_rnd_end();
 
+  table->in_use= t;
   close_backup_progress_table(locking_thd);
   DBUG_RETURN(size);
 }
diff -Nrup a/sql/backup/be_snapshot.cc b/sql/backup/be_snapshot.cc
--- a/sql/backup/be_snapshot.cc	2007-11-29 23:22:05 -05:00
+++ b/sql/backup/be_snapshot.cc	2008-03-14 08:51:08 -04:00
@@ -121,6 +121,7 @@ result_t Backup::get_data(Buffer &buf)
   if (locking_thd->lock_state == LOCK_SIGNAL)
   {
     locking_thd->lock_state= LOCK_DONE; // set lock done so destructor won't wait
+    ha_autocommit_or_rollback(locking_thd->m_thd, 0);
     end_active_trans(locking_thd->m_thd);
     close_thread_tables(locking_thd->m_thd);
   }

Thread
bk commit into 6.0 tree (cbell:1.2589) BUG#34858cbell14 Mar
  • Re: bk commit into 6.0 tree (cbell:1.2589) BUG#34858Guilhem Bichot14 Mar
  • Re: bk commit into 6.0 tree (cbell:1.2589) BUG#34858Rafal Somla17 Mar
    • RE: bk commit into 6.0 tree (cbell:1.2589) BUG#34858Chuck Bell17 Mar