Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MDEV-31953 madvise(..., MADV_FREE) is causing a performance regression / MDEV-24670 avoid OOM by linux kernel co-operative memory management #2805

Merged

Conversation

grooverdan
Copy link
Member

  • The Jira issue number for this PR is: MDEV-31953 / MDEV-24670

Description

The madvice(FREE) added in 10.11 cased performance regressions. To trigger it less often the memory pressure mechanism of Linux was used.

How can this PR be tested?

Manually like in MDEV-25341.

2023-10-27 19:37:44 0 [Note] InnoDB: Loading buffer pool(s) from /tmp/build-mariadb-server-10.11-datadir/ib_buffer_pool
2023-10-27 19:37:44 0 [Note] Plugin 'FEEDBACK' is disabled.
2023-10-27 19:37:44 0 [Note] sql/mariadbd: ready for connections.
Version: '10.11.6-MariaDB'  socket: '/tmp/build-mariadb-server-10.11.sock'  port: 0  Source distribution
2023-10-27 19:37:45 0 [Note] InnoDB: Buffer pool(s) load completed at 231027 19:37:45
2023-10-27 19:37:54 0 [Note] Memory pressure event freed 5314 pages
  • mtr case

Basing the PR against the correct MariaDB version

  • This is a new feature and the PR is based against the latest MariaDB development branch.
  • This is a bug fix and the PR is based against the earliest maintained branch in which the bug can be reproduced.

PR quality check

  • I checked the CODING_STANDARDS.md file and my PR conforms to this where appropriate.
  • For any trivial modifications to the PR, I am ok with the reviewer making the changes themselves.

@grooverdan grooverdan added the MariaDB Foundation Pull requests created by MariaDB Foundation label Oct 27, 2023
@grooverdan grooverdan requested a review from dr-m October 27, 2023 08:39
@CLAassistant
Copy link

CLAassistant commented Oct 27, 2023

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

Copy link
Contributor

@dr-m dr-m left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you. I think that the general idea is good.

storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/handler/ha_innodb.cc Outdated Show resolved Hide resolved
@grooverdan grooverdan force-pushed the bb-10.11-MDEV-24670-memory-pressure branch 2 times, most recently from e4f9169 to 7d94122 Compare October 28, 2023 08:16
Copy link
Contributor

@dr-m dr-m left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is almost good to go. Please squash my commit to yours, and just note in the commit message that the logic of buf_pool_t::garbage_collect() was provided by me.

I think that the buf_pool_t::garbage_collect() needs to be reviewed by @vlad-lesin or @Thirunarayanan. We’d also want subject this to some stress testing with a MDEV-25341 type workload and maybe also using the revised debug instrumentation.

storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
mysql-test/suite/innodb/r/mem_pressure.result Outdated Show resolved Hide resolved
mysql-test/suite/innodb/r/mem_pressure.result Show resolved Hide resolved
mysql-test/suite/innodb/r/mem_pressure.result Show resolved Hide resolved
mysql-test/suite/innodb/r/mem_pressure.result Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
@dr-m dr-m requested a review from Thirunarayanan October 31, 2023 13:16
@grooverdan grooverdan force-pushed the bb-10.11-MDEV-24670-memory-pressure branch from 7d94122 to 90c1e91 Compare November 6, 2023 06:18
Copy link
Contributor

@dr-m dr-m left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you. Hopefully this time the stress test run will not reveal any problems with buf_pool_t::garbage_collect().

mysql-test/suite/innodb/t/mem_pressure.test Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
@grooverdan grooverdan force-pushed the bb-10.11-MDEV-24670-memory-pressure branch from 90c1e91 to 826b1a0 Compare November 6, 2023 09:07
Copy link
Contributor

@dr-m dr-m left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let’s wait for the stress test results.

storage/innobase/buf/buf0buf.cc Outdated Show resolved Hide resolved
storage/innobase/buf/buf0buf.cc Show resolved Hide resolved
@mleich1
Copy link
Contributor

mleich1 commented Nov 8, 2023

