private void publishCdcStats()

in server/src/main/java/org/apache/cassandra/sidecar/tasks/CdcRawDirectorySpaceCleaner.java [335:378]


    private void publishCdcStats(@Nullable List<CdcRawSegmentFile> cdcFiles)
    {
        // no cdc data consumed or exist
        boolean noCdcFiles = cdcFiles == null || cdcFiles.isEmpty();
        if (noCdcFiles && priorCdcFiles.isEmpty())
            return;

        Map<CdcRawSegmentFile, Long> currentFiles;
        long totalCurrentBytes = 0L;
        if (noCdcFiles)
        {
            currentFiles = new HashMap<>();
        }
        else
        {
            currentFiles = new HashMap<>(cdcFiles.size());
            for (CdcRawSegmentFile segment : cdcFiles)
            {
                if (segment.exists())
                {
                    long len = segment.length();
                    currentFiles.put(segment, len);
                    totalCurrentBytes += len;
                }
            }
        }

        // skip publishing. there is no cdc data consumed and no data exist.
        if (totalCurrentBytes == 0L && priorCdcFiles.isEmpty())
        {
            priorCdcFiles = currentFiles;
            return;
        }

        // consumed files is the files exist in the prior round but now are deleted.
        Set<CdcRawSegmentFile> consumedFiles =
        Sets.difference(priorCdcFiles.keySet(), currentFiles.keySet());
        long totalConsumedBytes =
        consumedFiles.stream().map(priorCdcFiles::get).reduce(0L, Long::sum);
        priorCdcFiles.clear();
        priorCdcFiles = currentFiles;
        cdcMetrics.totalConsumedCdcBytes.metric.update(totalConsumedBytes);
        cdcMetrics.totalCdcSpaceUsed.metric.setValue(totalCurrentBytes);
    }