在firebase事务中止重试特定次数

时间:2016-09-19 07:54:40

标签: java firebase firebase-realtime-database

在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)时抛出异常。谢谢!

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 );
 }

添加的代码解决了我的问题