The RQG testing on
origin/bb-10.11-MDEV-24670-memory-pressure 826b1a0 2023-11-06T20:06:47+11:00
showed none rare
[rr 4186708 251852]mariadbd: /data/Server/bb-10.11-MDEV-24670-memory-pressure/storage/innobase/include/buf0buf.h:2031: void buf_page_t::clear_oldest_modification(): Assertion oldest_modification()' failed. (rr) bt #0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=89646028527168) at ./nptl/pthread_kill.c:44 #1 __pthread_kill_internal (signo=6, threadid=89646028527168) at ./nptl/pthread_kill.c:78 #2 __GI___pthread_kill (threadid=89646028527168, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 #3 0x000079f57f728476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #4 0x000079f57f70e7f3 in __GI_abort () at ./stdlib/abort.c:79 #5 0x000079f57f70e71b in __assert_fail_base (fmt=0x79f57f8c3150 "%s%s%s:%u: %s%sAssertion %s' failed.\n%n", assertion=0x55cf19977740 "oldest_modification()",
file=0x55cf19976460 "/data/Server/bb-10.11-MDEV-24670-memory-pressure/storage/innobase/include/buf0buf.h", line=2031, function=) at ./assert/assert.c:92
#6 0x000079f57f71fe96 in __GI___assert_fail (assertion=0x55cf19977740 "oldest_modification()", file=0x55cf19976460 "/data/Server/bb-10.11-MDEV-24670-memory-pressure/storage/innobase/include/buf0buf.h", line=2031,
function=0x55cf199776a0 "void buf_page_t::clear_oldest_modification()") at ./assert/assert.c:101
#7 0x000055cf18a83e3e in buf_page_t::clear_oldest_modification (this=this@entry=0x7f311180d430) at /data/Server/bb-10.11-MDEV-24670-memory-pressure/storage/innobase/include/buf0buf.h:2031
#8 0x000055cf18a6fdbf in buf_pool_t::delete_from_flush_list (this=this@entry=0x55cf1a6f1b40 <buf_pool>, bpage=bpage@entry=0x7f311180d430)
at /data/Server/bb-10.11-MDEV-24670-memory-pressure/storage/innobase/buf/buf0flu.cc:170
#9 0x000055cf18a45017 in buf_pool_t::garbage_collect (this=this@entry=0x55cf1a6f1b40 <buf_pool>) at /data/Server/bb-10.11-MDEV-24670-memory-pressure/storage/innobase/buf/buf0buf.cc:2155
#10 0x000055cf18a27a68 in mem_pressure::trigger_collection (this=0x55cf1b20b5c0 <mem_pressure_obj>) at /data/Server/bb-10.11-MDEV-24670-memory-pressure/storage/innobase/buf/buf0buf.cc:909
#11 buf_resize_start () at /data/Server/bb-10.11-MDEV-24670-memory-pressure/storage/innobase/buf/buf0buf.cc:2217
#12 0x000055cf1835e434 in innodb_buffer_pool_size_update (save=) at /data/Server/bb-10.11-MDEV-24670-memory-pressure/storage/innobase/handler/ha_innodb.cc:17430
#13 0x000055cf16ecfebb in sys_var_pluginvar::global_update (this=0x6210000cc888, thd=0x62c000380218, var=0x6290017664d8) at /data/Server/bb-10.11-MDEV-24670-memory-pressure/sql/sql_plugin.cc:3677
#14 0x000055cf16b7f16b in sys_var::update (this=0x6210000cc888, thd=, var=0x6290017664d8) at /data/Server/bb-10.11-MDEV-24670-memory-pressure/sql/set_var.cc:207
#15 0x000055cf16b804e5 in set_var::update (this=, thd=) at /data/Server/bb-10.11-MDEV-24670-memory-pressure/sql/set_var.cc:863
#16 0x000055cf16b83a96 in sql_set_variables (thd=thd@entry=0x62c000380218, var_list=var_list@entry=0x62c000385630, free=free@entry=true) at /data/Server/bb-10.11-MDEV-24670-memory-pressure/sql/set_var.cc:745
#17 0x000055cf16e7264e in mysql_execute_command (thd=thd@entry=0x62c000380218, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /data/Server/bb-10.11-MDEV-24670-memory-pressure/sql/sql_parse.cc:5064
#18 0x000055cf16e7c6b0 in mysql_parse (thd=thd@entry=0x62c000380218, rawbuf=, length=, parser_state=parser_state@entry=0x518857af75a0)
at /data/Server/bb-10.11-MDEV-24670-memory-pressure/sql/sql_parse.cc:8030
#19 0x000055cf16e8353c in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x62c000380218,
packet=packet@entry=0x62900175c219 "SET GLOBAL innodb_buffer_pool_size=@@innodb_buffer_pool_size /* E_R Thread1 QNO 5185 CON_ID 13 */ ", packet_length=packet_length@entry=98, blocking=blocking@entry=true)
at /data/Server/bb-10.11-MDEV-24670-memory-pressure/sql/sql_parse.cc:1894
#20 0x000055cf16e88980 in do_command (thd=0x62c000380218, blocking=blocking@entry=true) at /data/Server/bb-10.11-MDEV-24670-memory-pressure/sql/sql_parse.cc:1407
#21 0x000055cf1731ef63 in do_handle_one_connection (connect=, connect@entry=0x608000003238, put_in_cache=put_in_cache@entry=true) at /data/Server/bb-10.11-MDEV-24670-memory-pressure/sql/sql_connect.cc:1416
#22 0x000055cf1731f779 in handle_one_connection (arg=arg@entry=0x608000003238) at /data/Server/bb-10.11-MDEV-24670-memory-pressure/sql/sql_connect.cc:1318
#23 0x000055cf181568f1 in pfs_spawn_thread (arg=0x617000007098) at /data/Server/bb-10.11-MDEV-24670-memory-pressure/storage/perfschema/pfs.cc:2201
#24 0x000079f57f77ab43 in start_thread (arg=) at ./nptl/pthread_create.c:442
#25 0x000079f57f80bbb4 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
(rr)

