test: scylla_cluster: improve expected_error in add_server

We make two changes:
- we lease the IP address of a node that failed to boot because of
  an expected error,
- we don't log "Cluster ... added ..." when a node fails to boot
  because of an expected error.
This commit is contained in:
Patryk Jędrzejczak
2024-07-23 13:27:17 +02:00
parent 4079cd1a7b
commit 02ccd2e3af

View File

@@ -907,6 +907,13 @@ class ScyllaCluster:
)
server = None
async def handle_join_failure():
if not replace_cfg or not replace_cfg.reuse_ip_addr:
self.leased_ips.remove(ip_addr)
await self.host_registry.release_host(Host(ip_addr))
self.stopped[server.server_id] = server
try:
server = self.create_server(params)
self.logger.info("Cluster %s adding server...", self)
@@ -918,16 +925,18 @@ class ScyllaCluster:
workdir = '<unknown>' if server is None else server.workdir.name
self.logger.error("Failed to start Scylla server at host %s in %s: %s",
ip_addr, workdir, str(exc))
if not replace_cfg or not replace_cfg.reuse_ip_addr:
self.leased_ips.remove(ip_addr)
await self.host_registry.release_host(Host(ip_addr))
await handle_join_failure()
raise
finally:
if start and not expected_error:
if expected_error:
await handle_join_failure()
else:
if start:
self.running[server.server_id] = server
else:
self.stopped[server.server_id] = server
self.logger.info("Cluster %s added %s", self, server)
self.logger.info("Cluster %s added %s", self, server)
return ServerInfo(server.server_id, server.ip_addr, server.rpc_address)
async def add_servers(self, servers_num: int = 1,