Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content

Tasks sync issues

  • /e/ version: /e/ test hobart
  • Device model: kiwi (nougat)
  • When it started to occur: both on fresh install and after update
  • Reproducible with the last /e/ version: -
  • Reproducible with LineageOS: -

Summary

On the last AccountManager version, it seems the Tasks app synchronisation is broken.

  • The device is unusable
  • The bug is the source of a data loss or a big waste of time
  • The bug concerns a third party app
  • The bug concerns security
  • The bug concerns privacy

The problem

Steps to reproduce

  1. Install the /e/ test build
  2. Add an /e/ account
  3. Add a new task in Tasks app

What is the current behavior?

  1. The task is not synced on ecloud
  2. A white page is shown on a regular basis (only on install after update)

What is the expected correct behavior?

Tasks have to be synced without any configuration, both when the update is installed on a fresh installation or after updating a previous version.

Technical informations

The Tasks app used is OpenTasks, and not the fork we did.

Relevant logs (adb logcat)

The following log appears when the white page appears.

2020-03-09 10:51:44.113 3486-3506/foundation.e.accountmanager E/davx5: [foundation.e.accountmanager.App] Unhandled exception!
    EXCEPTION java.lang.IllegalStateException: Migration didn't properly handle: service(foundation.e.accountmanager.model.Service).
     Expected:
    TableInfo{name='service', columns={principal=Column{name='principal', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, authState=Column{name='authState', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, accountName=Column{name='accountName', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, id=Column{name='id', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=1, defaultValue='null'}, accountType=Column{name='accountType', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, type=Column{name='type', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, addressBookAccountType=Column{name='addressBookAccountType', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[Index{name='index_service_accountName_type', unique=true, columns=[accountName, type]}]}
     Found:
    TableInfo{name='service', columns={principal=Column{name='principal', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='NULL'}, authState=Column{name='authState', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, accountName=Column{name='accountName', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, id=Column{name='id', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=1, defaultValue='null'}, accountType=Column{name='accountType', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, type=Column{name='type', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, addressBookAccountType=Column{name='addressBookAccountType', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[Index{name='index_service_accountName_type', unique=true, columns=[accountName, type]}]}
        at androidx.room.RoomOpenHelper.onUpgrade(RoomOpenHelper.java:103)
        at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onUpgrade(FrameworkSQLiteOpenHelper.java:124)
        at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:256)
        at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
        at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:92)
        at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:53)
        at androidx.room.RoomDatabase.inTransaction(RoomDatabase.java:476)
        at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.java:281)
    	at foundation.e.acc
2020-03-09 10:51:44.113 3486-3506/foundation.e.accountmanager E/davx5: ountmanager.model.ServiceDao_Impl.getByType(ServiceDao_Impl.java:293)
        at foundation.e.accountmanager.PackageChangedReceiver$Companion.updateTaskSync(PackageChangedReceiver.kt:36)
        at foundation.e.accountmanager.App$onCreate$1.invoke(App.kt:85)
        at foundation.e.accountmanager.App$onCreate$1.invoke(App.kt:30)
        at kotlin.concurrent.ThreadsKt$thread$thread$1.run(Thread.kt:30)

Relevant screenshots

screenshot_20200309_11_13_10

Solutions

Workaround

Possible fixes

Edited by Romain Hunault