maria:bb-10.2-MDEV-18565

Last commit made on 2019-07-17
Get this branch:
git clone -b bb-10.2-MDEV-18565 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.2-MDEV-18565
Repository:
lp:maria

Recent commits

21a2927... by Julius Goryavsky <email address hidden>

MDEV-18565: Galera mtr-suite fails if galera library is not installed

Currently, running mtr with an incorrect (for example, new or
obsolete) version of wsrep_provider (for example, with the 26
version of libgalera_smm.so) leads to the failure of tests in
several suites with vague error diagnostics.

As for the galera_3nodes suite, the mtr also does not effectively
check all the prerequisites after merge with MDEV-18426 fixes.
For example, tests that using mariabackup do not check for presence
of ss and socat/nc. This is due to improper handling of relative
paths in mtr scripts.

In addition, some tests in different suites can be run without
setting the environment variables such as MTR_GALERA_TFMT, XBSTREAM,
and so on.

To eliminate all these issues, this patch makes the following changes:

1. Added auxiliary wsrep_mtr_check utility (which located in the
mysql-test/lib/My/SafeProcess subdirectory), which compares the
versions of the wsrep API that used by the server and by the wsrep
provider library, and it does this comparison safely, without
accessing the API if the versions do not match.

2. All checks related to the presence of mariabackup and utilities
that necessary for its operation transferred from the local directories
of different mtr suites (from the suite.pm files) to the main suite.pm
file. This not only reduces the amount of code and eliminates duplication
of identical code fragments, but also avoids problems due to the inability
of mtr to consider relative paths to include files when checking skip
combinations.

3. Setting the values of auxiliary environment variables that
are necessary for Galera, SST scripts and mariabackup (to work
properly) is moved to the main mysql-test-run.pl script, so as
not to duplicate this code in different suites, and to avoid
partial corrections of the same errors for different suites
(while other suites remain uncorrected).

4. Fixed duplication of the have_file_key_management.inc and
have_filekeymanagement.inc files between different suites,
these checks are also transferred to the top level.

5. Added garbd presence check and garbd path variable.

https://jira.mariadb.org/browse/MDEV-18565

143fede... by Sergey Petrunia

Disable rocksdb.force_shutdown, rocksdb.shutdown is fine

Fix this patch (two csets before):
  Disable rocksdb.shutdown test

  It was introduced by this patch in fb/mysql-5.6:
  Author: Yoshinori Matsunobu <email address hidden>
  Date: Mon Jun 10 14:09:28 2019 -0700

      Extending SHUTDOWN query to support read_only/aborting

      Summary:
      This diff extends SHUTDOWN query to support the following
      features.
      - Aborting with any specified exit code (range is 0..255).
      If nothing is specified or 0 is given, it does default clean
      shutdown. If 1+ is given, exits with the given error code
      immediately. This is helpful to shutting down instance
      even if it is stuck somewhere.

   MariaDB doesn't support SHUTDOWN statement or have any other way
   to exit the server process.

537893b... by Sergey Petrunia

Fix rocksdb.tbl_opt_data_index_dir on a mac

Part #2: also replace error text in SHOW WARNINGS

d2f094d... by Sergey Petrunia

Disable rocksdb.shutdown test

It was introduced by this patch in fb/mysql-5.6:
Author: Yoshinori Matsunobu <email address hidden>
Date: Mon Jun 10 14:09:28 2019 -0700

    Extending SHUTDOWN query to support read_only/aborting

    Summary:
    This diff extends SHUTDOWN query to support the following
    features.
    - Aborting with any specified exit code (range is 0..255).
    If nothing is specified or 0 is given, it does default clean
    shutdown. If 1+ is given, exits with the given error code
    immediately. This is helpful to shutting down instance
    even if it is stuck somewhere.

MariaDB doesn't support SHUTDOWN statement or have any other way
to exit the server process.

1da8441... by Sergey Petrunia

Fix rocksdb.tbl_opt_data_index_dir on a mac

ec49976... by Jan Lindström

MDEV-19746: Galera test failures because of wsrep_slave_threads identification

Problem was that tests select INFORMATION_SCHEMA.PROCESSLIST processes
from user system user and empty state. Thus, there is not clear
state for slave threads.

Changes:
- Added new status variables that store current amount of applier threads
(wsrep_applier_thread_count) and rollbacker threads
(wsrep_rollbacker_thread_count). This will make clear how many slave threads
of certain type there is.
- Added THD state "wsrep applier idle" when applier slave thread is
waiting for work. This makes finding slave/applier threads easier.
- Added force-restart option for mtr to always restart servers between tests
to avoid race on start of the test
- Added wait_condition_with_debug to wait until the passed statement returns
true, or the operation times out. If operation times out, the additional error
statement will be executed

Changes to be committed:
 new file: mysql-test/include/force_restart.inc
 new file: mysql-test/include/wait_condition_with_debug.inc
 modified: mysql-test/mysql-test-run.pl
 modified: mysql-test/suite/galera/disabled.def
 modified: mysql-test/suite/galera/r/MW-336.result
 modified: mysql-test/suite/galera/r/galera_kill_applier.result
 modified: mysql-test/suite/galera/r/galera_var_slave_threads.result
 new file: mysql-test/suite/galera/t/MW-336.cnf
 modified: mysql-test/suite/galera/t/MW-336.test
 modified: mysql-test/suite/galera/t/galera_kill_applier.test
 modified: mysql-test/suite/galera/t/galera_parallel_autoinc_largetrx.test
 modified: mysql-test/suite/galera/t/galera_parallel_autoinc_manytrx.test
 modified: mysql-test/suite/galera/t/galera_var_slave_threads.test
 modified: mysql-test/suite/wsrep/disabled.def
 modified: mysql-test/suite/wsrep/r/variables.result
 modified: mysql-test/suite/wsrep/t/variables.test
 modified: sql/mysqld.cc
 modified: sql/wsrep_mysqld.cc
 modified: sql/wsrep_mysqld.h
 modified: sql/wsrep_thd.cc
 modified: sql/wsrep_var.cc

b3bd51c... by Sergey Petrunia

Fix rocksdb.autoinc_vars_thread test

9ccbe8d... by Sergey Petrunia

Fix intermittent test failure in rocksdb.rocksdb_cf_per_partition

was getting rows=2 instead of 1 on kvm-rpm-centos74-amd64

fbbc235... by Sergey Petrunia

MDEV-14455: rocksdb.2pc_group_commit failed in buildbot

Use RocksDB debug sync points to introduce a sync delay. This
commits to get grouped even when the datadir is on ramdisk.

For some unclear reason the effect is visible on write_prepared
but not write_committed, so run the test only with write_prepared.

64900e3... by THIRUNARAYANAN BALATHANDAYUTHAPANI

MDEV-15641 InnoDB crash while committing table-rebuilding ALTER TABLE

Problem:
========
 There is a possibility that there can be more concurrent DMLs While the
alter table thread is waiting for upgrading to MDL_EXCLUSIVE before commit phase.
In commit phase, InnoDB acquires dict_operation_lock and it already holds MDL_EXCLUSIVE
on the table. After that, InnoDB applies the concurrent DML logs in commit phase.
This could lead to blocking of the following things:

  1) DML on the particular table (due to MDL_EXCLUSIVE on the table)
  2) InnoDB DDLs (due to dict_operation_lock)
  3) Purge thread, stats thread, the master thread (due to dict_operation_lock)

Fix:
====
Apply the concurrent DML logs in commit phase but before acquiring
dict_operation_lock in commit phase. It makes sure that (2), (3) can't be
blocked for longer time.