SetupActivity is shown when account exists
Steps to reproduce:
- Start from fresh state (app data cleared, recent apps cleared)
- Launch the app, create an account
- Sign out
- Relaunch the app from recent apps: as expected, PasswordActivity is shown
- Tap "I have forgotten my password" > "Delete"
- Create a new account
- Sign out
- Relaunch the app from recent apps
- Expected behaviour: PasswordActivity is shown
- Actual behaviour: SetupActivity is shown
Following the prompts from SetupActivity leads to a startup failure:
3-19 16:44:08.624 29515-29545/org.briarproject.briar.android.debug W/LifecycleManagerImpl: org.briarproject.bramble.api.db.DbException: org.h2.jdbc.JdbcSQLException: Encryption error in file null [90049-192]
org.briarproject.bramble.api.db.DbException: org.h2.jdbc.JdbcSQLException: Encryption error in file null [90049-192]
at org.briarproject.bramble.db.JdbcDatabase.startTransaction(JdbcDatabase.java:468)
at org.briarproject.bramble.db.JdbcDatabase.open(JdbcDatabase.java:314)
at org.briarproject.bramble.db.H2Database.open(H2Database.java:51)
at org.briarproject.bramble.db.DatabaseComponentImpl.open(DatabaseComponentImpl.java:106)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl.startServices(LifecycleManagerImpl.java:134)
at org.briarproject.briar.android.BriarService.lambda$onCreate$0$BriarService(BriarService.java:130)
at org.briarproject.briar.android.BriarService$$Lambda$0.run(Unknown Source)
at java.lang.Thread.run(Thread.java:841)
Caused by: org.h2.jdbc.JdbcSQLException: Encryption error in file null [90049-192]
at org.h2.mvstore.db.MVTableEngine$Store.convertIllegalStateException(MVTableEngine.java:182)
at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:167)
at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:99)
at org.h2.engine.Database.getPageStore(Database.java:2463)
at org.h2.engine.Database.open(Database.java:692)
at org.h2.engine.Database.openDatabase(Database.java:270)
at org.h2.engine.Database.<init>(Database.java:264)
at org.h2.engine.Engine.openSession(Engine.java:64)
at org.h2.engine.Engine.openSession(Engine.java:176)
at org.h2.engine.Engine.createSessionAndValidate(Engine.java:154)
at org.h2.engine.Engine.createSession(Engine.java:137)
at org.h2.engine.Engine.createSession(Engine.java:27)
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:349)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:118)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:102)
at org.h2.Driver.connect(Driver.java:72)
at java.sql.DriverManager.getConnection(DriverManager.java:179)
at org.briarproject.bramble.db.H2Database.createConnection(H2Database.java:98)
at org.briarproject.bramble.db.JdbcDatabase.startTransaction(JdbcDatabase.java:457)
at org.briarproject.bramble.db.JdbcDatabase.open(JdbcDatabase.java:314)
at org.briarproject.bramble.db.H2Database.open(H2Database.java:51)
at org.briarproject.bramble.db.DatabaseComponentImpl.open(DatabaseComponentImpl.java:106)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl.startServices(LifecycleManagerImpl.java:134)
at org.briarproject.briar.android.BriarService.lambda$onCreate$0$BriarService(BriarService.java:130)
at org.briarproject.briar.android.BriarService$$Lambda$0.run(Unknown Source)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.IllegalStateException: Store header is corrupt: split:30:/data/data/org.briarproject.briar.android.debug/app_db/db.mv.db [1.4.192/6]
at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:773)
at org.h2.mvstore.MVStore.readStoreHeader(MVStore.java:605)
at org.h2.mvstore.MVStore.<init>(MVStore.java:355)
at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2893)
at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:154)
at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:99)
at org.h2.engine.Database.getPageStore(Database.java:2463)
at org.h2.engine.Database.open(Database.java:692)
at org.h2.engine.Database.openDatabase(Database.java:270)
at org.h2.engine.Database.<init>(Database.java:264)
at org.h2.engine.Engine.openSession(Engine.java:64)
at org.h2.engine.Engine.openSession(Engine.java:176)
at org.h2.engine.Engine.createSessionAndValidate(Engine.java:154)
at org.h2.engine.Engine.createSession(Engine.java:137)
at org.h2.engine.Engine.createSession(Engine.java:27)
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:349)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:118)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:102)
at org.h2.Driver.connect(Driver.java:72)
at java.sql.DriverManager.getConnection(DriverManager.java:179)
at org.briarproject.bramble.db.H2Database.createConnection(H2Database.java:98)
at org.briarproject.bramble.db.JdbcDatabase.startTransaction(JdbcDatabase.java:457)
at org.briarproject.bramble.db.JdbcDatabase.open(JdbcDatabase.java:314)
at org.briarproject.bramble.db.H2Database.open(H2Database.java:51)
at org.briarproject.bramble.db.DatabaseComponentImpl.open(DatabaseComponentImpl.java:106)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl.startServices(LifecycleManagerImpl.java:134)
at org.briarproject.briar.android.BriarService.lambda$onCreate$0$BriarService(BriarService.java:130)
at org.briarproject.briar.android.BriarService$$Lambda$0.run(Unknown Source)
at java.lang.Thread.run(Thread.java:841)
03-19 16:44:08.624 29515-29545/org.briarproject.briar.android.debug W/BriarService: Startup failed: DB_ERROR
A secondary problem is that StartupFailureActivity shows the message for DATA_TOO_OLD_ERROR instead of DB_ERROR.