2015-09-08 37 views
0

我正在使用objectify作爲GAE數據存儲的接口,並且想知道如何檢測事務何時失敗。也就是說,當您撥打電話時檢測事務是否失敗並重新運行物化

ofy().transact(new VoidWork() { 
    public void vrun() { 
    //save entity, this may throw - concurrent modification exception 
    } 
}); 

如果引發異常,則再次調用vrun()方法。我想在發生這種情況時記錄日誌。我嘗試了很多東西 - 用try/catch圍繞vrun()的內容,傳遞一個布爾標誌的引用,等等。但是這似乎不起作用。任何想法,我可能會出錯?

我需要能夠以編程方式檢測事務是否失敗,並在重試之前執行一些代碼。

回答

0

使用限制嘗試的#超載的transactNew()

ofy().transactNew(1, new VoidWork() { 
    ... 
}); 

這將讓你對自己的管理重試。請注意,在v5.1.6之前,#被錯誤地用作重試次數(而不是嘗試次數)。在v5.1.6中,更正了行爲以符合文檔。這是嘗試的次數。

+0

啊我看到了,我已經嘗試過了,但是正在使用Objectify的舊版本。升級到5.1.6似乎給出了更好的結果,謝謝。 –

+0

有5.1.7 :) – stickfigure

相關問題