in kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/server/ServerService.java [115:142]
public int removeOfflineServers() {
AtomicInteger affectNums = new AtomicInteger();
Collection<String> instances = jobNodeStorage.getJobNodeChildrenKeys(InstanceNode.ROOT);
if (instances == null || instances.isEmpty()) {
return affectNums.get();
}
Collection<String> instanceIps = instances.stream().map(instance -> instance.split("@-@")[0]).collect(Collectors.toSet());
if (instanceIps.isEmpty()) {
return affectNums.get();
}
List<String> serverIps = jobNodeStorage.getJobNodeChildrenKeys(ServerNode.ROOT);
if (serverIps == null || serverIps.isEmpty()) {
return affectNums.get();
}
serverIps.forEach(serverIp -> {
if (instanceIps.contains(serverIp)) {
return;
}
String status = jobNodeStorage.getJobNodeData(serverNode.getServerNode(serverIp));
if (StringUtils.isBlank(status)) {
return;
}
jobNodeStorage.removeJobNodeIfExisted(serverNode.getServerNode(serverIp));
affectNums.getAndIncrement();
});
return affectNums.get();
}