mirror of
https://github.com/immich-app/immich.git
synced 2026-07-05 20:57:40 +00:00
chore: do not optimize on cleanup (#29118)
This commit is contained in:
parent
df4a708aed
commit
0f49bcbd27
2 changed files with 24 additions and 1 deletions
|
|
@ -104,6 +104,7 @@ class BackgroundWorkerBgService extends BackgroundWorkerFlutterApi {
|
||||||
Future<void> onAndroidUpload(int? maxMinutes) async {
|
Future<void> onAndroidUpload(int? maxMinutes) async {
|
||||||
final hashTimeout = Duration(minutes: _isBackupEnabled ? 3 : 6);
|
final hashTimeout = Duration(minutes: _isBackupEnabled ? 3 : 6);
|
||||||
final backupTimeout = maxMinutes != null ? Duration(minutes: maxMinutes - 1) : null;
|
final backupTimeout = maxMinutes != null ? Duration(minutes: maxMinutes - 1) : null;
|
||||||
|
await _optimizeDB();
|
||||||
return _backgroundLoop(
|
return _backgroundLoop(
|
||||||
hashTimeout: hashTimeout,
|
hashTimeout: hashTimeout,
|
||||||
backupTimeout: backupTimeout,
|
backupTimeout: backupTimeout,
|
||||||
|
|
@ -123,6 +124,11 @@ class BackgroundWorkerBgService extends BackgroundWorkerFlutterApi {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Only for Background Processing tasks
|
||||||
|
if (maxSeconds == null) {
|
||||||
|
await _optimizeDB();
|
||||||
|
}
|
||||||
|
|
||||||
// Run sync local, sync remote, hash and backup concurrently so the bg
|
// Run sync local, sync remote, hash and backup concurrently so the bg
|
||||||
// refresh task (20s budget) can make progress on all four instead of
|
// refresh task (20s budget) can make progress on all four instead of
|
||||||
// racing them sequentially. Phases are independent at the data layer:
|
// racing them sequentially. Phases are independent at the data layer:
|
||||||
|
|
@ -193,6 +199,14 @@ class BackgroundWorkerBgService extends BackgroundWorkerFlutterApi {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> _optimizeDB() async {
|
||||||
|
try {
|
||||||
|
await (_drift.optimize(allTables: true), _driftLogger.optimize()).wait;
|
||||||
|
} catch (error, stack) {
|
||||||
|
dPrint(() => "Error during background worker optimize: $error, $stack");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> _cleanup() async {
|
Future<void> _cleanup() async {
|
||||||
await runZonedGuarded(_handleCleanup, (error, stack) {
|
await runZonedGuarded(_handleCleanup, (error, stack) {
|
||||||
dPrint(() => "Error during background worker cleanup: $error, $stack");
|
dPrint(() => "Error during background worker cleanup: $error, $stack");
|
||||||
|
|
@ -221,7 +235,7 @@ class BackgroundWorkerBgService extends BackgroundWorkerFlutterApi {
|
||||||
if (nativeSyncApi != null) nativeSyncApi.cancelHashing(),
|
if (nativeSyncApi != null) nativeSyncApi.cancelHashing(),
|
||||||
]);
|
]);
|
||||||
await workerManagerPatch.dispose().catchError((_) async {});
|
await workerManagerPatch.dispose().catchError((_) async {});
|
||||||
await Future.wait([LogService.I.dispose(), Store.dispose(), _drift.optimize(allTables: true)]);
|
await Future.wait([LogService.I.dispose(), Store.dispose()]);
|
||||||
await _drift.close();
|
await _drift.close();
|
||||||
await _driftLogger.close();
|
await _driftLogger.close();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import 'package:drift/drift.dart';
|
||||||
import 'package:drift_sqlite_async/drift_sqlite_async.dart';
|
import 'package:drift_sqlite_async/drift_sqlite_async.dart';
|
||||||
import 'package:immich_mobile/infrastructure/entities/log.entity.dart';
|
import 'package:immich_mobile/infrastructure/entities/log.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/repositories/logger_db.repository.drift.dart';
|
import 'package:immich_mobile/infrastructure/repositories/logger_db.repository.drift.dart';
|
||||||
|
import 'package:immich_mobile/utils/debug_print.dart';
|
||||||
import 'package:sqlite_async/sqlite_async.dart';
|
import 'package:sqlite_async/sqlite_async.dart';
|
||||||
|
|
||||||
@DriftDatabase(tables: [LogMessageEntity])
|
@DriftDatabase(tables: [LogMessageEntity])
|
||||||
|
|
@ -13,6 +14,14 @@ class DriftLogger extends $DriftLogger {
|
||||||
@override
|
@override
|
||||||
int get schemaVersion => 1;
|
int get schemaVersion => 1;
|
||||||
|
|
||||||
|
Future<void> optimize() async {
|
||||||
|
try {
|
||||||
|
await customStatement('PRAGMA optimize=0x10002');
|
||||||
|
} catch (error) {
|
||||||
|
dPrint(() => 'Failed to optimize logger database: $error');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
MigrationStrategy get migration => MigrationStrategy(
|
MigrationStrategy get migration => MigrationStrategy(
|
||||||
beforeOpen: (details) async {
|
beforeOpen: (details) async {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue