Bug #95151 unsuccessful auto-rejoin sometimes is unable to set super_read_only
Submitted: 26 Apr 2019 10:06 Modified: 30 Apr 2019 12:54
Reporter: Nuno Carvalho Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Group Replication Severity:S3 (Non-critical)
Version: OS:Any
Assigned to: CPU Architecture:Any

[26 Apr 2019 10:06] Nuno Carvalho
Description:
When auto-rejoin is unable to succeed after a expel caused by a
majority loss, its thread may not be able to follow the action set
by group_replication_exit_state_action.
To set that action, it connects to the server though the SQL API,
using its own thread with the current session (PSESSION_USE_THREAD),
though after a majority loss that may not be enough, what will make
the SQL connection to fail.

How to repeat:
Remove the log suppression:
call mtr.add_suppression("Unable to read the server value for the super_read_only variable");

from tests:
gr_autorejoin_majority_loss_rejoin_failed_abort.test 
gr_autorejoin_majority_loss_rejoin_failed_readonly.test
gr_autorejoin_monitoring_test.test

Suggested fix:
Ensure that the thread session is always initialized.
[30 Apr 2019 12:54] Margaret Fisher
Posted by developer:
 
Changelog entry added for MySQL 8.0.17:

A replication group member that was unable to contact a majority of the group before the group_replication_unreachable_majority_timeout setting was reached, and then exhausted the number of auto-rejoin attempts specified by the group_replication_autorejoin_tries system variable without successfully rejoining, was sometimes unable to carry out the action specified by the group_replication_exit_state_action system variable. The member tries to carry out the action  using the current session, which sometimes failed. The member now ensures that the session is initialized  before using it to connect to the server to carry out the exit state action.