diff options
| author | Marko Mäkelä <marko.makela@mariadb.com> | 2018-02-14 15:18:55 +0200 |
|---|---|---|
| committer | Marko Mäkelä <marko.makela@mariadb.com> | 2018-02-15 09:59:03 +0200 |
| commit | 5fe9b4a7ae914b916a84170ac614761795f50c86 (patch) | |
| tree | 76da2060b7d0815579d85459e7eafca09183cc5f /sql/wsrep_var.cc | |
| parent | 8db54f1ad55fad7396fb51850c7266352785ed6c (diff) | |
| download | mariadb-git-5fe9b4a7ae914b916a84170ac614761795f50c86.tar.gz | |
MDEV-14648 Restore fix for MySQL BUG#39053 - UNINSTALL PLUGIN does not allow the storage engine to cleanup open connections
Also, allow the MariaDB 10.2 server to link InnoDB dynamically
against ha_innodb.so (which is what mysql-test-run.pl expects
to exist, instead of the default name ha_innobase.so).
wsrep_load_data_split(): Instead of referring to innodb_hton_ptr,
check the handlerton::db_type. This was recently broken by me in
MDEV-11415.
innodb_lock_schedule_algorithm: Define as a weak global symbol,
so that WITH_WSREP will not depend on InnoDB being linked statically.
I tested this manually. Notably, running a test that only does
SET GLOBAL wsrep_on=1;
with a static or dynamic InnoDB and
./mtr --mysqld=--loose-innodb-lock-schedule-algorithm=fcfs
will crash with SIGSEGV at shutdown. With the default VATS
combination the wsrep_on is properly refused for both the
static and dynamic InnoDB.
ha_close_connection(): Do invoke the method also for plugins
for which UNINSTALL PLUGIN was deferred due to open connections.
Thanks to @svoj for pointing this out.
thd_to_trx(): Return a pointer, not a reference to a pointer.
check_trx_exists(): Invoke thd_set_ha_data() for assigning a transaction.
log_write_checkpoint_info(): Remove an unused DEBUG_SYNC point
that would cause an assertion failure on shutdown after deferred
UNINSTALL PLUGIN.
This was tested as follows:
cmake -DWITH_WSREP=1 -DPLUGIN_INNOBASE:STRING=DYNAMIC \
-DWITH_MARIABACKUP:BOOL=OFF ...
make
cd mysql-test
./mtr innodb.innodb_uninstall
Diffstat (limited to 'sql/wsrep_var.cc')
| -rw-r--r-- | sql/wsrep_var.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sql/wsrep_var.cc b/sql/wsrep_var.cc index a6122a7b1bc..b9eb546bf76 100644 --- a/sql/wsrep_var.cc +++ b/sql/wsrep_var.cc @@ -42,7 +42,10 @@ int wsrep_init_vars() return 0; } -extern ulong innodb_lock_schedule_algorithm; +/* This is intentionally declared as a weak global symbol, so that +linking will succeed even if the server is built with a dynamically +linked InnoDB. */ +ulong innodb_lock_schedule_algorithm __attribute__((weak)); bool wsrep_on_update (sys_var *self, THD* thd, enum_var_type var_type) { |
