maria:bb-10.5-upto

Last commit made on 2020-02-03
Get this branch:
git clone -b bb-10.5-upto https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.5-upto
Repository:
lp:maria

Recent commits

b0d9b33... by Jan Lindström

Merge branch 'codership-10.5-galera_sync_wait_upto' into 10.5

fd6fff4... by Jan Lindström

Merge branch '10.5-galera_sync_wait_upto' of https://github.com/codership/mariadb-server into codership-10.5-galera_sync_wait_upto

287c1db... by Eugene

try to fix Win x86 build

691c691... by Eugene

clean up redo log

main change: rename first redo log without file close

second change: use os_offset_t to represent offset in a file

third change: fix log texts

ac1033b... by mkaruza <email address hidden>

Incorrect behaviour of WSREP_SYNC_WAIT_UPTO_GTID

Function `signal_waiters` assigned `m_committed_seqno` variable outside of
mutex lock which caused incorrect behavior of WSREP_SYNC_WAIT_UPTO_GTID.
Fixed by moving assignment inside lock. Added handling of OOM and now
error is reported.
Remove hard-coded seqno value and read seqno directly from current node state.

74f7620... by mkaruza <email address hidden>

MDEV-21598 Galera test galera.galera_sst_mysqldump does not take wsrep-new-cluster into account

Variable `wsrep_new_cluster` should be set to false after `wsrep_init_startup`.
Problem was that this was done before when mysqldump is used as SST method so option
wsrep-new-cluster didn't have any effect.

41bc736... by mkaruza <email address hidden>

Galera GTID support

Support for galera GTID consistency thru cluster. All nodes in cluster
should have same GTID for replicated events which are originating from cluster.
Cluster originating commands need to contain sequential WSREP GTID seqno
Ignore manual setting of gtid_seq_no=X.

In master-slave scenario where master is non galera node replicated GTID is
replicated and is preserved in all nodes.

To have this - domain_id, server_id and seqnos should be same on all nodes.
Node which bootstraps the cluster, to achieve this, sends domain_id and
server_id to other nodes and this combination is used to write GTID for events
that are replicated inside cluster.

Cluster nodes that are executing non replicated events are going to have different
GTID than replicated ones, difference will be visible in domain part of gtid.

With wsrep_gtid_domain_id you can set domain_id for WSREP cluster.

Functions WSREP_LAST_WRITTEN_GTID, WSREP_LAST_SEEN_GTID and
WSREP_SYNC_WAIT_UPTO_GTID now works with "native" GTID format.

Fixed galera tests to reflect this chances.

Add variable to manually update WSREP GTID seqno in cluster

Add variable to manipulate and change WSREP GTID seqno. Next command
originating from cluster and on same thread will have set seqno and
cluster should change their internal counter to it's value.
Behavior is same as using @@gtid_seq_no for non WSREP transaction.

5defdc3... by Marko Mäkelä

Cleanup: Remove mtr_state_t and mtr_t::m_state

mtr_t::is_active(), mtr_t::is_committed(): Make debug-only.

c69a862... by Marko Mäkelä

MDEV-21362: Do not call memcmp on null pointers

Starting with commit 373443903b68db8e1674474f5b97248ce42dcbe5
we would invoke memcmp() unconditionally, even if the length is zero.
But, a call to memcmp() is undefined if any parameter is a null pointer,
even if the length is zero.

In the following tests, a null pointer is being passed to the comparison:
vcol.vcol_keys_innodb gcol.gcol_keys_innodb main.func_group_innodb
innodb.innodb_bug53592

cmp_data(): Keep WITH_UBSAN happy and avoid potential future bugs
in optimized builds, like the one addressed by
commit fc168c3a5e58d8b364a2e87e0d876a261ec7fced (MDEV-15587).

50324ce... by Marko Mäkelä

MDEV-21351 Replace recv_sys.heap with list of buf_block_t

InnoDB crash recovery used a special type of mem_heap_t that
allocates backing store from the buffer pool. That incurred
a significant overhead, leading to underutilization of memory,
and limiting the maximum contiguous allocated size of a log record.

recv_sys_t::blocks: A linked list of buf_block_t that are allocated
by buf_block_alloc() for redo log records. Replaces recv_sys_t::heap.
We repurpose buf_block_t::unzip_LRU for linking the elements.

recv_sys_t::max_log_blocks: Renamed from recv_n_pool_free_frames.

recv_sys_t::max_blocks(): Accessor for max_log_blocks.

recv_sys_t::alloc(): Allocate memory from the current recv_sys_t::blocks
element, or allocate another block. In debug builds, various free()
member functions must be invoked, because we repurpose
buf_page_t::buf_fix_count for tracking allocations.

recv_sys_t::free_corrupted_page(): Renamed from recv_recover_corrupt_page()

recv_sys_t::is_memory_exhausted(): Renamed from recv_sys_heap_check()

recv_sys_t::pages and its elements are allocated directly by the
system memory allocator.

recv_parse_log_recs(): Remove the parameter available_memory.

We rename some variables 'store_to_hash' to 'store', because
recv_sys.pages is not actually a hash table.

This is joint work with Thirunarayanan Balathandayuthapani.