maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #00496
Re: XtraDB merge into MariaDB
Vadim Tkachenko <vadim@xxxxxxxxxxx> writes:
> I made push to
>
> lp:~maria-captains/maria/mariadb-xtradb6-merge
>
> (not proposed for merge yet).
>
> If everything is fine we can merge it to maria.
I am now looking into this.
I have a hard time understanding this merge. It seems you just applied
manually a patch against latest lp:maria, omitting most (but not all?) of the
necessary fixes I already made in the tree
lp:~maria-captains/maria/mariadb-xtradb-merge2
I think we need to work instead from my merged tree, as that includes the full
bzr history of both lp:maria and lp:percona-xtradb. This is necessary to allow
smooth merging of future changes in XtraDB (and MariaDB).
Basically, the merge should be a simple `bzr merge` from the xtradb6 branch
into my mariadb-xtradb-merge2 branch, and then a merge of that result into
lp:maria. However, I do not know which branch contains the xtradb6 code (is it
pushed to Launchpad yet?). I assumed 'lp:percona-xtradb/release-6', but that
code seems to be missing the changes listed below compared to
mariadb-xtradb-merge.
Can you tell me which branch to merge to get the correct changes?
- Kristian.
-----------------------------------------------------------------------
diff -u --recursive ./buf/buf0rea.c ../mariadb-xtradb6-merge/storage/xtradb/buf/buf0rea.c
--- ./buf/buf0rea.c 2009-07-07 14:08:24.000000000 +0200
+++ ../mariadb-xtradb6-merge/storage/xtradb/buf/buf0rea.c 2009-07-07 14:02:21.000000000 +0200
@@ -134,6 +134,46 @@
bpage = buf_page_init_for_read(err, mode, space, zip_size, unzip,
tablespace_version, offset);
if (bpage == NULL) {
+ /* bugfix: http://bugs.mysql.com/bug.php?id=43948 */
+ if (recv_recovery_is_on() && *err == DB_TABLESPACE_DELETED) {
+ /* hashed log recs must be treated here */
+ recv_addr_t* recv_addr;
+
+ mutex_enter(&(recv_sys->mutex));
+
+ if (recv_sys->apply_log_recs == FALSE) {
+ mutex_exit(&(recv_sys->mutex));
+ goto not_to_recover;
+ }
+
+ /* recv_get_fil_addr_struct() */
+ recv_addr = HASH_GET_FIRST(recv_sys->addr_hash,
+ hash_calc_hash(ut_fold_ulint_pair(space, offset),
+ recv_sys->addr_hash));
+ while (recv_addr) {
+ if ((recv_addr->space == space)
+ && (recv_addr->page_no == offset)) {
+ break;
+ }
+ recv_addr = HASH_GET_NEXT(addr_hash, recv_addr);
+ }
+
+ if ((recv_addr == NULL)
+ || (recv_addr->state == RECV_BEING_PROCESSED)
+ || (recv_addr->state == RECV_PROCESSED)) {
+ mutex_exit(&(recv_sys->mutex));
+ goto not_to_recover;
+ }
+
+ fprintf(stderr, " (cannot find space: %lu)", space);
+ recv_addr->state = RECV_PROCESSED;
+
+ ut_a(recv_sys->n_addrs);
+ recv_sys->n_addrs--;
+
+ mutex_exit(&(recv_sys->mutex));
+ }
+not_to_recover:
return(0);
}
@@ -784,11 +824,11 @@
while (buf_pool->n_pend_reads >= recv_n_pool_free_frames / 2) {
os_aio_simulated_wake_handler_threads();
- os_thread_sleep(500000);
+ os_thread_sleep(10000);
count++;
- if (count > 100) {
+ if (count > 5000) {
fprintf(stderr,
"InnoDB: Error: InnoDB has waited for"
" 50 seconds for pending\n"
diff -u --recursive ./handler/innodb_patch_info.h ../mariadb-xtradb6-merge/storage/xtradb/handler/innodb_patch_info.h
--- ./handler/innodb_patch_info.h 2009-07-07 14:08:24.000000000 +0200
+++ ../mariadb-xtradb6-merge/storage/xtradb/handler/innodb_patch_info.h 2009-07-07 14:02:21.000000000 +0200
@@ -37,5 +37,6 @@
{"innodb_dict_size_limit","Limit dictionary cache size","Variable innodb_dict_size_limit in bytes","http://www.percona.com/docs/wiki/percona-xtradb"},
{"innodb_split_buf_pool_mutex","More fix of buffer_pool mutex","Spliting buf_pool_mutex and optimizing based on innodb_opt_lru_count","http://www.percona.com/docs/wiki/percona-xtradb"},
{"innodb_stats","Additional features about InnoDB statistics/optimizer","","http://www.percona.com/docs/wiki/percona-xtradb"},
+{"innodb_recovery_patches","Bugfixes and adjustments about recovery process","","http://www.percona.com/docs/wiki/percona-xtradb"},
{NULL, NULL, NULL, NULL}
};
diff -u --recursive ./include/univ.i ../mariadb-xtradb6-merge/storage/xtradb/include/univ.i
--- ./include/univ.i 2009-07-07 14:08:24.000000000 +0200
+++ ../mariadb-xtradb6-merge/storage/xtradb/include/univ.i 2009-07-07 14:02:43.000000000 +0200
@@ -35,7 +35,7 @@
#define INNODB_VERSION_MAJOR 1
#define INNODB_VERSION_MINOR 0
#define INNODB_VERSION_BUGFIX 3
-#define PERCONA_INNODB_VERSION 5a
+#define PERCONA_INNODB_VERSION 6
/* The following is the InnoDB version as shown in
SELECT plugin_version FROM information_schema.plugins;
diff -u --recursive ./log/log0recv.c ../mariadb-xtradb6-merge/storage/xtradb/log/log0recv.c
--- ./log/log0recv.c 2009-07-07 14:08:24.000000000 +0200
+++ ../mariadb-xtradb6-merge/storage/xtradb/log/log0recv.c 2009-07-07 14:02:21.000000000 +0200
@@ -110,7 +110,7 @@
use these free frames to read in pages when we start applying the
log records to the database. */
-UNIV_INTERN ulint recv_n_pool_free_frames = 256;
+UNIV_INTERN ulint recv_n_pool_free_frames = 1024;
/* The maximum lsn we see for a page during the recovery process. If this
is bigger than the lsn we are able to scan up to, that is an indication that
@@ -1225,6 +1225,8 @@
buf_block_get_page_no(block));
if ((recv_addr == NULL)
+ /* bugfix: http://bugs.mysql.com/bug.php?id=44140 */
+ || (recv_addr->state == RECV_BEING_READ && !just_read_in)
|| (recv_addr->state == RECV_BEING_PROCESSED)
|| (recv_addr->state == RECV_PROCESSED)) {
diff -u --recursive ./mysql-test/patches/events_stress.diff ../mariadb-xtradb6-merge/storage/xtradb/mysql-test/patches/events_stress.diff
--- ./mysql-test/patches/events_stress.diff 2009-07-07 14:08:24.000000000 +0200
+++ ../mariadb-xtradb6-merge/storage/xtradb/mysql-test/patches/events_stress.diff 2009-07-07 14:03:00.000000000 +0200
@@ -1,5 +1,5 @@
---- mysql-test/t/events_stress.test.orig 2009-04-16 19:39:47.000000000 +0000
-+++ mysql-test/t/events_stress.test 2009-04-16 19:41:16.000000000 +0000
+--- mysql-test/t/events_stress.test.orig 2009-07-05 10:29:14.000000000 +0000
++++ mysql-test/t/events_stress.test 2009-07-05 10:30:49.000000000 +0000
@@ -61,6 +61,7 @@
}
--enable_query_log
@@ -8,13 +8,15 @@
SET GLOBAL event_scheduler=on;
--sleep 2.5
DROP DATABASE events_conn1_test2;
-@@ -135,3 +136,4 @@
- #
-
+@@ -137,5 +138,5 @@
DROP DATABASE events_test;
+
+ # Cleanup
+-SET GLOBAL event_scheduler=off;
+SET GLOBAL event_scheduler=@old_event_scheduler;
---- mysql-test/r/events_stress.result.orig 2009-04-16 19:41:48.000000000 +0000
-+++ mysql-test/r/events_stress.result 2009-04-16 19:42:07.000000000 +0000
+ --source include/check_events_off.inc
+--- mysql-test/r/events_stress.result.orig 2009-07-05 10:54:30.000000000 +0000
++++ mysql-test/r/events_stress.result 2009-07-05 10:54:48.000000000 +0000
@@ -32,6 +32,7 @@
SELECT COUNT(*) FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA='events_conn1_test2';
COUNT(*)
@@ -23,8 +25,9 @@
SET GLOBAL event_scheduler=on;
DROP DATABASE events_conn1_test2;
SET GLOBAL event_scheduler=off;
-@@ -63,3 +64,4 @@
+@@ -63,4 +64,4 @@
DROP TABLE fill_it2;
DROP TABLE fill_it3;
DROP DATABASE events_test;
+-SET GLOBAL event_scheduler=off;
+SET GLOBAL event_scheduler=@old_event_scheduler;
Follow ups
References
-
Re: [Merge] lp:~maria-captains/maria/maria-xtradb into lp:maria
From: Kristian Nielsen, 2009-04-06
-
Re: [Merge] lp:~maria-captains/maria/maria-xtradb into lp:maria
From: Vadim Tkachenko, 2009-04-06
-
Re: [Merge] lp:~maria-captains/maria/maria-xtradb into lp:maria
From: Kristian Nielsen, 2009-04-07
-
Re: [Merge] lp:~maria-captains/maria/maria-xtradb into lp:maria
From: Kristian Nielsen, 2009-05-07
-
Re: [Merge] lp:~maria-captains/maria/maria-xtradb into lp:maria
From: Kristian Nielsen, 2009-06-09
-
Re: [Merge] lp:~maria-captains/maria/maria-xtradb into lp:maria
From: Vadim Tkachenko, 2009-06-09
-
Re: XtraDB merge into MariaDB
From: Kristian Nielsen, 2009-06-24
-
Re: XtraDB merge into MariaDB
From: Vadim Tkachenko, 2009-06-25
-
Re: XtraDB merge into MariaDB
From: Kristian Nielsen, 2009-06-25
-
Re: XtraDB merge into MariaDB
From: Vadim Tkachenko, 2009-07-06