sdp:/data1/results/1699453476/TBR-2080$ _RR_TRACE_DIR=./1/rr rr replay --mark-stdio

Testing scenario:

  1. Start the server with sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
  2. create 3 tables
    oltp2 is used later and contains 100 rows.
    CREATE TABLE oltp2 (
    pad char(60) NOT NULL default '',
    k int(10) unsigned NOT NULL default '0',
    id int(10) unsigned NOT NULL auto_increment,
    c char(120) NOT NULL default '',
    KEY k (k),
    PRIMARY KEY (id)) ENGINE=innodb
  3. Two threads connect around the same point of time
    thread1
    runs once, SET debug_dbug="d,trigger_garbage_collection" ;
    runs ~"endless" in a loop SET GLOBAL innodb_buffer_pool_size=@@innodb_buffer_pool_size ;
    thread2
    runs ~"endless" in a loop INSERT IGNORE INTO oltp2 ( k ) VALUES ( random _smallint_unsigned )

@dr-m
Copy link
Contributor

dr-m commented Nov 8, 2023

The failure that @mleich1 reported on 826b1a0 is in the buf_pool_t::garbage_collect() implementation that I provided. We have it waiting for buf_pool.flush_list_mutex:

#13 buf_pool_t::garbage_collect (this=this@entry=0x55cf1a6f1b40 <buf_pool>) at /data/Server/bb-10.11-MDEV-24670-memory-pressure/storage/innobase/buf/buf0buf.cc:2154

While this thread is waiting, buf_flush_page_cleaner() is invoking buf_pool_t::get_oldest_modification(), which will collect the garbage by invoking buf_pool_t::delete_from_flush_list(). We must reload the oldest_modification after acquiring the mutex. @mleich1 can you please apply this patch and test again?

diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc
index d46446a4b58..ed434e77fa4 100644
--- a/storage/innobase/buf/buf0buf.cc
+++ b/storage/innobase/buf/buf0buf.cc
@@ -2148,11 +2148,16 @@ inline void buf_pool_t::garbage_collect()
     if (state < buf_page_t::READ_FIX && bpage->lock.u_lock_try(true))
     {
       ut_ad(!bpage->is_io_fixed());
-      const lsn_t oldest_modification= bpage->oldest_modification();
+      lsn_t oldest_modification= bpage->oldest_modification();
       switch (oldest_modification) {
       case 1:
         mysql_mutex_lock(&buf_pool.flush_list_mutex);
-        buf_pool.delete_from_flush_list(bpage);
+        oldest_modification= bpage->oldest_modification();
+        if (oldest_modification)
+        {
+          ut_ad(oldest_modification == 1);
+          buf_pool.delete_from_flush_list(bpage);
+        }
         mysql_mutex_unlock(&buf_pool.flush_list_mutex);
         /* fall through */
       case 0:

@grooverdan grooverdan force-pushed the bb-10.11-MDEV-24670-memory-pressure branch 3 times, most recently from fc4effa to 00fa511 Compare November 16, 2023 07:46
Copy link
Contributor

@dr-m dr-m left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK to push after addressing these. It was a bit tricky to stabilize the regression test.

Comment on lines 17 to 22
SELECT CAST(VARIABLE_VALUE AS INTEGER) INTO @dirty_prev FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_buffer_pool_pages_dirty';

set debug_dbug="d,trigger_garbage_collection";
SET GLOBAL innodb_buffer_pool_size=@@innodb_buffer_pool_size;

SELECT VARIABLE_VALUE < @dirty_prev AS LESS_DIRTY_IS_GOOD FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_buffer_pool_pages_dirty';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are missing a CAST in the second SELECT. For some reason, the return value of get_one_variable() is a string. I did not track down where the comparison is being executed and why it would fail, but I assume that one of the operands is a string and the other is INTEGER.

Comment on lines 11 to 20
set @save_dbug=@@debug_dbug;

CREATE TABLE t1 (t TEXT) ENGINE=InnoDB;
INSERT INTO t1 SELECT CONCAT(REPEAT('junk text', 500), CAST(seq AS CHAR)) FROM seq_1_to_1000;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will fill the buffer pool with undo log pages due to row-level undo logging. We should enable the bulk insert interface to fill the buffer pool mainly with the pages of the table t1. Therefore, it can happen that before and after the buf_pool_t::garbage_collect(), the buffer pool is filled with undo log pages.

Because we are using debug instrumentation anyway, we can also make use of innodb_limit_optimistic_insert_debug and write considerably less redo log.

We’d better wait that all undo logs have been purged before we start the test. Before I added that, the test would fail after a couple of dozen repetitions.

diff --git a/mysql-test/suite/innodb/t/mem_pressure.test b/mysql-test/suite/innodb/t/mem_pressure.test
index 2d140fb22ad..60f5acc291d 100644
--- a/mysql-test/suite/innodb/t/mem_pressure.test
+++ b/mysql-test/suite/innodb/t/mem_pressure.test
@@ -9,17 +9,27 @@
 --echo #
 
 set @save_dbug=@@debug_dbug;
-
-CREATE TABLE t1 (t TEXT) ENGINE=InnoDB;
-INSERT INTO t1 SELECT CONCAT(REPEAT('junk text', 500), CAST(seq AS CHAR)) FROM seq_1_to_1000;
-
+set @save_limit=@@GLOBAL.innodb_limit_optimistic_insert_debug;
+SET GLOBAL innodb_max_purge_lag_wait=0;
+
+CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
+SET GLOBAL innodb_limit_optimistic_insert_debug=2;
+SET unique_checks=0, foreign_key_checks=0;
+INSERT INTO t1 SELECT * FROM seq_1_to_1000;
+SET GLOBAL innodb_limit_optimistic_insert_debug=@save_limit;
 DROP TABLE t1;
-SELECT CAST(VARIABLE_VALUE AS INTEGER) INTO @dirty_prev FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_buffer_pool_pages_dirty';
+SET unique_checks=1, foreign_key_checks=1;
+
+SELECT CAST(VARIABLE_VALUE AS INTEGER) INTO @dirty_prev
+FROM INFORMATION_SCHEMA.GLOBAL_STATUS
+WHERE VARIABLE_NAME='Innodb_buffer_pool_pages_dirty';
 
 set debug_dbug="d,trigger_garbage_collection";
 SET GLOBAL innodb_buffer_pool_size=@@innodb_buffer_pool_size;
 
-SELECT VARIABLE_VALUE < @dirty_prev AS LESS_DIRTY_IS_GOOD FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_buffer_pool_pages_dirty';
+SELECT CAST(VARIABLE_VALUE AS INTEGER) < @dirty_prev AS LESS_DIRTY_IS_GOOD
+FROM INFORMATION_SCHEMA.GLOBAL_STATUS
+WHERE VARIABLE_NAME='Innodb_buffer_pool_pages_dirty';
 
 let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
 let SEARCH_PATTERN= InnoDB: Memory pressure event freed;
@@ -27,6 +37,4 @@ let SEARCH_PATTERN= InnoDB: Memory pressure event freed;
 
 set debug_dbug=@save_dbug;
 
---echo #
 --echo # End of 10.11 tests
---echo #

The test as modified above passed my local test:

innodb.mem_pressure 'innodb'             w22 [ 1000 pass ]    139
--------------------------------------------------------------------------
The servers were restarted 0 times
Spent 5053.123 of 291 seconds executing testcases

Completed: All 42000 tests were successful.

Comment on lines 1301 to 1303
/** Collect garbage (release pages from the LRU list) */
#ifdef __linux__
inline void garbage_collect();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that Doxygen could complain about the stray comment if not run with -D__linux__. Better move it inside the #ifdef.

Comment on lines 745 to 753
/** Memory Pressure */

#ifdef __linux__
/*
based off https://www.kernel.org/doc/html/latest/accounting/psi.html#pressure-interface
and https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html#memory
*/
#include <poll.h>
#include <fstream>

class mem_pressure
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please move the /** Doxygen comment right before class mem_pressure, and consider including the whole comment there, in case someone is actually generating documentation from the source code and reading it:

#ifdef __linux__
# include <poll.h>
# include <fstream>

/** Memory Pressure

based on …
*/
class mem_pressure

buf_page_t::set_os_unused(): Remove the system call that had been added in
commit 16c9718 and revised in
commit c1fd082 for Microsoft Windows.

buf_pool_t::garbage_collect(): A new function to collect any garbage
from the InnoDB buffer pool that can be removed without writing any
log or data files. This will also invoke madvise() for all of buf_pool.free.

To trigger this the following MDEV is implemented:
MDEV-24670 avoid OOM by linux kernel co-operative memory management

To avoid frequent triggers that caused the MDEV-31953 regression, while
still preserving the 10.11 functionality of non-greedy kernel memory
usage, memory triggers are used.

On the triggering of memory pressure, if supported in the Linux kernel,
trigger the garbage collection of the innodb buffer pool.

The hard coded triggers occur where there is:
* some memory pressure in 5 of the last 10 seconds
* a full stall on memory pressure for 10ms in the last 2 seconds

The kernel will trigger only one in each of these time windows. To avoid
mariadb being in a constant state of memory garbage collection, this has
been limited to once per minute.

For a small set of kernels in 2023 (6.5, 6.6), there was a limit requiring
CAP_SYS_RESOURCE that was lifted[1] to support the use case of user
memory pressure. It not currently possible to set CAP_SYS_RESOURCES in
a systemd service as its setting a capability inside a usernamespace.

Running under systemd v254+ requires the default MemoryPressureWatch=auto
(or alternately "on").

Functionality was tested in a 6.4 kernel Fedora successfully under a
systemd service.

Running in a container requires that (unmask=)/sys/fs/cgroup be writable
by the mariadbd process.

To aid testing, the buf_pool_resize was a convient trigger point on
which to trigger garbage collection.

ref [1]: https://lore.kernel.org/all/CAMw=ZnQ56cm4Txgy5EhGYvR+Jt4s-KVgoA9_65HKWVMOXp7a9A@mail.gmail.com/T/#m3bd2a73c5ee49965cb73a830b1ccaa37ccf4e427

Co-Author: Daniel Black (on memory pressure trigger)

Reviewed by: Marko Mäkelä, Vladislav Vaintroub, Vladislav Lesin,
   Thirunarayanan Balathandayuthapani

Tested by: Matthias Leich
@grooverdan grooverdan force-pushed the bb-10.11-MDEV-24670-memory-pressure branch from 00fa511 to 4f58de1 Compare November 18, 2023 07:01
@grooverdan grooverdan merged commit 2323483 into MariaDB:10.11 Nov 18, 2023
@grooverdan grooverdan deleted the bb-10.11-MDEV-24670-memory-pressure branch November 19, 2023 03:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
MariaDB Foundation Pull requests created by MariaDB Foundation
Development

Successfully merging this pull request may close these issues.

4 participants