是否可以回滚承诺列表中的所有交易?

时间:2017-04-17 23:17:28

标签: grails groovy gorm gpars

我一直在关注Grails提供的有关承诺的文档: https://docs.grails.org/2.3.x/guide/async.html#promises

我有一个很大的id列表,我将它分成不同的tasks,然后在promise列表中调用waitAll()。基于此,当其中一个并发任务抛出异常时,是否可以回滚所有更改?

查看代码可能更容易:

def promistList = []
def collatedList = hugeList.collate(100)

collatedList.each {
    promiseList << task {
        DomainObject.withTransaction {
            def domainObject = findById('test')
            // do more work
            domainObject.save()
        }
    }
}
waitAll(promiseList)  

当一切运作完美时,这种方法很有效,但当然,我必须为事情做得不好而做好准备。理想情况下,即使最后一个任务抛出异常,我也希望回滚在所有任务中所做的所有更改。

这可能吗?

0 个答案:

没有答案