Yeah, the problem is that the MapOutputTracker returns an array of MapStatus, where position i of the array is supposed to be the location of the output of task i. This array contains nulls initially to denote a missing location, because a MapStatus can only indicate a real location. So I think that either way we'll have to check for some "missing output" condition.

With this fix I believe we won't be launching reduce stages when some maps are missing anymore, so we should be okay.