summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge 10.6 into 10.7Marko Mäkelä2021-09-3080-834/+1876
|\
| * Merge 10.5 into 10.6Marko Mäkelä2021-09-3049-600/+819
| |\
| | * MDEV-25215 Excessive logging "InnoDB: Cannot close file"Marko Mäkelä2021-09-302-12/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In commit 45ed9dd957eebc7fc84feb2509f4aa6baa908a95 (MDEV-23855) when removing fil_system.LRU we failed to rate-limit the output for reporting violations of innodb_open_files or open_files_limit. If the server is run with a small limit of open files that is well below the number of .ibd files that are being accessed by the workload, and if at the same time innodb_log_file_size is very small so that log checkpoints will occur frequently, the process of enforcing the open files limit may be run very often. fil_space_t::try_to_close(): Display at most one message per call, and only if at least 5 seconds have elapsed since the last time a message was output. fil_node_open_file(): Only output a summary message if fil_space_t::try_to_close() displayed a message during this run. (Note: multiple threads may execute fil_node_open_file() on different files at the same time.) fil_space_t::get(): Do not dereference a null pointer if n & STOPPING. This was caught by the test case below. Unfortunately, it is not possible to create a fully deterministic test case (expecting exactly 1 message to be emitted). The following with --innodb-open-files=10 --innodb-log-file-size=4m would occasionally fail to find the message in the log: --source include/have_innodb.inc --source include/have_partition.inc --source include/have_sequence.inc call mtr.add_suppression("InnoDB: innodb_open_files=10 is exceeded"); CREATE TABLE t1 (pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB PARTITION BY key (pk) PARTITIONS 100; INSERT INTO t1 SELECT * FROM seq_1_to_100; --disable_query_log let $n=400; while ($n) { BEGIN; DELETE FROM t1; ROLLBACK; dec $n; } --enable_query_log let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err; let SEARCH_PATTERN= \[Note\] InnoDB: Cannot close file; -- source include/search_pattern_in_file.inc DROP TABLE t1;
| | * Merge 10.4 into 10.5Marko Mäkelä2021-09-3034-289/+484
| | |\ | | | | | | | | | | | | | | | | FIXME: Part of the MDEV-20699 test is disabled due to nonderterministic result.
| | | * Merge 10.3 into 10.4Marko Mäkelä2021-09-303-0/+14
| | | |\
| | | | * MDEV-20699 followup.Vladislav Vaintroub2021-09-293-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Normally we disable caching of routines in "SHOW CREATE". Introduce an exception, if debug_dbug="+d,cache_sp_in_show_create". lock_sync.test needs a way to populate the cache without side effects, or else it runs into debug_sync timeouts. So, this possibility to cache will be remain only for very special tests.
| | | * | Merge 10.3 into 10.4Marko Mäkelä2021-09-2926-288/+436
| | | |\ \ | | | | |/
| | | | * MDEV-20699 fixup: Re-record compat/oracle.sp-package resultMarko Mäkelä2021-09-291-0/+8
| | | | |
| | | | * Merge 10.2 into 10.3Marko Mäkelä2021-09-2915-256/+366
| | | | |\
| | | | | * Make innodb.innodb_defrag_stats more deterministicMarko Mäkelä2021-09-292-162/+143
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Let us mask the actual values of the defragmentation-related fields, because they may vary. Also, remove the dependency on purge, and instead delete records by a ROLLBACK of INSERT.
| | | | | * MDEV-24454 Crash at change_item_treebb-10.2-MDEV-24454Oleksandr Byelkin2021-09-2711-44/+202
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use in_sum_func (and so nest_level) only in LEX to which SELECT lex belong to Reduce usage of current_select (because it does not always point on the correct SELECT_LEX, for example with prepare. Change context for all classes inherited from Item_ident (was only for Item_field) in case of pushing down it to HAVING. Now name resolution context have to have SELECT_LEX reference if the context is present. Fixed feedback plugin stack usage.
| | | | | * Remove test from galera_fulltext until MDEV-24978 is fixed.bb-10.2-jan-galeraJan Lindström2021-09-272-50/+21
| | | | | |
| | | | * | MDEV-26672 test fixupMarko Mäkelä2021-09-291-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Occasionally, after restart, additional transactions will have been executed, possibly related to innodb_stats_auto_recalc. We should only care that the transaction ID sequence does not go backwards.
| | | | * | MDEV-26717 mysql_upgrade_service/mariadb-upgrade-service -avoid slow shutdownVladislav Vaintroub2021-09-291-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | Apparently, slow shutdown is not necessary anymore after MDEV-15912 fix
| | | | * | MDEV-20699 mysqldump of routines causes MariaDB to get killed by oom-killerbb-10.3-wlad-MDEV-20699Vladislav Vaintroub2021-09-276-21/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The reason for this behavior is that SP get cached, per connection. The stored_program_cache is size of this cache, which amounts to 256 routines by default. A compiled stored procedure can easily be several megabytes in size. Thus calling SHOW CREATE PROCEDURE for all stored procedures, like mysqldump does, can require significant amount of memory. Fixed by bypassing the cache for "SHOW CREATE". This should normally be fine also perfomance-wise, as cache is meant to be used for repeated execution, not repeated SHOW CREATEs. Added a test to verify that CREATE PROCEDURE + SHOW CREATE PROCEURE do not cache, i.e amount of allocated memory does not change. Note, there is a change in existing behavior in an edge case : If "SHOW CREATE PROCEDURE p1" called from p1, after p1 was altered, now this will now return altered code. Previour behavior - relied on caching and would return old code. The previous behavior might was not necessarily correct.
| | | * | | MDEV-21806 : galera.galera_partition MTR failed: failed to recover from ↵bb-10.4-MDEV-20451-galeraJan Lindström2021-09-273-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DONOR state Add wait_condition to wait until all nodes are in cluster
| | | * | | Add wait_condition before problematic selectJan Lindström2021-09-273-2/+25
| | | | | |
| | * | | | MDEV-23306 Fix build dependencyVladislav Vaintroub2021-09-281-0/+3
| | | | | |
| | * | | | MDEV-21613 : galera_sr.GCF-1018B MTR failed: Failed to open table ↵bb-10.5-MDEV-21613b-galeraJan Lindström2021-09-271-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | mysql.wsrep_streaming_log for writing Query can be bf aborted already earlier and then we should not even try to open table.
| | * | | | Merge 10.4 into 10.5Marko Mäkelä2021-09-2414-307/+317
| | |\ \ \ \ | | | |/ / /
| | | * | | Merge 10.3 into 10.4Marko Mäkelä2021-09-249-146/+132
| | | |\ \ \ | | | | |/ /
| | | | * | Merge 10.2 into 10.3Marko Mäkelä2021-09-248-146/+124
| | | | |\ \ | | | | | |/
| | | | | * Revert MDEV-25114Marko Mäkelä2021-09-2418-766/+230
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Revert 88a4be75a5f3b8d59ac8f6347ff2c197813c05dc and 9d97f92febc89941784d17d59c60275e21140ce0, which had been prematurely pushed by accident.
| | | | | * Update libmariadbMarko Mäkelä2021-09-241-0/+0
| | | | | |
| | | | | * MDEV-26360: Using hostnames breaks certificate validationbb-10.2-MDEV-26360-galeraJulius Goryavsky2021-09-244-59/+136
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed flaws with overly strict or, conversely, overly soft verification of certificates in some scenarios: 1. Removed the check that the 'commonname' (CN) in the certificate matches the 'localhost' value on the side of the joiner node, which was performed earlier, even if the address was received by the script only as an argument (out of the exchange via the Galera protocol) - since for the joining node this argument always contains its own local address, not the address of the remote host, so it is always treated as 'localhost', which is not necessarily true (outside of mtr testing); 2. Removed checking the domain name or IP-address of the peer node in the encrypt=2 mode; 3. Fixed checking of compliance of certificates when rsync SST is used; 4. Added the ability to specify CA not only as a file, but also as a path to the directory where the certificates are stored. To do this, the user just needs to specify the path to this directory as the value ssl-ca or tca parameter, ending with the '/' character.
| | | | | * MDEV-26612 Two different ways to start MariaDB service can cause data corruptionbb-10.2-MDEV-26612Alexey Bychko2021-09-241-8/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | RedHat systems have both files for lsb and init functions. Old code was written as if/else, so second file (RedHat-specific) was not processed. So, systemd redirect didn't work, because its logic is described in RedHat-specific functions file
| | | | | * Revert "MDEV-24978 : SIGABRT in __libc_message"bb-10.2-MDEV-24978-fJan Lindström2021-09-243-94/+21
| | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 30dea4599e44e3008fb9bc5fe79ab5747841f21f.
| | | | | * MDEV-25114 Crash: WSREP: invalid state ROLLED_BACK (FATAL)sjaakola2021-09-2418-151/+725
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is the plan D variant for fixing potetial mutex locking order exercised by BF aborting and KILL command execution. In this approach, KILL command is replicated as TOI operation. This guarantees total isolation for the KILL command execution in the first node: there is no concurrent replication applying and no concurrent DDL executing. Therefore there is no risk of BF aborting to happen in parallel with KILL command execution either. Potential mutex deadlocks between the different mutex access paths with KILL command execution and BF aborting cannot therefore happen. TOI replication is used, in this approach, purely as means to provide isolated KILL command execution in the first node. KILL command should not (and must not) be applied in secondary nodes. In this patch, we make this sure by skipping KILL execution in secondary nodes, in applying phase, where we bail out if applier thread is trying to execute KILL command. This is effective, but skipping the applying of KILL command could happen much earlier as well. This patch also fixes mutex locking order and unprotected THD member accesses on bf aborting case. We try to hold THD::LOCK_thd_data during bf aborting. Only case where it is not possible is at wsrep_abort_transaction before call wsrep_innobase_kill_one_trx where we take InnoDB mutexes first and then THD::LOCK_thd_data. This will also fix possible race condition during close_connection and while wsrep is disconnecting connections. Added wsrep_bf_kill_debug test case Reviewed-by: Jan Lindström <jan.lindstrom@mariadb.com>
| | | | | * Revert "MDEV-23328 Server hang due to Galera lock conflict resolution" andJan Lindström2021-09-242-112/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Revert "MDEV-24873 galera.galera_as_slave_ctas MTR failed:..." This reverts commit 29bbcac0ee841faaa68eeb09c86ff825eabbe6b6 and later commit 5ecaf52d42a1e464c71515f35be97855072bcafe.
| | | | * | Fixup "Windows, mysqltest : cleanup, remove dead code USE_CYGWIN"Vladislav Vaintroub2021-09-241-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | last commit 8221708e389728aef799046eef3c49b1eec2e400 removed too much, mtr is failing
| | | * | | Merge branch '10.3' into 10.4Vladislav Vaintroub2021-09-246-170/+193
| | | |\ \ \ | | | | |/ /
| | | | * | Windows, mysqltest : cleanup, remove dead code USE_CYGWINVladislav Vaintroub2021-09-241-54/+0
| | | | | |
| | | | * | MDEV-11499 mysqltest, Windows : improve diagnostics if server fails to shutdownVladislav Vaintroub2021-09-246-117/+193
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Create minidump when server fails to shutdown. If process is being debugged, cause a debug break. Moves some code which is part of safe_kill into mysys, as both safe_kill, and mysqltest produce minidumps on different timeouts. Small cleanup in wait_until_dead() - replace inefficient loop with a single wait.
| * | | | | Misc improvements to the Gitlab-CI pipeline for MariaDBOtto Kekäläinen2021-09-292-50/+155
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Add new Ninja and Clang build jobs. This helps to ensure those toolchains also work in addition to default CMake/gcc. - Generate dependencies.dot/png to illustrate the CMake/Make/Ninja build dependencies. Viewing this image and identifying bottle necks in parallelism can help make the build run faster. - Enable CUnit tests now as they are fixed on 10.6 (MDEV-25820). - Limit parallel builds to 2 CPUs (full parallelism needs MDEV-25968) on CMake/Make. Now only the Ninja builds run full parallel builds as only Ninja is smart enough to prevent builds failing on resource over-consumption. - Enable Gitlab-CI cache for job 'centos8' for ccache so that it builds faster. Don't use Gitlab-CI cache for other jobs, as it would too easily use up all free tier storage on Gitlab.com and force users to get a paid account just for MariaDB builds. - On other jobs clean away ccache, as it only had a 5% hit rate on single builds with no downloaded cache. - Dump full database contents during the test install so that one can use diff to compare the database contents at different stages and thus track/debug potential bugs in mariadb-install-db and mariadb-upgrade code. Bugfixes: - Zero out ccache stats before each run so that 'ccache -s' would actually show the stats for the latest run.
| * | | | | MDEV-26467: Use LOCK BTS also with the Microsoft compilerbb-10.6-MDEV-26467Marko Mäkelä2021-09-291-49/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Microsoft does not define inline assembler syntax for AMD64, but it defines the intrinsic function _interlockedbittestandset() that we can use. ssux_lock_impl<bool>::rd_wait(): Remove a call to yield, because writer.wr_lock() will take care of context switches between loop iterations. This addresses suggestions by Vladislav Vaintroub.
| * | | | | MTR: loops should divide milliseconds by millisecondsst-10.6-vicentiuVicențiu Ciorbaru2021-09-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | timeout is in seconds, sleeptime is in miliseconds. Otherwise we sleep for 10 times longer than the timeout.
| * | | | | MDEV-26467: Actually use spinloop on block_lockMarko Mäkelä2021-09-282-1/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In commit 277ba134ad1c994bda50de574a87a06a071fbecb we accidentally omitted this.
| * | | | | MDEV-26467: Universally implement spin loopMarko Mäkelä2021-09-282-58/+104
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, neither our wrapper of Microsoft Windows SRWLOCK nor the futex-less implementation SUX_LOCK_GENERIC supported spin loops. This was suggested by Vladislav Vaintroub.
| * | | | | MDEV-26467: More cache friendlinessMarko Mäkelä2021-09-281-29/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | srw_mutex_impl<bool>::wait_and_lock(): In commit a73eedbf3fabd19ca7183b738056c30e3f7bbe35 we introduced an std::atomic::fetch_or() in a loop. Alas, on the IA-32 and AMD64, that was being translated into a loop around LOCK CMPXCHG. To avoid a nested loop, it is better to explicitly invoke std::atomic::compare_exchange_weak() in the loop, but only if the attempt has a chance to succeed (the HOLDER flag is not set). It is even more efficient to use LOCK BTS, but contemporary compilers fail to translate std::atomic::fetch_or(x) & x into that when x is a single-bit constant. On GCC-compatible compilers, we will use inline assembler to achieve that. On other ISA than IA-32 and AMD64, we will continue to use std::atomic::fetch_or(). ssux_lock_impl<spinloop>::rd_wait(): Use rd_lock_try(). A loop around std::atomic::compare_exchange_weak() should be cheaper than fetch_add(), fetch_sub() and a wakeup system call. These deficiencies were pointed out and the use of LOCK BTS was suggested by Thiago Macieira.
| * | | | | MDEV-26669 Add MY_COLLATION_HANDLER functions min_str() and max_str()bb-10.6-bar-MDEV-26669Alexander Barkov2021-09-2723-87/+683
| | | | | |
| * | | | | MDEV-26631 InnoDB fails to fetch page from doublewrite bufferbb-10.6-MDEV-26631Thirunarayanan Balathandayuthapani2021-09-243-8/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: ======== InnoDB fails to fetch the page0 from dblwr if page0 is corrupted.In that case, InnoDB defers the tablespace and doesn't find the INIT_PAGE redo log record for page0 and it leads to failure. Solution: ========= InnoDB should recover page0 from dblwr if space_id can be found for deferred tablespace.
* | | | | | bump the VERSIONSergei Golubchik2021-09-242-3/+3
| | | | | |
* | | | | | Merge 10.6 into 10.7Marko Mäkelä2021-09-2464-987/+1365
|\ \ \ \ \ \ | |/ / / / /
| * | | | | Merge 10.5 into 10.6Marko Mäkelä2021-09-2462-967/+1345
| |\ \ \ \ \ | | |/ / / /
| | * | | | Merge 10.4 into 10.5Marko Mäkelä2021-09-248-23/+37
| | |\ \ \ \ | | | |/ / /
| | | * | | Merge 10.3 into 10.4Marko Mäkelä2021-09-247-37/+34
| | | |\ \ \ | | | | |/ /
| | | | * | MDEV-26672 innodb_undo_log_truncate may reset transaction ID sequenceMarko Mäkelä2021-09-248-37/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | trx_rseg_header_create(): Add a parameter for the value that is to be written to TRX_RSEG_MAX_TRX_ID. If we omit this write, then the updated test innodb.undo_truncate will fail for the 4k, 8k, 16k page sizes. This was broken ever since commit 947efe17ed8188ca4feef6deb0c2831a246b5c8f (MDEV-15158) removed the writes of transaction identifiers to the TRX_SYS page. srv_do_purge(): Truncate undo tablespaces also during slow shutdown (innodb_fast_shutdown=0). Thanks to Krunal Bauskar for noticing this problem.
| | | * | | Update wsrep-lib submoduleJan Lindström2021-09-241-0/+0
| | | | | |
| | * | | | Merge 10.4 into 10.5Marko Mäkelä2021-09-2438-603/+768
| | |\ \ \ \ | | | |/ / /
| | | * | | MDEV-26566 : galera.galera_var_cluster_address MTR failed: InnoDB: Assertion ↵Jan Lindström2021-09-235-11/+220
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | failure in file row0ins.cc line 3206 Actual problem was that we tried to calculate persistent statistics to wsrep_schema tables in this case wsrep_streaming_log. These tables should not have persistent statistics. Therefore, in table creation tables should be created with STATS_PERSISTENT=0 table option. During rolling-upgrade tables naturally already exists, thus we need to alter them to contain STATS_PERSISTENT=0 table option.