Would it make sense to have two cases here? APPLICATION_COMPLETE_SUCCESS and APPLICATION_COMPLETE_FAILURE? or maybe APPLICATION_COMPLETE  and APPLICATION_FAILURE? The former would be more consistent with some other parts of Spark where "complete" does not necessarily mean success or failure, just that it's finished.