public int removeOfflineServers()

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();
    }