- 19 Oct, 2016 6 commits
- 17 Oct, 2016 6 commits
-
-
Sergey Vojtovich authored
On PPC64 high-loaded server may crash due to assertion failure in InnoDB rwlocks code. This happened because load order between "recursive" and "writer_thread" wasn't properly enforced.
-
Sergey Vojtovich authored
Clean-up periodic mutex/rwlock waiters wake up. This was a hack needed to workaround broken mutexes/rwlocks implementation. We must have sane implementations now and don't need these anymore: release thread is guaranteed to wake up waiters. Removed redundant ifdef that has equivalent code in both branches. Removed os0atomic.h and os0atomic.ic: not used anymore. Clean-up unused cmake checks.
-
Sergey Vojtovich authored
No point to issue RELEASE memory barrier in os_thread_create_func(): thread creation is full memory barrier. No point to issue os_wmb in rw_lock_set_waiter_flag() and rw_lock_reset_waiter_flag(): this is deadcode and it is unlikely operational anyway. If atomic builtins are unavailable - memory barriers are most certainly unavailable too. RELEASE memory barrier is definitely abused in buf_pool_withdraw_blocks(): most probably it was supposed to commit volatile variable update, which is not what memory barriers actually do. To operate properly it needs corresponding ACQUIRE barrier without an associated atomic operation anyway. ACQUIRE memory barrier is definitely abused in log_write_up_to(): most probably it was supposed to synchronize dirty read of log_sys->write_lsn. To operate properly it needs corresponding RELEASE barrier without an associated atomic operation anyway. Removed a bunch of ACQUIRE memory barriers from InnoDB rwlocks. They're meaningless without corresponding RELEASE memory barriers. Valid usage example of memory barriers without an associated atomic operation: http://en.cppreference.com/w/cpp/atomic/atomic_thread_fence
-
Sergey Vojtovich authored
Replaced InnoDB atomic operations with server atomic operations. Moved INNODB_RW_LOCKS_USE_ATOMICS - it is always defined (code won't compile otherwise). NOTE: InnoDB uses thread identifiers as a target for atomic operations. Thread identifiers should be considered opaque: any attempt to use a thread ID other than in pthreads calls is nonportable and can lead to unspecified results.
-
Sergey Vojtovich authored
Simplified InnoDB mutex implementations, corrected memory barriers usage, use server atomic builtins.
-
Kristian Nielsen authored
In 10.2, use the thd_rpl_deadlock_check() API. This way, all the locking hacks around thd_report_wait_for() can be removed. Now parallel replication deadlock kill happens asynchroneously, from the slave background thread. In InnoDB, remove also the buffering of wait reports, to simplify the code, as this is no longer needed when the locking issues are gone. In XtraDB, the buffering is kept for now. This is just because presumably XtraDB will eventually be updated to MySQL 5.7-based InnoDB as well, so there is little need to modify the existing code only for clean-up purposes. The old synchronous function thd_report_wait_for() is no longer used and removed in this patch. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
- 16 Oct, 2016 2 commits
-
-
Elena Stepanova authored
-
Kristian Nielsen authored
Merge feature into 10.2 from feature branch. Delayed replication adds an option CHANGE MASTER TO master_delay=<seconds> Replication will then delay applying events with that many seconds. This creates a replication slave that reflects the state of the master some time in the past. Feature is ported from MySQL source tree. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
- 15 Oct, 2016 1 commit
-
-
Vladislav Vaintroub authored
MDEV-10943 . Workaround linker error on Linux. Linux does not actually use __bss_start, put __bss_start into #ifndef __linux__ section
-
- 14 Oct, 2016 9 commits
-
-
Kristian Nielsen authored
Add test cases for delayed slave with parallel replication. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
Extend to work also for parallel replication. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
Only run testcase in --big. It takes a long time due to excessive sleeps. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
Problem: When using the delayed slave feature, and the SQL thread is delaying, and the user issues STOP SLAVE, the event we wait for was executed. It should not be executed. Fix: Check the return value from the delay function, slave.cc:slave_sleep(). If the return value is 1, it means the thread has been stopped, in this case we don't execute the statement. Also, refactored the test case for delayed slave a little: added the test script include/rpl_assert.inc, which asserts that a condition holds and prints a message if not. Made rpl_delayed_slave.test use this. The advantage is that the test file is much easier to read and maintain, because it is clear what is an assertion and what is not, and also the expected result can be found in the test file, you don't have to compare it to the result file. Manually merged into MariaDB from MySQL commit fd2b210383358fe7697f201e19ac9779879ba72a Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
The original MySQL patch left some refactoring todo's, possibly because of known conflicts with other parallel development (like info-repository feature perhaps). This patch fixes those todos/refactorings. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
Two merge error fixed, and testsuite updated to removed some other test failues. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
Initial merge of delayed replication from MySQL git. The code from the initial push into MySQL is merged, and the associated test case passes. A number of tasks are still pending: 1. Check full test suite run for any regressions or .result file updates. 2. Extend the feature to also work for parallel replication. 3. There are some todo-comments about future refactoring left from MySQL, these should be located and merged on top. 4. There are some later related MySQL commits, these should be checked and merged. These include: e134b9362ba0b750d6ac1b444780019622d14aa5 b38f0f7857c073edfcc0a64675b7f7ede04be00f fd2b210383358fe7697f201e19ac9779879ba72a afc397376ec50e96b2918ee64e48baf4dda0d37d 5. The testcase from MySQL relies heavily on sleep and timing for testing, and seems likely to sporadically fail on heavily loaded test servers in buildbot or distro build farms. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
The function apply_event_and_update_pos() is called with the rli->data_lock mutex held. However, there seems to be nothing in the function actually needing the mutex to be held. Certainly not in the parallel replication case, where sql_slave_skip_counter is always 0 since the non-zero case is handled by the SQL driver thread. So this patch makes parallel replication use a variant of apply_event_and_update_pos() without the need to take the rli->data_lock mutex. This avoids one contended global mutex for each event executed, which might improve performance on CPU-bound workloads somewhat. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
- 13 Oct, 2016 1 commit
-
-
Elena Stepanova authored
-
- 10 Oct, 2016 1 commit
-
-
Alexander Barkov authored
Part 3 (final): removing MY_CHARSET_HANDLER::well_formed_len().
-
- 09 Oct, 2016 2 commits
-
-
Otto Kekäläinen authored
-
Otto Kekäläinen authored
-
- 08 Oct, 2016 6 commits
-
-
Otto Kekäläinen authored
-
Alexander Barkov authored
The result of binlog_{row|stm}_ctype_ucs.test depended on the machine time zone setting. Making the test timzone independent.
-
Alexander Barkov authored
MDEV-10867 PREPARE..EXECUTE is not consistent about non-ASCII characters
-
Alexander Barkov authored
-
Alexander Barkov authored
-
Alexander Barkov authored
-
- 07 Oct, 2016 6 commits
-
-
Otto Kekäläinen authored
Previously Travis-CI stated that cracklib is forbidden, but it does not longer seem to be the case.
-
Otto Kekäläinen authored
Now we check if a dependency is available and not just if older versions are available. Also use correct name of libcrack2 to actually detect it. Use sed to inject dependency at the end of the dependency list. Otherwise keep the control line clean and parseable by Debian tools.
-
Otto Kekäläinen authored
-
Otto Kekäläinen authored
- All build-depends should be in one place. - Library packages should depend on their main package using strict version. - Most packages should depend on the misc variable, so that debhelper can fill in it with various calculated dependencies automatically. - All packages using dynamic libraries should depend on the shlibs variable to include shared libraries as dependencies automatically. - Essential tools like bsdutils, grep and tar shall not be defined in vain.
-
Otto Kekäläinen authored
-
Otto Kekäläinen authored
-