【发布时间】:2017-01-23 14:16:28
【问题描述】:
我正在使用TransactionHandler 推送数据对象,因为可能存在并发问题。但是在这样做的同时,我得到了以下异常:
09-15 19:12:20.193 3196-3196/com.teja.twaters D/com.teja.twaters.utils.FirebaseUtil: isComplete - false
09-15 19:12:20.207 3196-3196/com.teja.twaters D/com.teja.twaters.utils.FirebaseUtil: databaseError - DatabaseError: User code called from the Firebase Database runloop threw an exception:
java.lang.StackOverflowError: stack size 1037KB
at java.lang.reflect.Method.invoke(Native Method)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(Unknown Source)
at com.google.android.gms.internal.zzaln.zzbw(Unknown Source)
at com.google.android.gms.internal.zzaln.zzcd(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzce(
我在runTransaction 期间确实搜索过此异常,但找不到任何异常。下面是我得到这个异常的代码sn-p:
dataSnapshot.getRef().runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
mutableData.child(order.getId() + "").setValue(order);
return Transaction.success(mutableData);
}
@Override
public void onComplete(DatabaseError databaseError, boolean isComplete, DataSnapshot dataSnapshot) {
logger.debug("isComplete - " + isComplete);
if(isComplete){
logger.debug("dataSnapshot - " + dataSnapshot);
callback.onSuccess(IConstants.USER_ORDER_SAVED);
} else {
logger.debug("databaseError - " + databaseError);
callback.onSuccess(IConstants.USER_ORDER_SAVE_FAILED);
}
}
});
我只用runTransaction 得到这个。但是对于孩子的setValue 和updateChildren 运行良好。其他人面临这种情况?
更新:
我发现的根本原因是,我使用的 Order POJO 有一个未声明为静态的子类。我改变了它,一切都按预期工作。
【问题讨论】:
标签: android firebase firebase-realtime-database