Description
If SparkExecutor gets an RDD with empty partitions, it can invoke VertexProgram.workerIterationStart without ever invoking VertexProgram.workerIterationEnd.
For vertex programs that allocate and release meaningful resources in the start/end methods, this can lead to resource leaks.
I already tested a fix that I made against the 3.2 series. I will submit PRs momentarily.