opacclient icon indicating copy to clipboard operation
opacclient copied to clipboard

Reminder Problems in 4.5.3

Open raphaelm opened this issue 9 years ago • 7 comments

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.

raphaelm avatar May 02 '16 16:05 raphaelm

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

raphaelm avatar May 02 '16 16:05 raphaelm

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

raphaelm avatar May 02 '16 17:05 raphaelm

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.

raphaelm avatar May 09 '16 06:05 raphaelm

We have not received any more bug reports related to these two problems, have we?

johan12345 avatar May 24 '16 20:05 johan12345

That is correct.

raphaelm avatar May 25 '16 07:05 raphaelm

Problem 1 seems to still happen in 4.5.6

raphaelm avatar Jun 20 '16 20:06 raphaelm

A workaround for Problem 1 was introduced in 700a92b1. Let's see if we still get crash Reports after that is released.

johan12345 avatar Jan 05 '17 11:01 johan12345