Home - Waterfall Grid T-Grid Console Builders Recent Builds Buildslaves Changesources - JSON API - About

Console View


Categories: connectors experimental galera main
Legend:   Passed Failed Warnings Failed Again Running Exception Offline No data

connectors experimental galera main
Sergei Golubchik
MDEV-39673 group_concat ignores max_allowed_packet

GROUP_CONCAT is limited by group_concat_max_len,
but also, as a string function it must respect max_allowed_packet.

Let's introduce THD::gconcat_max_len() helper to simplify checks.

Also:
* make max group_concat_max_len value the same as max max_allowed_packet
* use the same MY_MIN((ulonglong) ..., UINT_MAX32) in
  Item_func_json_objectagg as in Item_func_group_concat
* use overflow-safe type for lengths in Item_func_quote
  (MAX_MAX_ALLOWED_PACKET is 1G so uint cannot overflow yet, but it's
  a fragile assumption)
sjaakola
MDEV-34784 unhandled FK dependency with DML vs DDL

Certain DDL statements (e.g. ALTER TABLE) require innodb table lock
on tables having foreign key constraint reference to the table
under DDL execution. This dependency is not added in write set
key information. However, tables being referenced to will be added
in the key information, so the table locking domain of DDL is only
partially recorded.

One harmful consequence of this missing dependency information happens
when a DML modifies a FK child table's row, which has NULL in the FK
referencing column. In such situation, the FK reference cannot be followed
during DDL execution, and there will be no FK parent table keys recorded
in the write set. Parallel applying (or multi-master access) of such DML
and DDL on the FK parent table will cause applying conflicts.

This  scenario is presented in a new mtr test added in this commit.
The commit has a fix for the DDL FK dependency handling by adding all FK
child table names in the write set key information.
The commit has also fixes for innodb lock0lock.cc error logging to report
lock connflicts of table and record locks correctly.
bsrikanth-mariadb
MDEV-39440: Failed to match the stats from replay context with the optimizer stats

The problem is that handler->multi_range_read_info_const() call in
check_quick_select() returned rows equal to HA_POS_ERROR, both during
context capture and replay. However, we never stored the ranges info
into the context when rows=HA_POS_ERROR. However, during replay, we try
to infuse stats for the given range, and since no match was found in the
context, we produced a warning.

Solution is to store range_info for all the ranges even when they get
HA_POS_ERROR number of rows.
Daniel Bartholomew
bump the VERSION
Hemant Dangi
MDEV-39648: wsrep_sst_rsync.sh: apply safe() to joiner-supplied parameters

Issue:
wsrep_sst_rsync.sh interpolated WSREP_SST_OPT_REMOTE_USER and
WSREP_SST_OPT_REMOTE_PSWD verbatim. Because both values originate from
the joiner side of the SST request, a newline in either could splice
an extra directive into the donor-written stunnel.conf (silently
downgrading peer-cert verification) or an extra line into the rsync
magic file. MDEV-39413 had introduced safe() for the same threat class
in wsrep_sst_mariabackup but did not extend it to the rsync script.

Solution:
Routing the rsync interpolations through safe() closes the gap, and
extending safe() to also reject tab and newline ensures multi-line
values cannot survive into a config-file heredoc.
Monty
Ensure that mtr.out-of-source is not acccidently calling itself

Calling itself will cause extensive memory usage that can kill
the machine when it runs out of memory (happend to me).

Fixed by having mtr.out-of-source checking that it is not calling itself.
In addition added a check for cmake to expand symlinks to make the
check if we are running mtr 'out of source' safer.

Author: Sergei Golubchik <[email protected]> (CMakeList.txt changes)
Oleksandr Byelkin
Merge branch 'bb-12.3-release' into bb-13.0-release
Sergei Golubchik
MDEV-39564 One-byte OOB write in PROXY protocol v1 header parser
Jan Lindström
Bump version to 26.4.27.
  • kvm-deb-bookworm-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-bookworm-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-bullseye-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-bullseye-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-focal-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-focal-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-jammy-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-jammy-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-noble-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-noble-amd64-gal: make debs failed -  stdiokernel
  • kvm-rpm-alma8-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-alma9-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-alma9-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-alma84-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora37-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora37-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora38-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora38-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora39-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora39-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky8-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky9-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky9-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky84-amd64-gal: make rpms failed -  stdiokernel
  • kvm-src-rocky9-amd64-gal: make rpms failed -  stdiokernel
  • kvm-zyp-opensuse155-amd64-gal: make rpms failed -  stdiokernel
  • kvm-zyp-opensuse156-amd64-gal: make rpms failed -  stdiokernel
