- 24 Apr, 2015 1 commit
-
-
Alexander Barkov authored
between Item_func, Item_sum, Item_row.
-
- 23 Apr, 2015 2 commits
-
-
Kristian Nielsen authored
-
Kristian Nielsen authored
MDEV-8031: Parallel replication stops on "connection killed" error (probably incorrectly handled deadlock kill) There was a rare race, where a deadlock error might not be correctly handled, causing the slave to stop with something like this in the error log: 150423 14:04:10 [ERROR] Slave SQL: Connection was killed, Gtid 0-1-2, Internal MariaDB error code: 1927 150423 14:04:10 [Warning] Slave: Connection was killed Error_code: 1927 150423 14:04:10 [Warning] Slave: Deadlock found when trying to get lock; try restarting transaction Error_code: 1213 150423 14:04:10 [Warning] Slave: Connection was killed Error_code: 1927 150423 14:04:10 [Warning] Slave: Connection was killed Error_code: 1927 150423 14:04:10 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'master-bin.000001 position 1234 The problem was incorrect error handling. When a deadlock is detected, it causes a KILL CONNECTION on the offending thread. This error is then later converted to a deadlock error, and the transaction is retried. However, the deadlock error was not cleared at the start of the retry, nor was the lingering kill signal. So it was possible to get another deadlock kill early during retry. If this happened with particular thread scheduling/timing, it was possible that the new KILL CONNECTION error was masked by the earlier deadlock error, so that the second kill was not properly converted into a deadlock error and retry. This patch adds code that clears the old error and killed flag before starting the retry. It also adds code to handle a deadlock kill caught in a couple of places where it was not handled before.
-
- 22 Apr, 2015 1 commit
-
-
Alexander Barkov authored
-
- 21 Apr, 2015 2 commits
-
-
Kristian Nielsen authored
-
Kristian Nielsen authored
Fix a silly typo that caused the test to occasionally fail.
-
- 20 Apr, 2015 6 commits
-
-
Kristian Nielsen authored
-
Kristian Nielsen authored
-
Kristian Nielsen authored
-
Kristian Nielsen authored
-
Kristian Nielsen authored
This was a regression from the patch for MDEV-7668. A test was incorrect, so the slave would not properly handle re-using temporary tables, which lead to replication failure in this case.
-
Alexander Barkov authored
-
- 19 Apr, 2015 1 commit
-
-
Elena Stepanova authored
-
- 17 Apr, 2015 7 commits
-
-
Kristian Nielsen authored
-
Kristian Nielsen authored
-
Kristian Nielsen authored
Conflicts: mysql-test/suite/multi_source/multisource.result sql/sql_base.cc
-
Alexander Barkov authored
Removing "Field *result_field" from Item_field and Item_ref, and deriving Item_ident and Item_ref from Item_result_field instead.
-
Kristian Nielsen authored
-
Alexander Barkov authored
as the other decendants of Item_result_field (Item_avg_field, Item_variance_field, Item_cache_wrapper) don't need fix_length_and_dec().
-
Alexander Barkov authored
- Adding a new class Item_args, represending regular function or aggregate function arguments array. - Adding a new class Item_func_or_sum, a parent class for Item_func and Item_sum - Moving Item_result_field::name() to Item_func_or_sum(), as name() is not needed on Item_result_field level.
-
- 16 Apr, 2015 1 commit
-
-
Nirbhay Choubey authored
-
- 15 Apr, 2015 2 commits
-
-
Nirbhay Choubey authored
Post-fix : A typo and better error handling.
-
Nirbhay Choubey authored
-
- 14 Apr, 2015 4 commits
-
-
Kristian Nielsen authored
-
Kristian Nielsen authored
-
Kristian Nielsen authored
Add some suppressions that were missing. They are for if a STOP SLAVE is executed early during IO thread startup, when it is negotiating with the master. The master connection may be killed in the middle of a mysql_real_query(), which is not a test failure if it is a network error. This also caught one real code error, fixed with this commit: The I/O thread would fail to automatically reconnect if a network error happened while fetching the value of @@GLOBAL.gtid_domain_id.
-
Sergei Petrunia authored
-
- 13 Apr, 2015 7 commits
-
-
Alexander Barkov authored
-
Kristian Nielsen authored
MDEV-7936: Assertion `!table || table->in_use == _current_thd()' failed on parallel replication in optimistic mode Additional 10.1-specific test case.
-
Kristian Nielsen authored
-
Kristian Nielsen authored
Conflicts: sql/sql_base.cc
-
Kristian Nielsen authored
MDEV-7936: Assertion `!table || table->in_use == _current_thd()' failed on parallel replication in optimistic mode Make sure that in parallel replication, we execute wait_for_prior_commit() before setting table->in_use for a temporary table. Otherwise we can end up with two parallel replication worker threads competing with each other for use of a temporary table. Re-factor the use of find_temporary_table() to be able to handle errors in the caller (as wait_for_prior_commit() can return error in case of deadlock kill).
-
Kristian Nielsen authored
MDEV-7668: Intermediate master groups CREATE TEMPORARY with INSERT, causing parallel replication failure [This commit cherry-picked to be able to merge MDEV-7936, of which it is a pre-requisite, into both 10.0 and 10.1.] Parallel replication depends on locking (table locks, row locks, etc.) to prevent two conflicting transactions from running and committing in parallel. But temporary tables are designed to be visible only to one thread, and have no such locking. In the concrete issue, an intermediate master could commit a CREATE TEMPORARY TABLE in the same group commit as in INSERT into that table. Thus, a lower-level master could attempt to run them in parallel and get an error. More generally, we need protection from parallel replication trying to run transactions in parallel that access a common temporary table. This patch simply causes use of a temporary table from parallel replication to wait for all previous transactions to commit, serialising the replication at that point. (A more fine-grained locking could be added later, possibly. However, using temporary tables in statement-based replication is in any case normally undesirable; for example a restart of the server will lose temporary tables and can break replication). Note that row-based replication is not affected, as it does not do any temporary tables on the slave-side. This patch also cleans up the locking around protecting the list of temporary tables in Relay_log_info. This used to take the rli->data_lock at the end of every statement, which is very bad for concurrency. With this patch, the lock is not taken unless temporary tables (with statement-based binlogging) are in use on the slave.
-
Alexander Barkov authored
-
- 12 Apr, 2015 6 commits
-
-
Sergei Petrunia authored
-
Sergei Petrunia authored
-
Sergei Petrunia authored
Fix EXPLAIN FORMAT=JSON to produce output that's not worse than the tabular form.
-
Sergei Petrunia authored
-
Sergei Petrunia authored
-
Sergei Petrunia authored
-