List:Commits« Previous MessageNext Message »
From:rsomla Date:March 25 2008 2:22pm
Subject:bk commit into 6.0 tree (rafal:1.2606) BUG#34721
View as plain text  
Below is the list of changes that have just been committed into a local
6.0 repository of rafal.  When rafal 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-25 15:22:11+01:00, rafal@quant.(none) +2 -0
  BUG#34721 (Backup driver can't refuse to provide driver):
  
  This patch modifies backup kernel so that it falls back to built in backup 
  engines in case a native backup engine can not be created. 
  
  This is for the special case when storage engine defines a get_backup_engine() 
  factory function (inside the handlerton), but that function fails to create a 
  backup engine instance. Previous code haven't dealt correctly with that case. 
  Now it puts a warning and tries the built-in engines.

  sql/backup/backup_info.cc@stripped, 2008-03-25 15:22:04+01:00, rafal@quant.(none) +10 -9
    In case a native backup engine has been selected for a given table, check if 
    created Native_snapshot object is valid (in particular, has successfully created 
    the engine). Only then use it for that table, otherwise try other backup engines 
    including the built-in ones.

  sql/backup/be_native.h@stripped, 2008-03-25 15:22:05+01:00, rafal@quant.(none) +1 -1
    If the get_backup_engine() factory function defined by a storage engine failes 
    to create a native backup engine don't treat it as a (fatal) error. In that case 
    we will try to use default, built-in backup engines. Thus only warning is printed.

diff -Nrup a/sql/backup/backup_info.cc b/sql/backup/backup_info.cc
--- a/sql/backup/backup_info.cc	2008-03-21 09:43:43 +01:00
+++ b/sql/backup/backup_info.cc	2008-03-25 15:22:04 +01:00
@@ -83,16 +83,17 @@ Backup_info::find_backup_engine(const ba
     {
       Native_snapshot *nsnap= new Native_snapshot(m_ctx, se);
       DBUG_ASSERT(nsnap);
-      snapshots.push_front(nsnap);
-      native_snapshots.insert(se, nsnap);
 
-      /*
-        Question: Can native snapshot for a given storage engine not accept
-        a table using that engine? If yes, then what to do in that case - error 
-        or try other (default) snapshots?
-       */     
-      DBUG_ASSERT(nsnap->accept(tbl, se));
-      snap= nsnap;
+      if (nsnap->is_valid())
+      {
+        snapshots.push_front(nsnap);
+        native_snapshots.insert(se, nsnap);
+
+        if (nsnap->accept(tbl, se))        
+          snap= nsnap;
+      }
+      else
+        delete nsnap;
     }
   
   /* 
diff -Nrup a/sql/backup/be_native.h b/sql/backup/be_native.h
--- a/sql/backup/be_native.h	2008-03-04 17:06:22 +01:00
+++ b/sql/backup/be_native.h	2008-03-25 15:22:05 +01:00
@@ -97,7 +97,7 @@ int Native_snapshot::init(Logger &log, c
     if (m_be)
       m_be->free();
     m_be= NULL;
-    log.report_error(ER_BACKUP_CREATE_BE, m_name);
+    log.report_error(log_level::WARNING, ER_BACKUP_CREATE_BE, m_name);
     return 1;
   }
   
Thread
bk commit into 6.0 tree (rafal:1.2606) BUG#34721rsomla25 Mar
  • RE: bk commit into 6.0 tree (rafal:1.2606) BUG#34721Chuck Bell26 Mar
    • Re: bk commit into 6.0 tree (rafal:1.2606) BUG#34721Rafal Somla31 Mar
      • RE: bk commit into 6.0 tree (rafal:1.2606) BUG#34721Chuck Bell31 Mar
        • Re: bk commit into 6.0 tree (rafal:1.2606) BUG#34721Rafal Somla31 Mar
          • RE: bk commit into 6.0 tree (rafal:1.2606) BUG#34721Chuck Bell1 Apr