Sergei Golubchik
Merge branch '10.6' into 10.11
Sergei Golubchik
MDEV-39676 disallow global.wsrep_sst_donor=NULL again

it crashes in galera.mdev-28433
Marko Mäkelä
Merge
Andrzej Jarzabek
Flush Aria WAL log before copying the log file.
Sergei Golubchik
MDEV-39581 dynamic column header missing sanity checks
Andrzej Jarzabek
MDEV-39092  BACKUP SERVER of ENGINE=Aria to the local file system

Add MTR test. Copy MyISAM files in Aria plugin so that the MTR works.
Perform the end step under maximum level of backup MDL to safely copy
non-transactional Aria and MyISAM files.
Andrzej Jarzabek
Enable backup for non-Apple systems.
Copy non-Aria-specific files *.frm and db.opt as part of Aria backup.
Oleksandr Byelkin
fix
Thirunarayanan Balathandayuthapani
MDEV-34358  Detect config changes during encryption iteration

Problem:
=======
When innodb_encrypt_tables or innodb_encryption_rotate_key_age is
changed during encryption thread iteration, threads continue with
stale configuration values, potentially missing tablespaces that
should be encrypted or rotated under the new settings.

Solution:
========
Added atomic version counter fil_crypt_settings_version that is
incremented whenever innodb_encrypt_tables or
innodb_encryption_rotate_key_age changes. Encryption threads capture
the version at iteration start and check for changes during iteration.
If config changed, threads immediately restart iteration from the
beginning to ensure complete coverage with new settings.

fil_crypt_settings_version: Atomic counter to track the
innodb_encrypt_tables or innodb_encryption_rotate_key_age changes

rotate_thread_t::settings_version: To compare the
existing fil_crypt_settings_version to restart the
encryption from the beginning
Marko Mäkelä
MDEV-13542 fixup: Remove orphan trx_print()
Thirunarayanan Balathandayuthapani
MDEV-34358  Encryption threads consume CPU when no work available

Problem:
========
1. Encryption threads busy-wait when no work is available. When reaching
fil_system.space_list.end(), fil_crypt_return_iops() is called with
wake=true, causing pthread_cond_broadcast() to wake all threads
unnecessarily, leading to CPU waste.

2. Tablespaces with CLOSING/STOPPING flags (set during DDL operations)
are skipped during iteration. Since DDL completion doesn't wake
encryption threads, these spaces may never be encrypted if threads
sleep indefinitely.

3. For default_encrypt_list iteration, when spaces exist but none are
acquirable, threads need to wake others for cooperative retry, but
this case was not distinguished from fil_system.space_list.end().

4. IOPS are allocated before searching for tablespaces, wasting resources
during iteration when no I/O occurs.

5. Encryption threads use fil_crypt_threads_cond for two different purposes:
waiting for encryption work and waiting for IOPS allocation. When
fil_crypt_return_iops() or fil_crypt_realloc_iops() broadcasts after
releasing IOPS, it wakes ALL threads including those correctly waiting
for work, causing spurious wakeups and CPU waste.

Solution:
=========
1. Implement timed wait with exponential backoff when space ==
fil_system.space_list.end() (applies to both default_encrypt_list and
space_list iteration when no acquirable spaces are found):
- First timeout: 5 seconds
- Subsequent timeouts: (timed_wait_count + 1) * 5 seconds
  (10s, 20s, 40s, 60s)
- After 5 consecutive timeouts (~135 seconds total), switch to
indefinite wait to avoid CPU waste
- Timeout counter resets to 0 when woken by signal (config change,
new tablespace) or when work is found


2. Add default_encrypt_list flag to fil_space_t::next() to distinguish
between the two iteration modes. Wake other threads only when this
flag is true (spaces exist but unacquirable).

3. Move IOPS allocation from before tablespace search to after finding a
space that needs rotation. If allocation fails, set recheck=true to
skip waiting and immediately try next space.

4. Handle wake logic explicitly at call site based on default_encrypt_list
flag instead of in fil_crypt_return_iops().

5. Introduce separate condition variable fil_crypt_iops_cond specifically
for IOPS allocation synchronization to prevent spurious wakeups:

