Good point. Actually I am wondering whether we should even expose this to the public interface, given that RDD.unpersist() exists (which has a field for deciding whether to block or not). However, the difference between RDD.unpersist() and this RDD.cleanup() is that the former will only unpersist the RDD, but the latter will unpersist and cleanup shuffle data if this RDD had shuffle dependencies.