From: Chuck Bell Date: March 26 2008 5:14pm Subject: RE: bk commit into 6.0 tree (rafal:1.2606) BUG#34721 List-Archive: http://lists.mysql.com/commits/44468 Message-Id: <763ADBE795E24C9A83FD7EF2D7619178@mysqlcabdesk> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Rafal, I think we need to add a test for this using DBUG_EXECUTE_IF(). It will help us detect problems when new native drivers are added and/or some collateral errors occur based changes to the server or backup code. Chuck > -----Original Message----- > From: rsomla@stripped [mailto:rsomla@stripped] > Sent: Tuesday, March 25, 2008 10:22 AM > To: commits@stripped > Subject: bk commit into 6.0 tree (rafal:1.2606) BUG#34721 > > 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; > } > > > -- > MySQL Code Commits Mailing List > For list archives: http://lists.mysql.com/commits > To unsubscribe: > http://lists.mysql.com/commits?unsub=cbell@stripped >