- fil_crypt_threads_cond: Used in wait_for_work() for waiting when no
tablespaces need encryption. Signaled when settings change, new
tablespaces are created, or thread count changes.

- fil_crypt_iops_cond (NEW): Used in fil_crypt_alloc_iops() for waiting
when IOPS limit is reached. Signaled when IOPS are returned via
fil_crypt_return_iops(), released via fil_crypt_realloc_iops(), or
when srv_n_fil_crypt_iops is increased.

rotate_thread_t changes:
- default_encrypt_list (bool): Indicates if iterating default_encrypt_list
- timed_wait_count (uint8_t): Counts consecutive timeouts for exponential backoff
- wait_for_work(): Implements timed/indefinite wait strategy
Sergei Golubchik
fix columnstore for new cmake
Sergei Golubchik
MDEV-39658 ASAN crash on invalid proxy_protocol_networks value

max_subnet estimate was off by one.

* only allow address with a known family
  (trips an assert in addr_matches_subnet())
* adjust max_subnet estimate accordinly
Thirunarayanan Balathandayuthapani
MDEV-34358: Add debug status variables to verify encryption thread wait behavior

Added debug-only status variables Innodb_encryption_indefinite_waits
to track encryption indefinite thread wait instead of busy-waiting
when idle.

The counters are incremented in rotate_thread_t::wait_for_work()
and exposed via SHOW STATUS in debug builds only. Also added a
debug sync point 'rotate_only_2_timed_waits' to reduce the timed
wait threshold from 5 to 2 for faster testing of the indefinite
wait transition.
bsrikanth-mariadb
MDEV-39412: parse error reading tabs in ranges

Note:
while reading from information_schema.optimizer_context one level of unescaping
is already done i.e. (\\t becomes \t or \\\\t becomes \\t)

w.r.t the MDEV, there are 2 problems: -

1.
When reading from the sql script file, json parser is not able to parse
the range value in json_read_value() from json_lib.c
"ranges": [
            "(b\t\t\t\t\t\t) <= (b) <= (b???????)"
          ],
mainly the \t\t stuff, and hence a warning.
It also stops loading the context into memory.
Since, a new table is created with empty data, and without context,
we get Impossible WHERE noticed after reading const tables

2.
There is unescaping call being made in read_string() from sql_json_lib.cc
while parsing of the context. With this \\t was becoming \t.
However, print_range() from opt_range.cc already does escaping of the values.
The value "b\t\t\t" was in fact produced as "\b\\t\\t\\t".
Later, we try to compare range values from the query and the context.

Here a mismatch is found because, in one case there is escaping,
and in the other case escaping got removed.

Solution
========
Since, there are 2 levels of unescaping being performed, 1. during sql
parse of the context from information_schema, and 2. during
read_string. So, we need to have 2 levels of escaping.

First is done in the dump_mrr_info_calls() - here
json_escape_to_string() is used.

Second is done at the end of store_optimizer_context(), for the entire
opt_context. Here a newly introduced function escape_json_for_sql_literal()
is used which does escaping only for backslash, and single quote.
Jan Lindström
Prepare for Galera library version 26.4.27
Andrzej Jarzabek
MDEV-39092  Copy Aria data and logs as part of backup

This is an initial simple implementation which copies all the Aria files
in the "end" phase of the backup. Nothing protects the copy from
concurrent DDL or DML. Copying only works on MacOS (intended for
refactoring to use common file copy method across engines and SQL
layer).
Sergei Golubchik
MDEV-39657 ASAN error on malformed WKB point

check data length for Gis_point
Sergei Golubchik
proxy protocol v2: fix a harmless typo

according to the rfc, the length is 2 bytes,
but the max length is 226 and there's a validity
check for length <= 240.
Jan Lindström
Bump Galera version to 26.4.27
  • kvm-deb-bookworm-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-bookworm-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-bullseye-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-bullseye-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-focal-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-focal-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-jammy-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-jammy-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-noble-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-noble-amd64-gal: make debs failed -  stdiokernel
  • kvm-rpm-alma8-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-alma9-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-alma9-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-alma84-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora37-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora37-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora38-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora38-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora39-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora39-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky8-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky9-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky9-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky84-amd64-gal: make rpms failed -  stdiokernel
  • kvm-src-rocky9-amd64-gal: make rpms failed -  stdiokernel
  • kvm-zyp-opensuse155-amd64-gal: make rpms failed -  stdiokernel
  • kvm-zyp-opensuse156-amd64-gal: make rpms failed -  stdiokernel
