Миграция номера, попытка повторного открытия уже закрытого объекта: SQLiteDatabase

У меня простая база данных Singleton и miration_1_2, поэтому это простой, вероятный пример. Вы можете увидеть класс базы данных

@Database(entities = [Feed::class, NewsWidget::class, NewsWidgetFeed::class], version = 2) abstract class Database : RoomDatabase() { abstract fun feedDao(): FeedDao abstract fun newsWidgetDao(): NewsWidgetDao abstract fun newsWidgetFeedDao(): NewsWidgetFeedDao companion object { @Volatile private var INSTANCE: com.example.Database? = null fun getInstance(context: Context): com.example.Database = INSTANCE ?: synchronized(this) { INSTANCE ?: buildDatabase(context).also { INSTANCE = it } } private val IO_EXECUTOR = Executors.newSingleThreadExecutor() /** * Utility method to run blocks on a dedicated background thread, used for io/database work. */ fun ioThread(f: () -> Unit) { IO_EXECUTOR.execute(f) } private fun buildDatabase(context: Context) = Room.databaseBuilder(context.applicationContext, com.example.Database::class.java, "settings.db") .addMigrations(MIGRATION_1_2) .fallbackToDestructiveMigration() .addCallback(object : RoomDatabase.Callback() { override fun onOpen(db: SupportSQLiteDatabase) { LogManager.LogEA(db.version) super.onOpen(db) } override fun onCreate(db: SupportSQLiteDatabase) { super.onCreate(db) ioThread { getInstance(context).feedDao().insert(*INIT_FEED_TABLE) } } }) .build() val MIGRATION_1_2: Migration = object: Migration(1, 2) { override fun migrate(database: SupportSQLiteDatabase) { database.execSQL("ALTER TABLE NewsWidget ADD COLUMN interval_anim INTEGER DEFAULT 6000") } } val INIT_FEED_TABLE = arrayOf( Feed("https://geektimes.ru/rss/interesting/"), Feed("http://k.img.com.ua/rss/ru/companies.xml")) } 

}

когда я звоню

  Database.getInstance(context) Database.getInstance(context) 

или

 Database.getInstance(this).feedDao().getAllFeed() .flatMap({ url -> Database.getInstance(this).feedDao().getItem(url)}) 

Я вижу сообщение об ошибке java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase Я знаю, что проблема заключается в вызове onMigrate дважды. Как я могу добавить обратный вызов onUpgrade? Как исправить? Спасибо за поддержку.