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



  • 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


  • developer

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



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

    Chris


  • developer

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



  • 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!



  • 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 ...


  • developer

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


Log in to reply
 

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