Sergei Golubchik
MDEV-39565 missing filename check in mariadb-backup --decompress

check for tablename-safe characters in backed up table files
bsrikanth-mariadb
MDEV-39410: ucs2 data not stored correctly in the context

For constant tables, the rows are stored in the context using the
charset my_charset_utf8mb4_bin. However, that is not correct, as
every field in the row could use its own charset.

This leads to a replay failure, as the data that gets read from the
sql_script file is different from the original row data.

This PR addresses uses field's own charset instead of
my_charset_utf8mb4_bin.
Vladislav Vaintroub
Study OOM on github action runner
Jan Lindström
MDEV-39676 : Galera Cluster-peer > Donor command execution

Add verification of wsrep_sst_donor, wsrep_sst_method and
wsrep_sst_receive_address so that they contain only
supported characters. But allow NULL or empty value.
Sergei Golubchik
MDEV-39622 OBJECT_INSTANCE_BEGIN in P_S are unstable, difficult to compare

let's show stable values that don't change between runs
Hemant Dangi
MDEV-36621: galera.GCF-360 test: IST failure

Issue:
- GCache::seqno_release() could release buffers at or above
seqno_locked. When called seqno_release(N) with N >= seqno_locked,
free_common() would mark those buffers BUFFER_RELEASED
(seqno_release() -> free_common() -> BH_release()).
- The subsequent malloc() calls then discarded those buffers from
seqno2ptr via discard_size(), causing the IST sender's
seqno_get_buffers() to throw NotFound
for the missing entries.
(malloc() -> discard_size() -> discard() -> pop_front())
- The joiner then received an incomplete IST stream
(seqno_get_buffers() -> seqno2ptr.at() -> NotFound):

  "IST didn't contain all write sets, expected last: 3 last received: -1"

Solution:
Fixed by clamping the end to seqno_locked - 1 and
breaking the outer loop once seqno_released reaches the lock
boundary. This allows releasing everything below seqno_locked.
  • kvm-deb-bookworm-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-bookworm-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-bullseye-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-bullseye-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-focal-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-focal-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-jammy-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-jammy-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-noble-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-noble-amd64-gal: make debs failed -  stdiokernel
  • kvm-rpm-alma8-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-alma9-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-alma9-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-alma84-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora37-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora37-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora38-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora38-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora39-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora39-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky8-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky9-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky9-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky84-amd64-gal: make rpms failed -  stdiokernel
  • kvm-src-rocky9-amd64-gal: make rpms failed -  stdiokernel
  • kvm-zyp-opensuse155-amd64-gal: make rpms failed -  stdiokernel
  • kvm-zyp-opensuse156-amd64-gal: make rpms failed -  stdiokernel
Jan Lindström
Merge remote-tracking branch 'upstream/4.x' into galera-26.4.27
  • kvm-deb-bookworm-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-bookworm-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-bullseye-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-bullseye-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-focal-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-focal-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-jammy-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-jammy-amd64-gal: make debs failed -  stdiokernel
  • kvm-deb-noble-aarch64-gal: make debs failed -  stdiokernel
  • kvm-deb-noble-amd64-gal: make debs failed -  stdiokernel
  • kvm-rpm-alma8-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-alma9-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-alma9-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-alma84-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora37-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora37-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora38-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora38-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora39-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-fedora39-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky8-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky9-aarch64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky9-amd64-gal: make rpms failed -  stdiokernel
  • kvm-rpm-rocky84-amd64-gal: make rpms failed -  stdiokernel
  • kvm-src-rocky9-amd64-gal: make rpms failed -  stdiokernel
  • kvm-zyp-opensuse155-amd64-gal: make rpms failed -  stdiokernel
  • kvm-zyp-opensuse156-amd64-gal: make rpms failed -  stdiokernel
Sergei Golubchik
MDEV-39576 PROXY v2 protocol uninitialized memory reads
Jan Lindström
Fix test failure on galera_sst_mariabackup_encrypt_with_key_server

Joiner mariadbd exits when SST is aborted; the exit code varies by
platform (clean 0 on some systems, signalled 134 / 1 on others).

pkill exit code can also vary by platform (clean 0 on some systems,
signalled 1 others).