From 459540fe7a5b1596519f5082379a9c674ad4bca7 Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Thu, 22 May 2025 14:38:17 +0530 Subject: [PATCH 1/3] Flag for ML running --- mobile/lib/services/machine_learning/ml_service.dart | 3 +++ mobile/lib/services/memories_cache_service.dart | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/mobile/lib/services/machine_learning/ml_service.dart b/mobile/lib/services/machine_learning/ml_service.dart index 0961b50e4c..0b4fa4ad0b 100644 --- a/mobile/lib/services/machine_learning/ml_service.dart +++ b/mobile/lib/services/machine_learning/ml_service.dart @@ -51,6 +51,9 @@ class MLService { bool _isRunningML = false; bool _shouldPauseIndexingAndClustering = false; + bool get isRunningML => + _isRunningML || memoriesCacheService.isUpdatingMemories; + static const _kForceClusteringFaceCount = 8000; late final mlDataDB = MLDataDB.instance; diff --git a/mobile/lib/services/memories_cache_service.dart b/mobile/lib/services/memories_cache_service.dart index ed2bd9d108..d87099d265 100644 --- a/mobile/lib/services/memories_cache_service.dart +++ b/mobile/lib/services/memories_cache_service.dart @@ -41,6 +41,9 @@ class MemoriesCacheService { List? _cachedMemories; bool _shouldUpdate = false; + bool _isUpdatingMemories = false; + bool get isUpdatingMemories => _isUpdatingMemories; + final _memoriesUpdateLock = Lock(); MemoriesCacheService(this._prefs) { @@ -173,6 +176,7 @@ class MemoriesCacheService { _logger.info( "Updating memories cache (shouldUpdate: $_shouldUpdate, forced: $forced)", ); + _isUpdatingMemories = true; try { final EnteWatch? w = kDebugMode ? EnteWatch("MemoriesCacheService") : null; @@ -222,6 +226,8 @@ class MemoriesCacheService { w?.logAndReset('_cacheUpdated method done'); } catch (e, s) { _logger.info("Error updating memories cache", e, s); + } finally { + _isUpdatingMemories = false; } }); } From 7afdfe6ed9e32ae0c4d285df07c66bf9e95b7dfc Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Mon, 26 May 2025 14:16:59 +0530 Subject: [PATCH 2/3] Fix delete all files from person --- mobile/lib/ui/viewer/people/cluster_page.dart | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mobile/lib/ui/viewer/people/cluster_page.dart b/mobile/lib/ui/viewer/people/cluster_page.dart index 2b89097be9..0a7bc4ff2b 100644 --- a/mobile/lib/ui/viewer/people/cluster_page.dart +++ b/mobile/lib/ui/viewer/people/cluster_page.dart @@ -66,8 +66,7 @@ class _ClusterPageState extends State { files = widget.searchResult; _filesUpdatedEvent = Bus.instance.on().listen((event) { - if (event.type == EventType.deletedFromDevice || - event.type == EventType.deletedFromEverywhere || + if (event.type == EventType.deletedFromEverywhere || event.type == EventType.deletedFromRemote || event.type == EventType.hide) { for (var updatedFile in event.updatedFiles) { @@ -133,7 +132,7 @@ class _ClusterPageState extends State { selectedFiles: _selectedFiles, enableFileGrouping: widget.enableGrouping, initialFiles: widget.searchResult, - header: widget.showNamingBanner + header: widget.showNamingBanner && files.isNotEmpty ? PeopleBanner( type: PeopleBannerType.addName, faceWidget: PersonFaceWidget( From 61be57fef5ff824b9ab4a875235d6ffef154f581 Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Mon, 26 May 2025 17:39:04 +0530 Subject: [PATCH 3/3] Log loading of ML models events --- .../machine_learning/ml_indexing_isolate.dart | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mobile/lib/services/machine_learning/ml_indexing_isolate.dart b/mobile/lib/services/machine_learning/ml_indexing_isolate.dart index 52da789eb7..a9553b3fa7 100644 --- a/mobile/lib/services/machine_learning/ml_indexing_isolate.dart +++ b/mobile/lib/services/machine_learning/ml_indexing_isolate.dart @@ -28,6 +28,9 @@ class MLIndexingIsolate extends SuperIsolate { @override bool get shouldAutomaticDispose => true; + int _loadedModelsCount = 0; + int _deloadedModelsCount = 0; + final _initModelLock = Lock(); final _downloadModelLock = Lock(); @@ -144,6 +147,10 @@ class MLIndexingIsolate extends SuperIsolate { _logger.info( 'Loading models. faces: $shouldLoadFaces, clip: $shouldLoadClip', ); + _loadedModelsCount++; + _logger.info( + "Loaded models count: $_loadedModelsCount, deloaded models count: $_deloadedModelsCount", + ); await MLIndexingIsolate.instance ._loadModels(loadFaces: shouldLoadFaces, loadClip: shouldLoadClip); _logger.info('Models loaded'); @@ -249,6 +256,11 @@ class MLIndexingIsolate extends SuperIsolate { } if (modelNames.isEmpty) return; try { + _logger.info("Releasing models $modelNames"); + _deloadedModelsCount++; + _logger.info( + "Loaded models count: $_loadedModelsCount, deloaded models count: $_deloadedModelsCount", + ); await runInIsolate(IsolateOperation.releaseIndexingModels, { "modelNames": modelNames, "modelAddresses": modelAddresses,