[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