Bug 297614

Summary: Maintenance tool disabled after running some tasks
Product: [Applications] digikam Reporter: Andi Clemens <andi.clemens>
Component: Maintenance-EngineAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: caulier.gilles
Priority: NOR    
Version: 2.6.0   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In: 3.3.0
Sentry Crash Report:

Description Andi Clemens 2012-04-06 17:47:27 UTC
When I run the maintenance tool with "scan for new images", "rebuild thumbs (scan)" and "rebuild fingerprints (scan)", the maintenance tool action is disabled. Only restarting digiKam will enable it again.
Comment 1 caulier.gilles 2012-04-06 18:02:15 UTC
You don't have fixed the action menu relevant previously in beta2 or 3 ?

Gilles Caulier
Comment 2 Andi Clemens 2012-04-06 18:03:43 UTC
It seems not all situations where handled by the fix...
Comment 3 caulier.gilles 2012-04-06 18:08:05 UTC
I see some dysfunctions today about scancontroller ProgressItem, when i imported few items from my camera. Can you reproduce ? Code relevant is here :

https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/entry/utilities/maintenance/newitemsfinder.cpp

I think the way to connect and manage with scancontroller is not fine. in fact, i a little bit lost with scancontroller code...

Gilles Caulier
Comment 4 Andi Clemens 2012-04-07 07:32:52 UTC
I could not reproduce it, but maybe I'm doing something wrong / different than you were doing while importing.
Comment 5 Andi Clemens 2012-04-07 07:53:23 UTC
Git commit 8ebd0821427e4ff8dd06dd099d1c11c0f89942da by Andi Clemens.
Committed on 07/04/2012 at 09:52.
Pushed by aclemens into branch 'master'.

Fix for the described tool setting. I will need to re-check other combinations, too.

M  +1    -1    utilities/maintenance/fingerprintsgenerator.cpp

http://commits.kde.org/digikam/8ebd0821427e4ff8dd06dd099d1c11c0f89942da
Comment 6 Andi Clemens 2012-04-07 09:39:27 UTC
Git commit 4abf4766f5e759cd7f9e86cad6087a7bd7c59bf5 by Andi Clemens.
Committed on 07/04/2012 at 11:39.
Pushed by aclemens into branch 'master'.

Do not start a tool immediately in the constructor. This will lead to race conditions.
Also we try to connect signals to tools AFTER they started doing their job. This will not work for tasks that close immediately, e.g. "Scan for new items" on a very small collection. In this case the signal becomes connected AFTER the tool is done, therefore never executing the assigned slot. There are still some race conditions left, I need to check them, but for now the main issue in this bug report should be solved.

M  +2    -1    digikam/album/albumselectiontreeview.cpp
M  +4    -2    digikam/main/digikamapp.cpp
M  +2    -1    digikam/views/leftsidebarwidgets.cpp
M  +2    -1    utilities/cameragui/main/cameraui.cpp
M  +4    -1    utilities/fuzzysearch/findduplicatesview.cpp
M  +2    -1    utilities/fuzzysearch/fuzzysearchview.cpp
M  +0    -4    utilities/maintenance/duplicatesfinder.cpp
M  +0    -5    utilities/maintenance/facedetector.cpp
M  +7    -2    utilities/maintenance/fingerprintsgenerator.cpp
M  +12   -0    utilities/maintenance/maintenancemngr.cpp
M  +5    -0    utilities/maintenance/maintenancetool.cpp
M  +2    -0    utilities/maintenance/maintenancetool.h
M  +0    -6    utilities/maintenance/metadatasynchronizer.cpp
M  +0    -2    utilities/maintenance/newitemsfinder.cpp
M  +0    -10   utilities/maintenance/thumbsgenerator.cpp
M  +2    -1    utilities/setup/setupcollectionview.cpp

http://commits.kde.org/digikam/4abf4766f5e759cd7f9e86cad6087a7bd7c59bf5
Comment 7 caulier.gilles 2013-07-28 08:24:49 UTC
Git commit 62125c25374b0caf2d6a3812d1d34812ede8a6fd by Gilles Caulier.
Committed on 28/07/2013 at 08:00.
Pushed by cgilles into branch 'master'.

Maintenance Manager : complete rewrite of maintenance tools handling.
Instead to use signal provided by tool to know if job is done, use progress manager signal.
Store instance of each tools in d private container instead stack to provide a better check of stage under progress.
Patch ScanController to provide a better feedback to NewItemsFinder, in all scan mode. Add a new method to only call core code to perform
scan WITHOUT to show a progress dialog. In fact progress manager as already all in place to give user feedback about progress...
Patch FaceManagement maintenance tool to indicate that face are detected and recognized.
Move status progress bar with ProgresManager code, as this one is fully relevant.

Marcel, I would to drop fully DProgressDialog code, which is only used now to ScanController, with all first run step to collect all information from image
managed by database. I remember that in 2.x serie, you have patched digiKam to only perform first run scan in background when albumgui is show. I'm right ?
At now, this feature sound fonctionnal some time, but it's not fully reproducible.
If you take a look how Google Picasa work, you will see that main DB referencing run in background when main GUI is displayed. A progress indication is show in statusbar.
User can start to work with collected items in real time and don't need to wait a long time that all referencing is done through a small progress dialog...
Look this entry for ex : 320359.
What do you think about?
Related: bug 295256, bug 320121, bug 295255, bug 306282

CCMAIL: marcel.wiesweg@gmx.de

FIXED-IN: 3.3.0

M  +1    -1    CMakeLists.txt
M  +19   -7    digikam/database/scancontroller.cpp
M  +7    -0    digikam/database/scancontroller.h
M  +1    -1    libs/progressmanager/progressmanager.cpp
R  +1    -0    libs/progressmanager/statusprogressbar.cpp [from: libs/widgets/common/statusprogressbar.cpp - 098% similarity]
R  +1    -0    libs/progressmanager/statusprogressbar.h [from: libs/widgets/common/statusprogressbar.h - 096% similarity]
M  +2    -3    utilities/maintenance/duplicatesfinder.cpp
M  +1    -1    utilities/maintenance/facedetector.cpp
M  +1    -2    utilities/maintenance/fingerprintsgenerator.cpp
M  +1    -1    utilities/maintenance/maintenancedlg.cpp
M  +117  -77   utilities/maintenance/maintenancemngr.cpp
M  +14   -8    utilities/maintenance/maintenancemngr.h
M  +3    -1    utilities/maintenance/maintenancetool.cpp
M  +24   -20   utilities/maintenance/newitemsfinder.cpp
M  +0    -1    utilities/maintenance/newitemsfinder.h
M  +1    -2    utilities/maintenance/thumbsgenerator.cpp

http://commits.kde.org/digikam/62125c25374b0caf2d6a3812d1d34812ede8a6fd