summaryrefslogtreecommitdiff
path: root/sql/rpl_parallel.cc
diff options
context:
space:
mode:
authorunknown <knielsen@knielsen-hq.org>2013-09-16 14:33:49 +0200
committerunknown <knielsen@knielsen-hq.org>2013-09-16 14:33:49 +0200
commit5633dd822711a269098bdb127c76c4b1250fcf8d (patch)
tree3359d76be8be47f5e21d5c6c7f7d3e60f835d752 /sql/rpl_parallel.cc
parentd107bdaa01ad34b1afb4542b981b9b19af499f7b (diff)
downloadmariadb-git-5633dd822711a269098bdb127c76c4b1250fcf8d.tar.gz
MDEV-4506: parallel replication.
Add a simple test case. Fix bugs found.
Diffstat (limited to 'sql/rpl_parallel.cc')
-rw-r--r--sql/rpl_parallel.cc14
1 files changed, 13 insertions, 1 deletions
diff --git a/sql/rpl_parallel.cc b/sql/rpl_parallel.cc
index 7cf2c9162ff..b4c1f6c941a 100644
--- a/sql/rpl_parallel.cc
+++ b/sql/rpl_parallel.cc
@@ -72,6 +72,7 @@ rpt_handle_event(rpl_parallel_thread::queued_event *qev,
/* ToDo: Access to thd, and what about rli, split out a parallel part? */
mysql_mutex_lock(&rli->data_lock);
err= apply_event_and_update_pos(qev->ev, thd, rgi, rpt);
+ thd->rgi_slave= NULL;
/* ToDo: error handling. */
}
@@ -487,12 +488,22 @@ rpl_parallel_thread_pool::get_thread(rpl_parallel_entry *entry)
}
+static void
+free_rpl_parallel_entry(void *element)
+{
+ rpl_parallel_entry *e= (rpl_parallel_entry *)element;
+ mysql_cond_destroy(&e->COND_parallel_entry);
+ mysql_mutex_destroy(&e->LOCK_parallel_entry);
+ my_free(e);
+}
+
+
rpl_parallel::rpl_parallel() :
current(NULL)
{
my_hash_init(&domain_hash, &my_charset_bin, 32,
offsetof(rpl_parallel_entry, domain_id), sizeof(uint32),
- NULL, NULL, HASH_UNIQUE);
+ NULL, free_rpl_parallel_entry, HASH_UNIQUE);
}
@@ -667,6 +678,7 @@ rpl_parallel::do_event(rpl_group_info *serial_rgi, Log_event *ev)
qev->rgi= serial_rgi;
rpt_handle_event(qev, NULL);
delete_or_keep_event_post_apply(serial_rgi, typ, qev->ev);
+ my_free(qev);
return false;
}