maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #11744
Re: 0fa832dc426: Revert THD::THD(skip_global_sys_var_lock) argument
Hi, Sergey!
ok to push
On Mar 25, Sergey Vojtovich wrote:
> revision-id: 0fa832dc426 (mariadb-10.3.12-97-g0fa832dc426)
> parent(s): 6f14489ad31
> author: Sergey Vojtovich <svoj@xxxxxxxxxxx>
> committer: Sergey Vojtovich <svoj@xxxxxxxxxxx>
> timestamp: 2019-03-21 17:17:26 +0400
> message:
>
> Revert THD::THD(skip_global_sys_var_lock) argument
>
> Originally introduced by e972125f1 to avoid harmless wait for
> LOCK_global_system_variables in a newly created thread, which creation was
> initiated by system variable update.
>
> At the same time it opens dangerous hole, when system variable update
> thread already released LOCK_global_system_variables and ack_receiver
> thread haven't yet completed new THD construction. In this case THD
> constructor goes completely unprotected.
>
> Since ack_receiver.stop() waits for the thread to go down, we have to
> temporarily release LOCK_global_system_variables so that it doesn't
> deadlock with ack_receiver.run(). Unfortunately it breaks atomicity
> of rpl_semi_sync_master_enabled updates and makes them not serialized.
>
> LOCK_rpl_semi_sync_master_enabled was introduced to workaround the above.
> TODO: move ack_receiver start/stop into repl_semisync_master
> enable_master/disable_master under LOCK_binlog protection?
>
> Part of MDEV-14984 - regression in connect performance
>
Regards,
Sergei
Chief Architect MariaDB
and security@xxxxxxxxxxx