Can't sync: logcat E/davdroid.DavSyncAdapter( 2223): Local storage (content provider) exception

0

Hi,

davdroid 0.6.1, carddav through owncloud 4.90.6:
Quite some number of vcfs get transferred and then while committing (logcat):
D/davdroid.SyncManager( 2223): Adding C61EF548-57E0-0001-CD46-1E40362CD6E0.vcf
D/davdroid.LocalCollection( 2223): Committing 9 operations
D/davdroid.SyncManager( 2223): Adding C61EF548-5830-0001-A7AD-36A81E541D88.vcf
D/davdroid.LocalCollection( 2223): Committing 4 operations
D/davdroid.SyncManager( 2223): Adding C61EF548-57F0-0001-E3D9-28801DA9B790.vcf
D/davdroid.LocalCollection( 2223): Committing 5 operations
D/davdroid.SyncManager( 2223): Adding C61EF548-57F0-0001-E58D-16CAA6F413D0.vcf
D/davdroid.LocalCollection( 2223): Committing 4 operations
D/davdroid.SyncManager( 2223): Adding C61EF548-5790-0001-FFA3-1EA0B33089F0.vcf
D/davdroid.LocalCollection( 2223): Committing 9 operations
D/davdroid.SyncManager( 2223): Adding C61EF548-5840-0001-802A-C85D1830EC60.vcf
D/davdroid.LocalCollection( 2223): Committing 10 operations
E/JavaBinder( 2223): !!! FAILED BINDER TRANSACTION !!!
E/davdroid.DavSyncAdapter( 2223): Local storage (content provider) exception
E/davdroid.DavSyncAdapter( 2223): at.bitfire.davdroid.resource.LocalStorageException: Couldn't access local content provider
E/davdroid.DavSyncAdapter( 2223): at at.bitfire.davdroid.resource.LocalCollection.commit(LocalCollection.java:314)
E/davdroid.DavSyncAdapter( 2223): at at.bitfire.davdroid.resource.LocalAddressBook.commit(LocalAddressBook.java:148)
E/davdroid.DavSyncAdapter( 2223): at at.bitfire.davdroid.syncadapter.SyncManager.pullNew(SyncManager.java:193)
E/davdroid.DavSyncAdapter( 2223): at at.bitfire.davdroid.syncadapter.SyncManager.synchronize(SyncManager.java:87)
E/davdroid.DavSyncAdapter( 2223): at at.bitfire.davdroid.syncadapter.DavSyncAdapter.onPerformSync(DavSyncAdapter.java:129)
E/davdroid.DavSyncAdapter( 2223): at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:259)
E/davdroid.DavSyncAdapter( 2223): Caused by: android.os.TransactionTooLargeException
E/davdroid.DavSyncAdapter( 2223): at android.os.BinderProxy.transact(Native Method)
E/davdroid.DavSyncAdapter( 2223): at android.content.ContentProviderProxy.applyBatch(ContentProviderNative.java:517)
E/davdroid.DavSyncAdapter( 2223): at android.content.ContentProviderClient.applyBatch(ContentProviderClient.java:377)
E/davdroid.DavSyncAdapter( 2223): at at.bitfire.davdroid.resource.LocalCollection.commit(LocalCollection.java:311)
E/davdroid.DavSyncAdapter( 2223): ... 5 more
I/davdroid.DavSyncAdapter( 2223): Sync complete for com.android.contacts
D/davdroid.DavSyncAdapter( 2223): Closing httpClient
D/class ch.boye.httpclientandroidlib.impl.conn.DefaultManagedHttpClientConnection( 2223): http-outgoing-41: Close connection
D/class ch.boye.httpclientandroidlib.impl.conn.DefaultManagedHttpClientConnection( 2223): http-outgoing-41: Close connection
D/SyncManager( 843): failed sync operation BabsContacts u0 (bitfire.at.davdroid), com.android.contacts, SERVER, latestRunTime 10214329, reason: AutoSync, SyncResult: databaseError: true stats []
D/AccountTypeManager( 3353): Registering external account type=bitfire.at.davdroid, packageName=at.bitfire.davdroid
D/SyncManager( 843): not retrying sync operation because the error is a hard error: BabsContacts u0 (bitfire.at.davdroid), com.android.contacts, SERVER, latestRunTime 10250566, reason: AutoSync
I/AccountTypeManager( 3353): Loaded meta-data for 2 account types, 2 accounts in 7ms(wall) 4ms(cpu)

Note: this always and "reliably" happens. Hoiwever, the number of commits before it dies with the exception varies.

The corresponding carddav servers log:
"PROPFIND /remote.php/carddav/addressbooks/babs/contacts/ HTTP/1.1" 207 2063 "-" "DAVdroid/0.6.1"
"PROPFIND /remote.php/carddav/addressbooks/babs/contacts/ HTTP/1.1" 207 73824 "-" "DAVdroid/0.6.1"
"REPORT /remote.php/carddav/addressbooks/babs/contacts/ HTTP/1.1" 207 18251612 "-" "DAVdroid/0.6.1"

Regards,
Chris

0

Do you use high-res image photos? Is this a duplicate of #230?

Temporal relations are not necessarily causal relations.

0

There are images, indeed! Whether they are large (whatever the definition of large is ...) I cannot judge.

Chris

0

Definition of "large" is in our case ~ 1 MB (maybe slightly less) in the VCard because Android DB transactions are limited to 1 MB (see #230).

Temporal relations are not necessarily causal relations.

0

This is sad, because it will be very obscure to an ordinary user.
I've used CardDAV-Sync from google play and it works.
What are they doing differently?
Unfortunately, That one is not open source and therefore a no-go for me and one cannot lookup the source for a different photo handling ..
In any case: thank's for your software!

0

The only idea I have, is that your code checks for the condition < 1MB and resizes the image in case it is too large (for a - more or less - avatar a large image won't make sense anyway, however most users aren't aware of the size ...).
However, this makes syncing back also change the image size on the other side ...

0

Closing this issue now because it's a duplicate – please see #260 for further discussion.

Temporal relations are not necessarily causal relations.

Log in to reply

Looks like your connection to Bitfire App Forums was lost, please wait while we try to reconnect.