WL#14563: Make IP Allowlist modifiable while GR is running
Affects: Server-8.0 — Status: Complete
EXECUTIVE SUMMARY ================= This work allows users to change IP allow list on a group member while GR is running. To reflect this change on all group members, the change needs to be done at each member. USER STORIES ============ - As a DBA I want to update the IP allow list while GR is running so that when adding a new member I do not have to restart GR on every member the list is updated. SCOPE ===== - This worklog is limited to making one group replication option be settable while group replication is running. It does not change its semantics in any way. LIMITS ====== - None. We are lifting a limitation actually.
FR1. When updating the group_replication_ip_allow_list, there shall not be any error returned stating that the option cannot be changed while GR is running. (Note: ip_white_list is deprecated.) FR2. When updating the group_replication_ip_white_list, there shall not be any error returned stating that the option cannot be changed while GR is running. (Note: ip_white_list is deprecated.) FR3. The scope of this variables is single instance. Therefore, updating this variable on an instance SHALL NOT modify the variable on all other instances that are part of the group. FR4. To update the entire group user MUST update all instances, one by one.
SUMMARY OF THE APPROACH ======================= The approach is as follows: - remove the check that disallows changing the variable while GR is running. - Implement the variable reconfiguration in GCS. - Make sure synchronization happens between the XCom kernel thread and user threads, using atomics since this is a fast operation, to guarantee that we don't have concurrent access to modifiable data. USER INTERFACE ============== System Variables: group_replication_ip_[allow|white]_list - NAME: group_replication_ip_[allow|white]_list - VALUES: No change - DEFAULT: No change - SCOPE: No change - REPLICATED: No change - DYNAMIC: Yes. It can be settable even with GR running after this worklog. - PERSIST: No change - PRIVILEGES: No change - COMMAND LINE: No change - DESCRIPTION: No change - OBSERVABILITY: No change OBSERVABILITY ============= No change USER PROCEDURE ============== No change SECURITY CONTEXT ================ No change DEPLOYMENT and INSTALLATION =========================== N/A PROTOCOL ======== N/A FAILURE MODEL SPECIFICATION =========================== N/A UPGRADE/DOWNGRADE and CROSS-VERSION REPLICATION =============================================== N/A
BLOCK DIAGRAM ============= N/A INTERFACE SPECIFICATION ======================= N/A DESIGN IMPLEMENTATION STEPS =========================== 1. Add support ip_allowlist in the (re)configure member function Gcs_xcom_interface. 2. Include synchronization using atomics for the Gcs_ip_allowlist object. Operations on this object are fast, so different threads can spin a little. 3. Remove the const keyword from the interface definition for the Gcs_ip_allowlist, since now it needs to change its own object (synchronization flag). 4. Remove runtime check that would block changing the variable. 5. Fix the existing tests.
Copyright (c) 2000, 2021, Oracle Corporation and/or its affiliates. All rights reserved.