2016-09-19 6 views
0

Verwendung in Feuerbasis appengine:Retry für bestimmte Anzahl von Malen auf Feuerbasis Transaktion abbrechen

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

für einen bestimmten Knoten:
1. die Transaktion auf das erste Mal versagt und nicht erneut versucht.
2. Funktioniert gut vom zweiten Mal.

Also, ich möchte die Transaktion für x mal im Falle eines Fehlers wiederholen, und eine Ausnahme zum (x + 1) -ten Zeitpunkt der Ausführung auslösen. Vielen Dank!

+1

Warum die Transaktion beim ersten Versuch fehlschlägt? – JamieB

+0

Firebase-Transaktionen werden automatisch wiederholt. Welchen Fehler bekommst du? –

+0

DatabaseError: Der Vorgang musste aufgrund einer Netzwerkunterbrechung abgebrochen werden. –

Antwort

0

fügen Sie diese in Ihren Code:

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

Der zusätzliche Code mein Problem gelöst

Verwandte Themen