open-event-organizer-android: App crashing on Events Refresh

  • Events refresh causes a Foreign Key constraint failure
  • The migration should be set up correctly so that user does not have to clear the app on upgrades

@mejariamol Please take a look. This is what I was talking about while deleting the events

Log:

FATAL EXCEPTION: RxCachedThreadScheduler-2
  Process: org.fossasia.openevent.app, PID: 3435
  io.reactivex.exceptions.OnErrorNotImplementedException: FOREIGN KEY constraint failed (code 787)
      at io.reactivex.internal.observers.EmptyCompletableObserver.onError(EmptyCompletableObserver.java:50)
      at io.reactivex.internal.operators.completable.CompletableConcatArray$ConcatInnerObserver.onError(CompletableConcatArray.java:60)
      at io.reactivex.internal.operators.completable.CompletableFromAction.subscribeActual(CompletableFromAction.java:38)
      at io.reactivex.Completable.subscribe(Completable.java:1635)
      at io.reactivex.internal.operators.completable.CompletableConcatArray$ConcatInnerObserver.next(CompletableConcatArray.java:89)
      at io.reactivex.internal.operators.completable.CompletableConcatArray.subscribeActual(CompletableConcatArray.java:33)
      at io.reactivex.Completable.subscribe(Completable.java:1635)
      at io.reactivex.Completable.subscribe(Completable.java:1623)
      at org.fossasia.openevent.app.data.EventRepository.lambda$null$11(EventRepository.java:117)
      at org.fossasia.openevent.app.data.EventRepository$$Lambda$19.accept(Unknown Source)
      at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onNext(ObservableDoOnEach.java:95)
      at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:51)
      at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:37)
      at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:43)
      at io.reactivex.Observable.subscribe(Observable.java:10842)
      at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)
      at io.reactivex.Observable.subscribe(Observable.java:10842)
      at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
      at io.reactivex.Observable.subscribe(Observable.java:10842)
      at io.reactivex.internal.operators.observable.ObservableFlattenIterable.subscribeActual(ObservableFlattenIterable.java:44)
      at io.reactivex.Observable.subscribe(Observable.java:10842)
      at io.reactivex.internal.operators.observable.ObservableDefer.subscribeActual(ObservableDefer.java:39)
      at io.reactivex.Observable.subscribe(Observable.java:10842)
      at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
      at io.reactivex.Observable.subscribe(Observable.java:10842)
      at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
      at io.reactivex.Observable.subscribe(Observable.java:10842)
      at io.reactivex.internal.operators.observable.ObservableScalarXMap$ScalarXMapObservable.subscribeActual(ObservableScalarXMap.java:166)
      at io.reactivex.Observable.subscribe(Observable.java:10842)
      at io.reactivex.internal.operators.observable.ObservableSwitchIfEmpty$SwitchIfEmptyObserver.onComplete(ObservableSwitchIfEmpty.java:70)
      at io.reactivex.internal.disposables.EmptyDisposable.complete(EmptyDisposable.java:53)
      at io.reactivex.internal.operators.observable.ObservableEmpty.subscribeActual(ObservableEmpty.java:28)
      at io.reactivex.Observable.subscribe(Observable.java:10842)
      at io.reactivex.internal.operators.observable.ObservableDefer.subscribeActual(ObservableDefer.java:39)
      at io.reactivex.Observable.subscribe(Observable.java:10842)
      at io.reactivex.internal.operators.observable.ObservableSwitchIfEmpty.subscribeActual(ObservableSwitchIfEmpty.java:31)
      at io.reactivex.Observable.subscribe(Observable.java:10842)
      at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
      at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452)
      at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61)
      at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52)
      at java.util.concurrent.FutureTask.run(FutureTask.java:237)
07-06 15:23:13.943 3435-3507/org.fossasia.openevent.app E/AndroidRuntime:     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
      at java.lang.Thread.run(Thread.java:761)
   Caused by: android.database.sqlite.SQLiteConstraintException: FOREIGN KEY constraint failed (code 787)
      at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method)
      at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:734)
      at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754)
      at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64)
      at com.raizlabs.android.dbflow.structure.database.AndroidDatabaseStatement.executeUpdateDelete(AndroidDatabaseStatement.java:39)
      at com.raizlabs.android.dbflow.sql.language.BaseModelQueriable.executeUpdateDelete(BaseModelQueriable.java:111)
      at com.raizlabs.android.dbflow.sql.language.BaseModelQueriable.executeUpdateDelete(BaseModelQueriable.java:106)
      at com.raizlabs.android.dbflow.sql.language.Delete.table(Delete.java:21)
      at org.fossasia.openevent.app.data.db.DatabaseRepository.lambda$deleteAll$9(DatabaseRepository.java:83)
      at org.fossasia.openevent.app.data.db.DatabaseRepository$$Lambda$10.run(Unknown Source)
      at io.reactivex.internal.operators.completable.CompletableFromAction.subscribeActual(CompletableFromAction.java:34)
      	... 43 more

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Comments: 15 (15 by maintainers)

Most upvoted comments

Yes, I have checked. No issues from my side. Can you check the logs

Yes, with the upgraded db version, you also have to add migration for it

No, it’s working fine. But it should automatically set up the correct constraints on upgrade