Consider a MapReduce that performs some writes in its beforeSubmit method.
In MapReduceRuntimeService, the beforeSubmit method will execute in a single transaction that commits before even submitting the MapReduce job.
If there is some exception after this point and before the MapReduce job is executed by the Hadoop framework, the MapReduce job will not run, but the data modified by the MapReduce's beforeSubmit method will still be in place.
This seems wrong, as a MapReduce's writes should not be committed if it failed.
TLDR: MapReduce's beforeSubmit dataset writes can be persisted and visible to others, even if there is some failure.