[Fix][Master] Fix Potential danger in the event of a worker failover (#15689)

* clean unused import

* fix style check

* fix when path is null or empty, it will cause serverhost is null,

* fix UT test (#15684)

* [Fix-15639] parameterPassing is null case NPE (#15678)

Co-authored-by: caishunfeng <caishunfeng2021@gmail.com>

* fix  when path is null or empty, it will cause serverhost is null,
This commit is contained in:
ZhongJinHacker 2024-03-11 21:50:21 +08:00 committed by GitHub
parent 2395ba5ef8
commit 738da1cda3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 10 deletions

View File

@ -131,17 +131,20 @@ public class MasterRegistryClient implements AutoCloseable {
public void removeWorkerNodePath(String path, RegistryNodeType nodeType, boolean failover) {
log.info("{} node deleted : {}", nodeType, path);
try {
String serverHost = null;
if (!StringUtils.isEmpty(path)) {
serverHost = registryClient.getHostByEventDataPath(path);
if (StringUtils.isEmpty(serverHost)) {
log.error("server down error: unknown path: {}", path);
return;
}
if (!registryClient.exists(path)) {
log.info("path: {} not exists", path);
}
if (StringUtils.isEmpty(path)) {
log.error("server down error: node empty path: {}, nodeType:{}", path, nodeType);
return;
}
String serverHost = registryClient.getHostByEventDataPath(path);
if (StringUtils.isEmpty(serverHost)) {
log.error("server down error: unknown path: {}", path);
return;
}
if (!registryClient.exists(path)) {
log.info("path: {} not exists", path);
}
// failover server
if (failover) {
failoverService.failoverServerWhenDown(serverHost, nodeType);

View File

@ -103,4 +103,10 @@ public class MasterRegistryClientTest {
// Cannot mock static methods
masterRegistryClient.removeWorkerNodePath("/path", RegistryNodeType.WORKER, true);
}
@Test
public void removeWorkNodePathTest() {
masterRegistryClient.removeWorkerNodePath("", RegistryNodeType.WORKER, true);
masterRegistryClient.removeWorkerNodePath(null, RegistryNodeType.WORKER, true);
}
}