Hi,
I have a problem with my ICS from Google Calendar. Since a few weeks I get a “Couldn’t apply batch operation” error every time the calendar syncs. However, the synchronization works, for I see all the events appear in my calendar. I tried removing the subscription, and adding it again but did not fix the issue.
I finally hooked up my adb debugger to find the culprit event that causes the issue, see output of failure:
01-01 19:19:18.611 17032 17087 W ContentResolver: Failed to get type for: content://com.android.calendar (Unknown URL content://com.android.calendar)
01-01 19:19:18.613 17032 17087 I CalendarProvider2: Trying to insert a attendee to a non-existent event
01-01 19:19:18.614 17032 17087 E DatabaseUtils: Writing exception to parcel
01-01 19:19:18.614 17032 17087 E DatabaseUtils: android.content.OperationApplicationException: insert failed
01-01 19:19:18.614 17032 17087 E DatabaseUtils: at android.content.ContentProviderOperation.apply(ContentProviderOperation.java:292)
01-01 19:19:18.614 17032 17087 E DatabaseUtils: at com.android.providers.calendar.SQLiteContentProvider.applyBatch(SQLiteContentProvider.java:236)
01-01 19:19:18.614 17032 17087 E DatabaseUtils: at com.android.providers.calendar.CalendarProvider2.applyBatch(CalendarProvider2.java:2111)
01-01 19:19:18.614 17032 17087 E DatabaseUtils: at android.content.ContentProvider$Transport.applyBatch(ContentProvider.java:320)
01-01 19:19:18.614 17032 17087 E DatabaseUtils: at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:181)
01-01 19:19:18.614 17032 17087 E DatabaseUtils: at android.os.Binder.execTransact(Binder.java:731)
01-01 19:19:18.616 28344 3580 E icsx5 : Couldn't process events
01-01 19:19:18.616 28344 3580 E icsx5 : at.bitfire.ical4android.CalendarStorageException: Couldn't apply batch operation
01-01 19:19:18.616 28344 3580 E icsx5 : at at.bitfire.ical4android.BatchOperation.commit(BatchOperation.kt:46)
01-01 19:19:18.616 28344 3580 E icsx5 : at at.bitfire.ical4android.AndroidEvent.update(AndroidEvent.kt:604)
01-01 19:19:18.616 28344 3580 E icsx5 : at at.bitfire.icsdroid.ProcessEventsTask.processEvents(ProcessEventsTask.kt:161)
01-01 19:19:18.616 28344 3580 E icsx5 : at at.bitfire.icsdroid.ProcessEventsTask.access$processEvents(ProcessEventsTask.kt:22)
01-01 19:19:18.616 28344 3580 E icsx5 : at at.bitfire.icsdroid.ProcessEventsTask$processEvents$downloader$1.onSuccess(ProcessEventsTask.kt:63)
01-01 19:19:18.616 28344 3580 E icsx5 : at at.bitfire.icsdroid.CalendarFetcher.fetchNetwork(CalendarFetcher.kt:133)
01-01 19:19:18.616 28344 3580 E icsx5 : at at.bitfire.icsdroid.CalendarFetcher.run(CalendarFetcher.kt:44)
01-01 19:19:18.616 28344 3580 E icsx5 : at at.bitfire.icsdroid.ProcessEventsTask.processEvents(ProcessEventsTask.kt:101)
01-01 19:19:18.616 28344 3580 E icsx5 : at at.bitfire.icsdroid.ProcessEventsTask.run(ProcessEventsTask.kt:34)
01-01 19:19:18.616 28344 3580 E icsx5 : at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
01-01 19:19:18.616 28344 3580 E icsx5 : at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
01-01 19:19:18.616 28344 3580 E icsx5 : at java.lang.Thread.run(Thread.java:764)
01-01 19:19:18.616 28344 3580 E icsx5 : Caused by: android.content.OperationApplicationException: insert failed
01-01 19:19:18.616 28344 3580 E icsx5 : at android.database.DatabaseUtils.readExceptionWithOperationApplicationExceptionFromParcel(DatabaseUtils.java:156)
01-01 19:19:18.616 28344 3580 E icsx5 : at android.content.ContentProviderProxy.applyBatch(ContentProviderNative.java:522)
01-01 19:19:18.616 28344 3580 E icsx5 : at android.content.ContentProviderClient.applyBatch(ContentProviderClient.java:474)
01-01 19:19:18.616 28344 3580 E icsx5 : at at.bitfire.ical4android.BatchOperation.runBatch(BatchOperation.kt:72)
01-01 19:19:18.616 28344 3580 E icsx5 : at at.bitfire.ical4android.BatchOperation.runBatch(BatchOperation.kt:86)
01-01 19:19:18.616 28344 3580 E icsx5 : at at.bitfire.ical4android.BatchOperation.runBatch(BatchOperation.kt:87)
01-01 19:19:18.616 28344 3580 E icsx5 : at at.bitfire.ical4android.BatchOperation.commit(BatchOperation.kt:36)
01-01 19:19:18.616 28344 3580 E icsx5 : ... 11 more
If I read this correct than icsx5 tries to add a attendee to an existing event, but fails because the event is not in my calendar. Unfortunately, it does not show for which entry this occurs, so I’m not able to remove the event from my calendar. I’ve tried using http://ical-validator.herokuapp.com/ to indicate any issues, but it only complains about several “UID encountered multiple times”, “Property [ORGANIZER] must be specified once” and a lot of “Property [ATTENDEE] is not applicable”. This also does not finding the problematic event.
Since the feed contains a lot of events and a lot of addresses of other people, I cannot past the link here.
Does this seem like a bug in icsx5 or in the ICS file itself? And is there another tool I can use to find the event that causes the problem?
icsx5 version 1.9 via F-Droid
PS: When I downgrade to version 1.8.9 the error does not occur. If I then upgrade to 1.9 the error is back after syncing. It therefore looks like a bug in icsx5 itself.