Skip to content

Commit 50c512e

Browse files
committed
[#24659] Update the change in master addresses list to refect in tserver gflag.
Summary: Use Yb-ts-cli CLI for setting the tserver_master_addresses to immediately take effect when the list of master_addresses are updated in yugabyted. Test Plan: ./yb_build.sh --java-test 'org.yb.yugabyted.TestYugabytedMultiZone.testMultiZone' Reviewers: sgarg-yb Reviewed By: sgarg-yb Subscribers: yugabyted-dev Differential Revision: https://phorge.dev.yugabyte.com/D39574
1 parent f99d413 commit 50c512e

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

bin/yugabyted

+58
Original file line numberDiff line numberDiff line change
@@ -6110,6 +6110,13 @@ class ControlScript(object):
61106110
Output.log("thread-uml: master list updated, old list: {} ".format(
61116111
current_master_list) + "new list: {}".format(full_master_list))
61126112

6113+
tserver_ip_addr = self.advertise_ip()
6114+
tserver_ip_port = self.configs.saved_data.get("tserver_rpc_port")
6115+
if not YBTableServerCLIProxy.update_gflag_in_tserver(tserver_ip_addr,
6116+
tserver_ip_port, "tserver_master_addrs", masters_csv, True):
6117+
Output.log("Failed to update the master list {} " +
6118+
"on the tserver node.".format(masters_csv))
6119+
61136120
# Persist the config if masters have changed
61146121
self.configs.save_configs()
61156122

@@ -8357,13 +8364,19 @@ class ControlScript(object):
83578364
# Initialize the binary path of ybadmin
83588365
YBAdminProxy.init()
83598366

8367+
# Initialize the binary path of yb-ts-cli
8368+
YBTableServerCLIProxy.init()
8369+
83608370
self.validate_and_set_configs(args)
83618371

83628372
# Initialize the binary path of ybadmin
83638373
# TODO(Sanket): Clean up and refactor this file
83648374
YBAdminProxy.set_certs_dir(self.configs.saved_data.get("master_flags"), \
83658375
self.configs.saved_data.get("secure"), self.configs.saved_data.get("certs_dir"))
83668376

8377+
YBTableServerCLIProxy.set_certs_dir(self.configs.saved_data.get("master_flags"), \
8378+
self.configs.saved_data.get("secure"), self.configs.saved_data.get("certs_dir"))
8379+
83678380
try:
83688381
args.func()
83698382
except Exception as e:
@@ -8930,6 +8943,51 @@ class Diagnostics(object):
89308943
size += os.path.getsize(filepath)
89318944
return size
89328945

8946+
class YBTableServerCLIProxy(object):
8947+
cmd_args = []
8948+
8949+
@staticmethod
8950+
def init():
8951+
YBTableServerCLIProxy.cmd_args.append(find_binary_location("yb-ts-cli"))
8952+
8953+
@staticmethod
8954+
def set_certs_dir(master_flags, secure, certs_dir):
8955+
# If the user is attempting to use TLS, let's point yb-admin to
8956+
# the same certs dir as the master
8957+
if secure:
8958+
YBTableServerCLIProxy.cmd_args.append("--certs_dir_name={}".format(certs_dir))
8959+
elif master_flags:
8960+
flags_list = master_flags.split(",")
8961+
if 'use_node_to_node_encryption=true' not in flags_list:
8962+
return
8963+
certs_dir_name = [y for y in
8964+
[re.match('certs_dir=(.*)', x) for x in flags_list]
8965+
if y is not None]
8966+
if not certs_dir_name[0]:
8967+
raise RuntimeError("use_node_to_node_encryption=true must "
8968+
"be accompanied by a certs_dir setting")
8969+
YBTableServerCLIProxy.cmd_args.append('--certs_dir_name={}'.
8970+
format(certs_dir_name[0].group(1)))
8971+
8972+
@staticmethod
8973+
def update_gflag_in_tserver(tserver_ip, tserver_port, gflag, gflag_value, byForce=False):
8974+
cmd = YBTableServerCLIProxy.cmd_args + \
8975+
[
8976+
"--server_address={}:{}".format(tserver_ip, tserver_port),
8977+
"set_flag",
8978+
gflag,
8979+
gflag_value
8980+
]
8981+
8982+
if byForce:
8983+
cmd = cmd + \
8984+
[
8985+
"--force"
8986+
]
8987+
8988+
out, err, ret_code = run_process(cmd, timeout=10, log_cmd=True)
8989+
return (0 == ret_code)
8990+
89338991
class YBControllerCLIProxy(object):
89348992
cmd_args = []
89358993

0 commit comments

Comments
 (0)