List:Commits« Previous MessageNext Message »
From:Oystein.Grovlen Date:November 11 2008 9:56am
Subject:bzr commit into mysql-6.0-backup branch (oystein.grovlen:2731)
Bug#40480
View as plain text  
#At file:///home/oysteing/mysql/mysql-6.0-backup-valgrind/

 2731 oystein.grovlen@stripped	2008-11-11
      Bug#40480 - valgrind errors which are not seen in PB
      
      Fixes all backup related issues reported by valgrind when running 
      the backup test suite.
modified:
  sql/backup/kernel.cc
  sql/backup/logger.h
  sql/backup/stream_v1.c

per-file messages:
  sql/backup/kernel.cc
    1. Move report_cleanup() to Backup_Restore_ctx destructor to make sure clean up is
always done.  Earlier it was sometimes skipped in error scenarios.  (I tried doing the
cleanup in the Logger destructor, but that created problems.  For some strange reason the
logger destructor was called twice on the same object.)
    
    2. Free allocated table space object in case of errors.
  sql/backup/logger.h
    1. Set backup_up pointer to NULL after destruction to prevent attempts to destruct it
twice.
    
    2. Make sure to initialize error in Logger constructor.
  sql/backup/stream_v1.c
    Make sure iterator is freed on errors.
=== modified file 'sql/backup/kernel.cc'
--- a/sql/backup/kernel.cc	2008-10-30 20:02:15 +0000
+++ b/sql/backup/kernel.cc	2008-11-11 08:56:31 +0000
@@ -331,7 +331,6 @@ int send_reply(Backup_restore_ctx &conte
     goto err;
   }
   my_eof(context.thd());                        // Never errors
-  context.report_cleanup();                     // Never errors
   DBUG_RETURN(0);
 
  err:
@@ -399,7 +398,8 @@ Backup_restore_ctx::Backup_restore_ctx(T
 Backup_restore_ctx::~Backup_restore_ctx()
 {
   close();
-  
+  report_cleanup();                     // Never errors
+
   delete mem_alloc;
   delete m_catalog;  
   delete m_stream;
@@ -1971,6 +1971,7 @@ int bcat_create_item(st_bstream_image_he
     {
       DBUG_PRINT("restore",(" tablespace has changed on the server - aborting"));
       info->m_ctx.fatal_error(ER_BACKUP_TS_CHANGE, desc);
+      delete ts;
       return BSTREAM_ERROR;
     }
   }

=== modified file 'sql/backup/logger.h'
--- a/sql/backup/logger.h	2008-10-30 17:53:24 +0000
+++ b/sql/backup/logger.h	2008-11-11 08:56:31 +0000
@@ -67,7 +67,7 @@ class Logger
      DBUG_ASSERT(backup_log);
      return backup_log->get_backup_id(); 
    }
-   void report_cleanup() { delete backup_log; }
+   void report_cleanup() { delete backup_log; backup_log = 0; }
    
    void save_errors();
    void stop_save_errors();
@@ -96,7 +96,10 @@ inline
 Logger::Logger(THD *thd) 
   :m_type(BACKUP), m_state(CREATED),
    m_thd(thd), m_save_errors(FALSE), m_push_errors(TRUE), backup_log(0)
-{}
+{
+  clear_saved_errors();
+}
+ 
 
 inline
 Logger::~Logger()

=== modified file 'sql/backup/stream_v1.c'
--- a/sql/backup/stream_v1.c	2008-09-30 08:08:16 +0000
+++ b/sql/backup/stream_v1.c	2008-11-11 08:56:31 +0000
@@ -1277,10 +1277,9 @@ int bstream_wr_meta_data(backup_stream *
     CHECK_WR_RES(bstream_wr_item_def(s,cat,PER_TABLE_ITEM,item));
   }
 
+wr_error:
   bcat_iterator_free(cat,iter);
 
-  wr_error:
-
   return ret;
 }
 

Thread
bzr commit into mysql-6.0-backup branch (oystein.grovlen:2731)Bug#40480Oystein.Grovlen11 Nov
  • Re: bzr commit into mysql-6.0-backup branch (oystein.grovlen:2731)Bug#40480Rafal Somla12 Nov
    • Re: bzr commit into mysql-6.0-backup branch (oystein.grovlen:2731)Bug#40480Øystein Grøvlen12 Nov