MDEV-30318 : galera error messages in mariadb log without galera enabled
Do not compile wsrep_provider plugin if WITH_WSREP is not enabled.
We should not enable wsrep_provider plugin if WSREP_ON=OFF and
at that case we can only print information that Plugin
'wsrep-provider' is disabled.
Make sure tests require Galera library 26.4.14 if needed.
MDEV-30120 : Update the wsrep_provider_options read_only value in the system_variables table.
When wsrep-provider-options plugin is initialized we need to update
wsrep-provider-options variable as READ_ONLY.
4096572...
by
Daniele Sciascia <email address hidden>
MDEV-22570 Implement wsrep_provider_options as plugin
- Provider options are read from the provider during
startup, before plugins are initialized.
- New wsrep_provider plugin for which sysvars are generated
dynamically from options read from the provider.
- The plugin is enabled by option plugin-wsrep-provider=ON.
If enabled, wsrep_provider_options can no longer be used,
(an error is raised on attempts to do so).
- Each option is either string, integer, double or bool
- Options can be dynamic / readonly
- Options can be deprecated
Limitations:
- We do not check that the value of a provider option falls
within a certain range. This type of validation is still
done in Galera side.
The Boolean flag mlog_init_t::init::created was only needed by
mark_ibuf_exist(), which commit f27e9c894779a4c7ebe6446ba9aa408f1771c114
removed. We only need to store the page initialization LSN in the map.
MDEV-26790 InnoDB read-ahead may cause page writes
buf_LRU_get_free_block(): Replace the Boolean parameter with a
ternary parameter, so that have_no_mutex_soft can be specified
reduce the chances of initiating page eviction flushing in read-ahead.
buf_read_acquire(): Invoke buf_LRU_get_free_block(have_no_mutex_soft)
and check in each caller for a nullptr return value.
MDEV-30216 Read-ahead unnecessarily allocates and frees pages when a page is in the buffer pool
buf_pool_t::page_hash_contains(): Check if a page is cached.
buf_read_ahead_random(), buf_read_page_background(),
buf_read_ahead_linear(): Before invoking buf_read_page_low(),
preallocate a buffer page for the read request.
buf_read_page(), buf_page_init_for_read(), buf_read_page_low():
Add a parameter for the buf_pool.page_hash chain, to avoid duplicated
computations.
buf_page_t::read_complete(): Only attempt recovery if an uncompressed
page frame has been allocated.
buf_page_init_for_read(): Before trying to acquire buf_pool.mutex, acquire
an exclusive buf_pool.page_hash latch and check if the page is already
located in the buffer pool. If the buf_pool.mutex is not immediately
available, release both latches and acquire them in the correct order,
and then recheck if the page is already in the buffer pool. This should
hopefully reduce some contention on buf_pool.mutex.
buf_page_init_for_read(), buf_read_page_low(): Input the "recovery needed"
flag in the least significant bit of zip_size.
buf_read_acquire(), buf_read_release(): Interface for allocating and
freeing buffer pages for reading.
buf_read_recv_pages(): Set the flag that recovery is needed.
Other ROW_FORMAT=COMPRESSED reads during recovery
will not need any recovery.