[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [discover/Plasma/5.13] libdiscover/backends/PackageKitBackend: Abort transaction on PackageKit error
From:       Antonio Rojas <null () kde ! org>
Date:       2018-05-26 7:14:17
Message-ID: E1fMTP7-0001lz-4y () code ! kde ! org
[Download RAW message or body]

Git commit ee8e49422118895f0c75b5ea67308ac15d69a476 by Antonio Rojas.
Committed on 26/05/2018 at 07:13.
Pushed by arojas into branch 'Plasma/5.13'.

Abort transaction on PackageKit errors

If PackageKit throws an error, abort the transaction instead of finishing it anyway (potentially breaking \
the user's installation). This is far from ideal, but prevents Discover from performing destructive \
operations while the PackageKit issues are fixed

BUG: 394327
Differential Revision: https://phabricator.kde.org/D13119

M  +6    -2    libdiscover/backends/PackageKitBackend/PKTransaction.cpp

https://commits.kde.org/discover/ee8e49422118895f0c75b5ea67308ac15d69a476

diff --git a/libdiscover/backends/PackageKitBackend/PKTransaction.cpp \
b/libdiscover/backends/PackageKitBackend/PKTransaction.cpp index 5ceefad6..1431b039 100644
--- a/libdiscover/backends/PackageKitBackend/PKTransaction.cpp
+++ b/libdiscover/backends/PackageKitBackend/PKTransaction.cpp
@@ -137,6 +137,7 @@ void PKTransaction::cleanup(PackageKit::Transaction::Exit exit, uint runtime)
 {
     Q_UNUSED(runtime)
     const bool cancel = !m_proceedFunctions.isEmpty() || exit == PackageKit::Transaction::ExitCancelled;
+    const bool failed = exit == PackageKit::Transaction::ExitFailed;
     const bool simulate = m_trans->transactionFlags() & \
PackageKit::Transaction::TransactionFlagSimulate;  
     disconnect(m_trans, nullptr, this, nullptr);
@@ -144,7 +145,7 @@ void PKTransaction::cleanup(PackageKit::Transaction::Exit exit, uint runtime)
 
     const auto backend = qobject_cast<PackageKitBackend*>(resource()->backend());
 
-    if (!cancel && simulate) {
+    if (!cancel && !failed && simulate) {
         auto packagesToRemove = m_newPackageStates.value(PackageKit::Transaction::InfoRemoving);
         QMutableListIterator<QString> i(packagesToRemove);
         QSet<AbstractResource*> removedResources;
@@ -175,7 +176,10 @@ void PKTransaction::cleanup(PackageKit::Transaction::Exit exit, uint runtime)
     }
 
     this->submitResolve();
-    setStatus(Transaction::CancelledStatus);
+    if (failed)
+        setStatus(Transaction::DoneWithErrorStatus);
+    else
+        setStatus(Transaction::CancelledStatus);
 }
 
 void PKTransaction::processProceedFunction()


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic