During the development and review process of the disk health indicator we noticed that it was hard to understand. Since we learnt a lot from the first round of development we want to go through the code one more time and restructure it.
server/src/main/java/org/elasticsearch/health/node/DiskHealthIndicatorService.java
.sorted()
                .collect(Collectors.joining(", "));
            symptom = String.format(
                Locale.ROOT,
                "%d node%s with roles: [%s] %s out of disk or running low on disk space.",
                allUnhealthyNodes.size(),
                allUnhealthyNodes.size() == 1 ? "" : "s",
                roles,
                allUnhealthyNodes.size() == 1 ? "is" : "are"
            );
        }
        return symptom;
    }
    private List<HealthIndicatorImpact> getImpacts(
        Set<String> indicesWithBlock,
        Set<String> indicesOnUnhealthyNodes,
        Set<String> nodesReportingRed,
        Set<String> nodesReportingYellow,
        ClusterState clusterState
    ) {
        List<HealthIndicatorImpact> impacts = new ArrayList<>();
        if (indicesWithBlock.isEmpty() == false) {
            impacts.add(
                new HealthIndicatorImpact(
                    NAME,
                    IMPACT_INGEST_UNAVAILABLE_ID,
                    1,
                    String.format(
                        Locale.ROOT,
                        "Cannot insert or update documents in the affected indices [%s].",