maria:bb-10.3-MDEV-28758-galera

Last commit made on 2022-07-19
Get this branch:
git clone -b bb-10.3-MDEV-28758-galera https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.3-MDEV-28758-galera
Repository:
lp:maria

Recent commits

be286c5... by Julius Goryavsky <email address hidden>

MDEV-28758: Mariabackup copies binary logs to backup directory

This commit restores defaults and functionality regarding binlogs
to the way it was prior to MDEV-27524. The mariabackup utility no
longer saves binlogs files as part of a backup without the --galera-info
option. However, since we use --galera-info during SST, the behavior
of mariabackup changes and, in combination with GTIDs support enabled,
mariabackup transfers one (most recent) binlog file obtained after
FLUSH BINARY LOGS. In other cases, binlogs are not transferred during
SST in mariabackup mode. As for SST in the rsync mode, it works the
same way as before MDEV-27524 - by default it transfers one last
binlog file.

The --sst-max-binlogs option for mariabackup and the sst_max_binlogs
parameter in the [sst] / server sections are no longer supported for
SST via mariabackup.

50489be... by Sergei Golubchik

only copy buffer pool dump in SST galera mode

and then only into the default name, so that the joiner could find it

6730f8d... by Sergei Golubchik

revert mariabackup part of MDEV-27524, fix the test

1848804... by midenok

MDEV-29023 MTR hangs after multiple failures

Passing $opt_parallel as $childs is wrong: child can be killed before
it connects and you will never decrement $childs for this.

Another problem is (and that is the cause of this bug): child can be
killed and never close server socket. This can happen f.ex. after
unmaskable KILL signal. In such case the socket is closed by reaping
the child but that never happens inside reading the socket loop in
run_test_server().

The proper design is the waitless reap of children inside the socket
loop and if there is no more children we finish the socket loop. Since
there is Windows variation where we don't control the children via
waitpid(), all the clients must normally close the socket and only
this can finish the socket loop. For Unix variation we reckon that
case as all children closed the socket but not all yet died and for
that we do final waiting waitpid() (was done before the patch as
well).

To be more complete, we now handle 3 end-of-game scenarios in Unix:

   1. all children closed socket, all children died: everything is
      handled by the socket loop;

   2. all children closed socket, not all yet died: we wait for alive
      children to die after exiting the socket loop;

   3. not all children closed socket, all children died: everything is
      handled by the socket loop.

For Windows end-of-game scenario is only one:

   All children close the socket.

7ca5c7d... by midenok

MDEV-29023 waitpid() cleanup

The case for "Unknown process $ret_pid exited" is never known to be
valid. Such state is not documented for waitpid().

1d307ed... by midenok

MDEV-29025 MTR doesn't print stack trace for bootstrap crashes

1bdcffb... by midenok

MDEV-29025 Refactoring: moved out core_wanted() out of mysql-test-run.pl

e9be542... by midenok

MDEV-28931 MTR prints detailed stack trace unconditionally

66832e3a introduced change that prints core dumps in very detailed
format. That's completely out of user-friendliness but serves as a
measure for debugging hard-reproducible bugs.

The proper way to implement this:

  1. it must be controlled by command-line and environment variable;
  2. detailed traces must be default for buildbots only, for user
     invocations normal stack traces should be printed.

Options for control are: MTR_PRINT_CORE and --print-core that accept
the following values:

  no Don't print core
  short Print stack trace of failed thread
  medium Print stack traces of all threads
  detailed Print all stack traces with debug context
  custom:<code> Use debugger commands <code> to print stack trace

Default setting is: short (see env_or_default() call in pre_setup())

For environment variable wrong values are silently ignored (falls back
to default setting, see env_or_default()).

Command-line option --print-core (or -C) overrides environment
variable. Its default value is 'short' if not specified explicitly
(same env_or_default() call in pre_setup()). Explicit values are
checked for validity.

--print-method option can specify by which debugger we print
cores. For Windows there is only one choice: cdb. For Unix the values
are: gdb, dbx, lldb, auto. Default value is: auto

In 'auto' we try to use all possible debuggers until success.

220fb67... by midenok

MDEV-28931 Debugger.pm readability fix

setup_boot_args(), setup_client_args(), setup_args() traversing
datastructures on each invocation. Even if performance is not
important to perl script (though it definitely saves some CO2), this
nonetheless provokes some code-reading questions. Reading and
debugging such code is not convenient.

The better way is to prepare all the data in advance in an easily
readable form as well as do the validation step before any further
processing.

Use mtr_report() instead of die() like the other code does.

TODO: do_args() does even more data processing magic. Prepare that
data according the above strategy in advance in pre_setup() if possible.

ce7820e... by midenok

MDEV-28931 --verbose option is too verbose

GetOpt::Long bundling option for convenient one-char verbosity levels:

  -v General verbosity (file and execute operations)
  -vv High verbosity (algorithmic considerations)
  -vvv Debug verbosity (anything else)