private boolean splitStreamSetObject(S3ObjectMetadata objectMetadata, Collection<CompletableFuture<StreamObject>> cfs) {
        if (objectMetadata == null) {
            return false;
        }

        List<StreamDataBlock> streamDataBlocks = streamDataBlockMap.get(objectMetadata.objectId());
        if (streamDataBlocks.isEmpty()) {
            // object is empty, metadata is out of date
            logger.info("Object {} is out of date, will be deleted after compaction", objectMetadata.objectId());
            return true;
        }

        cfs.addAll(groupAndSplitStreamDataBlocks(objectMetadata, streamDataBlocks));
        return true;
    }
Split specified stream set object into stream objects.

@param objectMetadata     stream set object to split
@param cfs                List of CompletableFuture of StreamObject
@return true if split succeed, false otherwise
s3stream/src/main/java/com/automq/stream/s3/compact/CompactionManager.java