EN: Fix oversize database migration

This commit is contained in:
Marvin W 2020-10-14 11:28:28 +02:00
parent e20a6c3a3c
commit 0eb75ba363
No known key found for this signature in database
GPG Key ID: 072E9235DB996F2A

View File

@ -735,13 +735,13 @@ class ExposureDatabase private constructor(private val context: Context) : SQLit
} }
@Synchronized @Synchronized
private fun clearInstance(database: ExposureDatabase) { private fun clearInstance(database: ExposureDatabase, errorOnNull: Boolean = true) {
if (database == instance) { if (database == instance) {
if (deferredRefCount == 0) { if (deferredRefCount == 0) {
deferredInstance = null deferredInstance = null
instance = null instance = null
} }
} else { } else if (errorOnNull || instance != null) {
throw IllegalStateException("Tried to remove database instance ${database.hashCode()}, but ${instance?.hashCode()} is primary", database.createdAt) throw IllegalStateException("Tried to remove database instance ${database.hashCode()}, but ${instance?.hashCode()} is primary", database.createdAt)
} }
} }
@ -817,11 +817,12 @@ class ExposureDatabase private constructor(private val context: Context) : SQLit
val database = ExposureDatabase(context.applicationContext) val database = ExposureDatabase(context.applicationContext)
try { try {
Log.d(TAG, "Created instance ${database.hashCode()} of database for ${context.javaClass.simpleName}") Log.d(TAG, "Created instance ${database.hashCode()} of database for ${context.javaClass.simpleName}")
finishDatabaseMigration(database, dbMigrateFile, dbMigrateWalFile)
completeInstance(database) completeInstance(database)
finishDatabaseMigration(database, dbMigrateFile, dbMigrateWalFile)
newInstance.complete(database) newInstance.complete(database)
return database return database
} catch (e: Exception) { } catch (e: Exception) {
clearInstance(database, false)
database.close() database.close()
throw e throw e
} }