The distributed job locator inserts happen within BatchJobRegistryBeanPostProcessor where any runtime exceptions (via BeanException) would invoke the destroy() and subsequently delete the updates. Do you still see a case where we need to handle the transaction explicitly?