在appengine中使用firebase:
DatabaseReference upvotesRef = FirebaseDatabase.getInstance().getReference().child( "TEST" );
upvotesRef.runTransaction( new Transaction.Handler() {
@Override
public Transaction.Result doTransaction( MutableData mutableData ) {
// null cases handled
mutableData.setValue( object );
return Transaction.success( mutableData );
}
@Override
public void onComplete( DatabaseError databaseError, boolean committed, DataSnapshot dataSnapshot ) {
if( ! committed ) {
// Retry for x times
// Throw error on the (x+1)th time
}
}
}, false );
对于特定节点:
1.交易第一次失败而没有重试。
2.第二次工作正常。
因此,我想在发生任何错误的情况下重试该事务x次,并在执行(x + 1)时抛出异常。谢谢!
答案 0 :(得分:0)
将此添加到您的代码中:
@Override
public Transaction.Result doTransaction( MutableData mutableData ) {
// null cases handled
if(mutableData.getValue() == null){
return Transaction.success( mutableData );
}
mutableData.setValue( object );
return Transaction.success( mutableData );
}
添加的代码解决了我的问题