Batch database operations during backup restore for improved performance (#3267)
* perf(backup): batch database operations during restore Reduce overhead by chunking manga and repo restoration into transactions of 100 entries. Categories now restored in a single transaction. Optimized DatabaseHandler to reuse existing transaction contexts instead of creating redundant nested ones. Changed TransactionElement to internal to allow AndroidDatabaseHandler to check transaction state from the same package. * fix(backup): make restore progress and errors thread-safe Use AtomicInteger for progress and synchronizedList for errors to prevent race conditions during concurrent restoration coroutines. * perf(backup): update progress notification only once per chunk Reduce UI/IPC overhead by moving notification updates out of the inner loop, triggering them only after each 100-item transaction chunk. Reduced on my emulator from 46 seconds to 27 * fix: remove invalid awaitAsOne() call on insert() return type categoriesQueries.insert() returns Long (the inserted row ID), not an ExecutableQuery<T>, so awaitAsOne() is not applicable. * fix(feedback): Use `CopyOnWriteArrayList` and kotlin `AtomicInt`, add a changelog entry Note that using kotlin `AtomicInt` instead of java `AtomicInteger` requires opting into an experimental API. --------- Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
This commit is contained in:
@@ -20,6 +20,9 @@ The format is a modified version of [Keep a Changelog](https://keepachangelog.co
|
||||
- Change the term "Obsolete" to "Orphaned" for extensions ([@AntsyLich](https://github.com/AntsyLich)) ([#3383](https://github.com/mihonapp/mihon/pull/3383))
|
||||
- Remove text limit of manga notes ([@AntsyLich](https://github.com/AntsyLich)) ([#3410](https://github.com/mihonapp/mihon/pull/3410))
|
||||
|
||||
### Improved
|
||||
- Batch database operations during backup restore for improved performance ([@Lolle2000la](https://github.com/Lolle2000la)) ([#3267](https://github.com/mihonapp/mihon/pull/3267))
|
||||
|
||||
### Fixed
|
||||
- Add missing `outlineVariant` color to Nord theme ([@CompileConnected](https://github.com/CompileConnected)) ([#3184](https://github.com/mihonapp/mihon/pull/3184))
|
||||
- Continue reading button missing when unread filter is off ([@AntsyLich](https://github.com/AntsyLich)) ([#3382](https://github.com/mihonapp/mihon/pull/3382))
|
||||
|
||||
Reference in New Issue
Block a user