{"action":"created","issue":{"url":"https://api.github.com/repos/PaulWoitaschek/Voice/issues/798","repository_url":"https://api.github.com/repos/PaulWoitaschek/Voice","labels_url":"https://api.github.com/repos/PaulWoitaschek/Voice/issues/798/labels{/name}","comments_url":"https://api.github.com/repos/PaulWoitaschek/Voice/issues/798/comments","events_url":"https://api.github.com/repos/PaulWoitaschek/Voice/issues/798/events","html_url":"https://github.com/PaulWoitaschek/Voice/issues/798","id":390779947,"node_id":"MDU6SXNzdWUzOTA3Nzk5NDc=","number":798,"title":"Inconsistent Data","user":{"login":"PaulWoitaschek","id":743462,"node_id":"MDQ6VXNlcjc0MzQ2Mg==","avatar_url":"https://avatars3.githubusercontent.com/u/743462?v=4","gravatar_id":"","url":"https://api.github.com/users/PaulWoitaschek","html_url":"https://github.com/PaulWoitaschek","followers_url":"https://api.github.com/users/PaulWoitaschek/followers","following_url":"https://api.github.com/users/PaulWoitaschek/following{/other_user}","gists_url":"https://api.github.com/users/PaulWoitaschek/gists{/gist_id}","starred_url":"https://api.github.com/users/PaulWoitaschek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PaulWoitaschek/subscriptions","organizations_url":"https://api.github.com/users/PaulWoitaschek/orgs","repos_url":"https://api.github.com/users/PaulWoitaschek/repos","events_url":"https://api.github.com/users/PaulWoitaschek/events{/privacy}","received_events_url":"https://api.github.com/users/PaulWoitaschek/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/PaulWoitaschek/Voice/milestones/6","html_url":"https://github.com/PaulWoitaschek/Voice/milestone/6","labels_url":"https://api.github.com/repos/PaulWoitaschek/Voice/milestones/6/labels","id":3542623,"node_id":"MDk6TWlsZXN0b25lMzU0MjYyMw==","number":6,"title":"4.0.0","description":"","creator":{"login":"PaulWoitaschek","id":743462,"node_id":"MDQ6VXNlcjc0MzQ2Mg==","avatar_url":"https://avatars3.githubusercontent.com/u/743462?v=4","gravatar_id":"","url":"https://api.github.com/users/PaulWoitaschek","html_url":"https://github.com/PaulWoitaschek","followers_url":"https://api.github.com/users/PaulWoitaschek/followers","following_url":"https://api.github.com/users/PaulWoitaschek/following{/other_user}","gists_url":"https://api.github.com/users/PaulWoitaschek/gists{/gist_id}","starred_url":"https://api.github.com/users/PaulWoitaschek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PaulWoitaschek/subscriptions","organizations_url":"https://api.github.com/users/PaulWoitaschek/orgs","repos_url":"https://api.github.com/users/PaulWoitaschek/repos","events_url":"https://api.github.com/users/PaulWoitaschek/events{/privacy}","received_events_url":"https://api.github.com/users/PaulWoitaschek/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":12,"state":"open","created_at":"2018-08-02T18:17:39Z","updated_at":"2018-12-13T20:19:59Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2018-12-13T17:21:26Z","updated_at":"2018-12-15T21:52:03Z","closed_at":null,"author_association":"OWNER","body":"I have this crash I can't make sense of. Any idea how that could happen?\r\n\r\ncc @Plastix \r\n\r\n```\r\nFatal Exception: io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | java.util.NoSuchElementException: Collection contains no element matching the predicate.\r\n       at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)\r\n       at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)\r\n       at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77)\r\n       at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.checkTerminate(ObservableFlatMap.java:496)\r\n       at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drainLoop(ObservableFlatMap.java:334)\r\n       at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drain(ObservableFlatMap.java:326)\r\n       at io.reactivex.internal.operators.observable.ObservableFlatMap$InnerObserver.onError(ObservableFlatMap.java:575)\r\n       at io.reactivex.internal.observers.BasicFuseableObserver.onError(BasicFuseableObserver.java:100)\r\n       at io.reactivex.internal.operators.observable.ObservableSwitchMap$SwitchMapObserver.drain(ObservableSwitchMap.java:211)\r\n       at io.reactivex.internal.operators.observable.ObservableSwitchMap$SwitchMapObserver.onError(ObservableSwitchMap.java:140)\r\n       at io.reactivex.internal.operators.observable.ObservableSwitchMap$SwitchMapObserver.onNext(ObservableSwitchMap.java:115)\r\n       at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)\r\n       at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver.drain(ObservableConcatMap.java:470)\r\n       at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver.onSubscribe(ObservableConcatMap.java:330)\r\n       at io.reactivex.internal.operators.observable.ObservableFromArray.subscribeActual(ObservableFromArray.java:31)\r\n       at io.reactivex.Observable.subscribe(Observable.java:12197)\r\n       at io.reactivex.internal.operators.observable.ObservableConcatMap.subscribeActual(ObservableConcatMap.java:55)\r\n       at io.reactivex.Observable.subscribe(Observable.java:12197)\r\n       at io.reactivex.internal.operators.observable.ObservableMap.subscribeActual(ObservableMap.java:32)\r\n       at io.reactivex.Observable.subscribe(Observable.java:12197)\r\n       at io.reactivex.internal.operators.observable.ObservableSwitchMap.subscribeActual(ObservableSwitchMap.java:51)\r\n       at io.reactivex.Observable.subscribe(Observable.java:12197)\r\n       at io.reactivex.internal.operators.observable.ObservableDistinctUntilChanged.subscribeActual(ObservableDistinctUntilChanged.java:35)\r\n       at io.reactivex.Observable.subscribe(Observable.java:12197)\r\n       at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.subscribeInner(ObservableFlatMap.java:165)\r\n       at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onNext(ObservableFlatMap.java:139)\r\n       at io.reactivex.internal.operators.observable.ObservableFromArray$FromArrayDisposable.run(ObservableFromArray.java:108)\r\n       at io.reactivex.internal.operators.observable.ObservableFromArray.subscribeActual(ObservableFromArray.java:37)\r\n       at io.reactivex.Observable.subscribe(Observable.java:12197)\r\n       at io.reactivex.internal.operators.observable.ObservableFlatMap.subscribeActual(ObservableFlatMap.java:55)\r\n       at io.reactivex.Observable.subscribe(Observable.java:12197)\r\n       at io.reactivex.Observable.subscribe(Observable.java:12183)\r\n       at io.reactivex.Observable.subscribe(Observable.java:12085)\r\n       at de.ph1b.audiobook.features.widget.TriggerWidgetOnChange.init(TriggerWidgetOnChange.kt:26)\r\n       at de.ph1b.audiobook.injection.App.onCreate(App.kt:79)\r\n       at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1122)\r\n       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6517)\r\n       at android.app.ActivityThread.-wrap2(Unknown Source)\r\n       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1963)\r\n       at android.os.Handler.dispatchMessage(Handler.java:108)\r\n       at android.os.Looper.loop(Looper.java:166)\r\n       at android.app.ActivityThread.main(ActivityThread.java:7425)\r\n       at java.lang.reflect.Method.invoke(Method.java)\r\n       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)\r\n       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)\r\n```"},"comment":{"url":"https://api.github.com/repos/PaulWoitaschek/Voice/issues/comments/447600408","html_url":"https://github.com/PaulWoitaschek/Voice/issues/798#issuecomment-447600408","issue_url":"https://api.github.com/repos/PaulWoitaschek/Voice/issues/798","id":447600408,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0NzYwMDQwOA==","user":{"login":"PaulWoitaschek","id":743462,"node_id":"MDQ6VXNlcjc0MzQ2Mg==","avatar_url":"https://avatars3.githubusercontent.com/u/743462?v=4","gravatar_id":"","url":"https://api.github.com/users/PaulWoitaschek","html_url":"https://github.com/PaulWoitaschek","followers_url":"https://api.github.com/users/PaulWoitaschek/followers","following_url":"https://api.github.com/users/PaulWoitaschek/following{/other_user}","gists_url":"https://api.github.com/users/PaulWoitaschek/gists{/gist_id}","starred_url":"https://api.github.com/users/PaulWoitaschek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PaulWoitaschek/subscriptions","organizations_url":"https://api.github.com/users/PaulWoitaschek/orgs","repos_url":"https://api.github.com/users/PaulWoitaschek/repos","events_url":"https://api.github.com/users/PaulWoitaschek/events{/privacy}","received_events_url":"https://api.github.com/users/PaulWoitaschek/received_events","type":"User","site_admin":false},"created_at":"2018-12-15T21:52:03Z","updated_at":"2018-12-15T21:52:03Z","author_association":"OWNER","body":"The subscriber should not handle the error as there should be no error.\r\n\r\nYou should only handle onError if you expect an error.\r\nHere there is an underlying bug which needs to be fixed so catching this hides the actual bug.\r\n\r\nA [Book](https://github.com/PaulWoitaschek/Voice/blob/master/data/src/main/java/de/ph1b/audiobook/data/Book.kt) validates its internal state.\r\n`BookContent` validates that the current chapter specified in the `BookSettings` is present in the chapter list.\r\n\r\nTherefore it means that the acutal issue is in the persistence layer.\r\nIt is somehow happening that a book (which is always valid as it validates its own state) gets persisted and then when retrieving it is invalid.\r\n\r\nBut I don't understand how this can happen.\r\nhttps://github.com/PaulWoitaschek/Voice/blob/master/data/src/main/java/de/ph1b/audiobook/data/repo/internals/BookStorage.kt#L54\r\nThis runs in a sql transaction so it should be only committed after all insets are made."}}
{"actor":{"display_login":"PaulWoitaschek"}}