- 14 May, 2017 1 commit
-
-
Elena Stepanova authored
-
- 12 May, 2017 4 commits
-
-
Marko Mäkelä authored
In 10.2, the definition of simple_counter resides in the file sync0types.h, not in the file os0sync.h which has been removed.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
There is a race condition related to the variable srv_stats.n_lock_wait_current_count, which is only incremented and decremented by the function lock_wait_suspend_thread(), The incrementing is protected by lock_sys->wait_mutex, but the decrementing does not appear to be protected by anything. This mismatch could allow the counter to be corrupted when a transactional InnoDB table or record lock wait is terminating roughly at the same time with the start of a wait on a (possibly different) lock. ib_counter_t: Remove some unused methods. Prevent instantiation for N=1. Add an inc() method that takes a slot index as a parameter. single_indexer_t: Remove. simple_counter<typename Type, bool atomic=false>: A new counter wrapper. Optionally use atomic memory operations for modifying the counter. Aligned to the cache line size. lsn_ctr_1_t, ulint_ctr_1_t, int64_ctr_1_t: Define as simple_counter<Type>. These counters are either only incremented (and we do not care about losing some increment operations), or the increment/decrement operations are protected by some mutex. srv_stats_t::os_log_pending_writes: Document that the number is protected by log_sys->mutex. srv_stats_t::n_lock_wait_current_count: Use simple_counter<ulint, true>, that is, atomic inc() and dec() operations. lock_wait_suspend_thread(): Release the mutexes before incrementing the counters. Avoid acquiring the lock mutex if the lock wait has already been resolved. Atomically increment and decrement srv_stats.n_lock_wait_current_count. row_insert_for_mysql(), row_update_for_mysql(), row_update_cascade_for_mysql(): Use the inc() method with the trx->id as the slot index. This is a non-functional change, just using inc() instead of add(1). buf_LRU_get_free_block(): Replace the method add(index, n) with inc(). There is no slot index in the simple_counter.
-
- 11 May, 2017 2 commits
-
-
Michael Widenius authored
This was because of two issues: - thr_multi_lock_after_thr_lock needed to be hit 3 times before go2 could be signaled, because 2 of these happened before statistics_update_start was reached. - The original code didn't take into accunt that thr_locks can be executed in any random order, which caused sporadic failures when waiting for 1 lock of 3, as if the locks where in different order, there would be a dead-lock. Fixed by introducing thr_multi_lock_before_thr_lock which is deterministic. - Some of the test failures where not noticed as the DEBUG_SYNC timeout would cause the test to pass (after 300 seconds).
-
Michael Widenius authored
-
- 10 May, 2017 11 commits
-
-
Jan Lindström authored
MDEV-11197: TrxInInnoDB::is_aborted(const trx_t*): Assertion `srv_read_only_mode || trx->in_depth > 0' failed TrxInInnoDB should be constructed to track if a transaction is executing inside InnoDB code i.e. it is like a gate between Server and InnoDB ::rnd_next() is called from Server and thus construct TrxInInnoDB also there. Applied suggested clean-up to TrxInInnoDB class functions enter() and exit(). Note that exactly original did not work for enter().
-
Marko Mäkelä authored
The InnoDB temporary tablespace is only usable if innodb_read_only=OFF. It is useless to create the tablespace in read-only mode, because CREATE TEMPORARY TABLE is disallowed if innodb_read_only, and nothing can we written to the temporary tablespace if no temporary tables can be created.
-
Sergei Golubchik authored
fix sporadic innodb.truncate_purge_debug failures
-
Oleksandr Byelkin authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
because it tests for variables that aren't compiled for Windows, like --innodb-priority-cleaner
-
Marko Mäkelä authored
The latest attempted fix for MDEV-11802 InnoDB purge fails to start when there is work to do is not complete. For now, work around the issue by making SHOW ENGINE INNODB STATUS call srv_wake_purge_thread_if_not_active() to wake up the purge.
-
Marko Mäkelä authored
MDEV-12679 purge_sys_t::~purge_sys_t(): Assertion `latch.magic_n == 0' failed on --bootstrap (CMAKE_BUILD_TYPE=Debug) rw_lock_free_func(): Assign lock->magic_n = 0 in debug builds, because sometimes, the assignment in the explicit destructor call is being optimized away. This was verified when using GCC 6.3.0 with -O3 -g -mtune=native on a Debian GNU/Linux 9.0 system on AMD64.
-
Marko Mäkelä authored
Use uint32_t for the encryption key_id. When filling unsigned integer values into INFORMATION_SCHEMA tables, use the method Field::store(longlong, bool unsigned) instead of using Field::store(double). Fix also some miscellanous type mismatch related to ulint (size_t).
-
Oleksandr Byelkin authored
-
Marko Mäkelä authored
The issue was a bad merge of MDEV-12253 from 10.1 to 10.2 in commit f9cc3918. In that merge, I wrongly assumed that all test file conflicts for mysql-test/suite/encryption had been properly resolved in bb-10.2-MDEV-12253 (commit 76aa6be77635c7017459ce33b41c837c9acb606d) while in fact, some files there had been copied from the 10.1 branch. This commit is based on a manually done conflict resolution of the mysql-test/suite/encryption on the same merge, applied to the current 10.2 branch. As part of this commit, the test encryption.innodb-bad-key-change4 which was shortly disabled due to MDEV-11336 will be re-enabled again. (While the test enables innodb_defragment, it does not fail even though enabling innodb_defragment currently has no effect.)
-
- 09 May, 2017 22 commits
-
-
Sergei Golubchik authored
Apparently openssl ignores CRYPTO_set_mem_functions() in fips mode, so we cannot detect structure sizes. Don't freak out when no mallocs were detected.
-
Elena Stepanova authored
-
Elena Stepanova authored
Tests which fail on Xenial fulltest
-
Vladislav Vaintroub authored
-
Marko Mäkelä authored
When MySQL 5.7.9 was merged to MariaDB 10.2.2, an important debug assertion was omitted from mlog_write_initial_log_record_low(). mlog_write_initial_log_record_low(): Put back the assertion mtr_t::is_named_space(). fil_crypt_start_encrypting_space(), fil_crypt_rotate_page(): Call mtr_t::set_named_space() before modifying any pages. fsp_flags_try_adjust(): Call mtr_t::set_named_space(). This additional breakage was introduced in the merge of MDEV-11623 from 10.1. It was not caught because of the missing debug assertion in mlog_write_initial_log_record_low(). Remove some suppressions from the encryption.innodb-redo-badkey test.
-
Jan Lindström authored
Added a new file ha_xtradb.h where XtraDB parameters are defined. This file is included in two places to avoid too intrusive change to ha_innodb.cc that would make future merges harder. innodb_show_locks_held and innodb_show_verbose_locks should be implemented (but on different commit).
-
Jan Lindström authored
-
Sergei Golubchik authored
post-review fixes: * move all ssl implementation related ifdefs/defines to one file (ssl_compat.h) * work around OpenSSL-1.1 desire to malloc every EVP context by run-time checking that context allocated on the stack is big enough (openssl.c) * use newer version of the AWS SDK for OpenSSL 1.1 * use get_dh2048() function as generated by openssl 1.1 (viosslfactories.c)
-
Georg Richter authored
Initial support tested against OpenSSL 1.0.1, 1.0.2, 1.1.0, Yassl and LibreSSL not working on Windows with native SChannel support, due to wrong cipher mapping: Latter one requires push of CONC-241 fixes. Please note that OpenSSL 0.9.8 and OpenSSL 1.1.0 will not work: Even if the build succeeds, test cases will fail with various errors, especially when using different tls libraries or versions for client and server.
-
Sergei Golubchik authored
-
Jan Lindström authored
In windows error message contains .exe.
-
Sachin Setiya authored
Reason for this crash is that table->rpl_write_set is NULL. In Rows_log_event::do_apply_event we set table->rpl_write_set equal to table->write_set. But we do not set table->rpl_write_set in Old_rows_log_event::do_apply_event.
-
Marko Mäkelä authored
This is a backport from 10.2 where it fixes the cmake -DWITH_ASAN test failure that was mentioned in commit f9cc3918 (merging MDEV-12253 from 10.1 to 10.2). fil_parse_write_crypt_data(): If the tablespace is not found, invoke fil_space_destroy_crypt_data(&crypt_data) to properly free the created object.
-
Marko Mäkelä authored
The function buf_read_page_low() invokes fil_io(), which can return DB_ERROR when the requested page is out of bounds (such as when restoring a buffer pool dump). The callers should be handling that.
-
Sergei Golubchik authored
Revert commit db0917f6, because the fix for MDEV-12696 is coming from 5.5 and 10.1 in this merge.
-
Marko Mäkelä authored
This fixes the cmake -DWITH_ASAN test failure that was mentioned in commit f9cc3918 (merging MDEV-12253 from 10.1 to 10.2). fil_parse_write_crypt_data(): If the tablespace is not found, invoke fil_space_destroy_crypt_data(&crypt_data) to properly free the created object. With this, the test encryption.innodb-redo-badkey still reports "Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT" but does not fail. The misleading message should be corrected, maybe as part of MDEV-12699.
-
Jan Lindström authored
galera_new_cluster man page and sh typo
-
=Ian Gilfillan authored
-
Sachin Setiya authored
Binlog_background_thread does not make a call to set_time(), And when we call binlog_checkpoint_log_event->write() , we write the wrong timestamp. In this patch we correct this by calling thd->set_time().
-
Marko Mäkelä authored
This bug was introduced in the fix of MDEV-12123, which invoked page_zip_write_header() in the wrong way. page_zip_write_header(): Assert that the length is not zero, to be compatible with page_zip_parse_write_header(). btr_root_raise_and_insert(): Update the uncompressed page and then invoke page_zip_write_header() with the correct length.
-
Jan Lindström authored
-
Marko Mäkelä authored
row_undo_mod_parse_undo_rec(): Relax the too strict assertion and correct the comment. innodb.innodb-blob: Force a flush of the redo log right before killing the server, to ensure that the code path gets exercised. (The bogus debug assertion failed on the rollback of the statement UPDATE t3 SET c=REPEAT('j',3000) WHERE a=2 which did not modify any indexes before the server was killed.)
-