summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorArttu Tarkiainen <arttu.tarkiainen@qt.io>2022-03-01 17:54:22 +0200
committerArttu Tarkiainen <arttu.tarkiainen@qt.io>2022-04-21 17:24:31 +0300
commitd14b1b34bafc7cc82383e8032f3adb626747849b (patch)
tree9e6568c3bc3f2eab072055c711264677dbe869cd /doc
parentbda347d641ba6fdbec5f201bb89e1a8ac88b4c5b (diff)
Add support for parallel extraction of component archives
Introduce ConcurrentOperationRunner class used for running installer operations concurrently in the global thread pool. Add execution groups for operations; Unpack operations are run concurrently for all components requesting installation, operations belonging to Install group are run sequentially for sorted components one at a time as before. From the default registered operations the Extract op is moved to Unpack group. Move the previously on-the-fly backup steps of Extract operation to the ExtractArchiveOperation::backup(), so that backups are done before any archives are extracted, and that we know if any of the archives requires administrator privileges to unpack. Reparent QInstaller::Error to QException to support throwing and catching exceptions across thread boundaries. Use RAII for the server-side objects of the classes supporting the remote client-server protocol of installer framework. The concurrent extraction revealed that it was still possible that the local socket was disconnected and thus the RemoteServer- Connection thread finished before receiving and processing the final "Destroy" command packet, leaking the dynamically allocated objects. Task-number: QTIFW-2566 Change-Id: Ib8c2928b9405b7b3465c731018df73acb51e949f Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Katja Marttila <katja.marttila@qt.io>
Diffstat (limited to 'doc')
-rw-r--r--doc/includes/IFWDoc2
-rw-r--r--doc/operations.qdoc11
-rw-r--r--doc/scripting.qdoc1
3 files changed, 14 insertions, 0 deletions
diff --git a/doc/includes/IFWDoc b/doc/includes/IFWDoc
index 918d6df52..936a6812e 100644
--- a/doc/includes/IFWDoc
+++ b/doc/includes/IFWDoc
@@ -15,6 +15,7 @@
#include "componentchecker.h"
#include "component.h"
#include "componentmodel.h"
+#include "concurrentoperationrunner.h"
#include "constants.h"
#include "consumeoutputoperation.h"
#include "copydirectoryoperation.h"
@@ -30,6 +31,7 @@
#include "errors.h"
#include "extractarchiveoperation.h"
#include "fakestopprocessforupdateoperation.h"
+#include "fileguard.h"
#include "fileio.h"
#include "fileutils.h"
#include "globalsettingsoperation.h"
diff --git a/doc/operations.qdoc b/doc/operations.qdoc
index 68662d289..c61e2af0c 100644
--- a/doc/operations.qdoc
+++ b/doc/operations.qdoc
@@ -300,4 +300,15 @@
devtool operation <binary> DO,Copy,<source>,<target>
\endcode
+ \section1 Execution Groups
+
+ The operations owned by a component belong to either of two groups: \e Unpack or \e Install.
+ The \c Extract operations are performed as part of the \e Unpack group before all other
+ operations and executed concurrently between all components that are going
+ to be installed. The rest of the operations are performed in the \e Install group and
+ executed sequentially for each component at a time.
+
+ Custom operations can define their execution group by calling the \c setGroup() method
+ in their constructor. For more information about custom operations, see
+ \l{Registering Custom Operations}.
*/
diff --git a/doc/scripting.qdoc b/doc/scripting.qdoc
index d196bf8fb..bb547a0d6 100644
--- a/doc/scripting.qdoc
+++ b/doc/scripting.qdoc
@@ -147,6 +147,7 @@
CustomOperation()
{
setName( "CustomOperation" );
+ setGroup( Install );
}
void backup()