Reminder Problems in 4.5.3
Problem 1
STACK_TRACE=java.lang.RuntimeException: Unable to start receiver de.geeksfactory.opacclient.reminder.ReminderBroadcastReceiver: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String de.geeksfactory.opacclient.objects.LentItem.getTitle()' on a null object reference
at android.app.ActivityThread.handleReceiver(ActivityThread.java:3020)
at android.app.ActivityThread.access$1800(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1509)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5912)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String de.geeksfactory.opacclient.objects.LentItem.getTitle()' on a null object reference
at de.geeksfactory.opacclient.reminder.ReminderBroadcastReceiver.showNotification(ReminderBroadcastReceiver.java:125)
at de.geeksfactory.opacclient.reminder.ReminderBroadcastReceiver.onReceive(ReminderBroadcastReceiver.java:64)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:3013)
... 9 more
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String de.geeksfactory.opacclient.objects.LentItem.getTitle()' on a null object reference
at de.geeksfactory.opacclient.reminder.ReminderBroadcastReceiver.showNotification(ReminderBroadcastReceiver.java:125)
at de.geeksfactory.opacclient.reminder.ReminderBroadcastReceiver.onReceive(ReminderBroadcastReceiver.java:64)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:3013)
at android.app.ActivityThread.access$1800(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1509)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5912)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
This can only be caused by adata.getLentItem(mediaId) returning null in line 102 of ReminderBroadcastReceiver.java which in turns means that alarm.media contains an invalid media ID.
Problem 2
STACK_TRACE=java.lang.RuntimeException: Unable to start activity ComponentInfo{de.geeksfactory.opacclient/de.geeksfactory.opacclient.frontend.MainActivity}: java.lang.NullPointerException: Attempt to read from field 'long[] de.geeksfactory.opacclient.reminder.Alarm.media' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2521)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2595)
at android.app.ActivityThread.access$800(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5624)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
Caused by: java.lang.NullPointerException: Attempt to read from field 'long[] de.geeksfactory.opacclient.reminder.Alarm.media' on a null object reference
at de.geeksfactory.opacclient.frontend.MainActivity.onCreate(MainActivity.java:120)
at android.app.Activity.performCreate(Activity.java:6092)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2468)
... 10 more
java.lang.NullPointerException: Attempt to read from field 'long[] de.geeksfactory.opacclient.reminder.Alarm.media' on a null object reference
at de.geeksfactory.opacclient.frontend.MainActivity.onCreate(MainActivity.java:120)
at android.app.Activity.performCreate(Activity.java:6092)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2468)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2595)
at android.app.ActivityThread.access$800(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5624)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
This happens after clicking on a notification and is thus less dramatic than a failed notification. Nevertheless, it means that MainActivity is called with an invalid alarm ID. This is probably fixed by 4ca2e91a7616e502db0a3597712b95ffdf96786c.
Problem 3
One person with multiple accounts reports that they don't get notifications. We don't know more yet.
Data points:
- [x] Prolonging an item while its notification is shown works fine, the notification will be removed
- [x] Prolonging an item while it is snoozed works fine, the notification will be removed
- [x] Prolonging/removing one of several items with the same due date works fine, the current notficiation is updated
(Problem 1)
Currently, the following actions might impact the LentItems table without touching alarms:
- [x] Invalidating cached account data (on connectivity error in AccountFragment)
- [x] Invalidating cached account data (happens after every reservation, booking or prolonging process)
- [x] Deleting an account because the library support was dropped (currently doesn't even remove lent items, but probably should)
- [x] Deleting an account via the UI (currently doesn't even remove lent items, but probably should)
Problem 2 seems to be gone. For Problem 1, there are still some crash reports on 4.5.4 but they also might be due to old (invalid) data in the DB.
We have not received any more bug reports related to these two problems, have we?
That is correct.
Problem 1 seems to still happen in 4.5.6
A workaround for Problem 1 was introduced in 700a92b1. Let's see if we still get crash Reports after that is released.