Version 2.5.1
Avoid checking the database parent directory in FrameworkSQLiteHelper if the database is already open. ( 5de86b8) Use an isOpenInternal check when checking if the database is already open. ( e91fb35) Better handling of the reentrant case in acquireTransactionThread() of Room is now available. ( 219f98b). During a suspending transaction, Room uses a thread from the transaction executor, starts an event loop in it and dispatches suspending database operations to it so they are all encapsulated within the transaction coroutine. It is usually expected that the transaction thread is different from the one starting the transaction, but in some cases they are the same. To handle such reentrant cases the withTransaction() has been refactored to no longer rely on a control job and instead it will execute the suspending transaction block from within the runBlocking in the transaction thread.