Hello community, here is the log from the commit of package akonadi-server for openSUSE:Factory checked in at 2017-11-16 14:18:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/akonadi-server (Old) and /work/SRC/openSUSE:Factory/.akonadi-server.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "akonadi-server" Thu Nov 16 14:18:33 2017 rev:36 rq:540801 version:17.08.3 Changes: -------- --- /work/SRC/openSUSE:Factory/akonadi-server/akonadi-server.changes 2017-10-23 16:26:17.412516441 +0200 +++ /work/SRC/openSUSE:Factory/.akonadi-server.new/akonadi-server.changes 2017-11-16 14:18:33.943475625 +0100 @@ -1,0 +2,11 @@ +Thu Nov 09 23:10:40 CET 2017 - [email protected] + +- Update to 17.08.3 + * New bugfix release + * For more details please see: + * https://www.kde.org/announcements/announce-applications-17.08.3.php +- Changes since 17.08.2: + * akonaditest: port "app.disableSessionManagement" to Qt5 + * ItemSync: speed up by not using takeFirst(). + +------------------------------------------------------------------- Old: ---- akonadi-17.08.2.tar.xz New: ---- akonadi-17.08.3.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ akonadi-server.spec ++++++ --- /var/tmp/diff_new_pack.WxSOaT/_old 2017-11-16 14:18:34.595452019 +0100 +++ /var/tmp/diff_new_pack.WxSOaT/_new 2017-11-16 14:18:34.599451874 +0100 @@ -20,7 +20,7 @@ %define rname akonadi Name: akonadi-server -Version: 17.08.2 +Version: 17.08.3 Release: 0 %define kf5_version 5.26.0 # Latest stable Applications (e.g. 17.08 in KA, but 17.11.80 in KUA) ++++++ akonadi-17.08.2.tar.xz -> akonadi-17.08.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-17.08.2/CMakeLists.txt new/akonadi-17.08.3/CMakeLists.txt --- old/akonadi-17.08.2/CMakeLists.txt 2017-10-10 02:15:20.000000000 +0200 +++ new/akonadi-17.08.3/CMakeLists.txt 2017-11-07 02:24:58.000000000 +0100 @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.0) -set(PIM_VERSION "5.6.2") +set(PIM_VERSION "5.6.3") project(Akonadi VERSION ${PIM_VERSION}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-17.08.2/autotests/libs/itemsynctest.cpp new/akonadi-17.08.3/autotests/libs/itemsynctest.cpp --- old/akonadi-17.08.2/autotests/libs/itemsynctest.cpp 2017-10-04 14:21:04.000000000 +0200 +++ new/akonadi-17.08.3/autotests/libs/itemsynctest.cpp 2017-10-29 08:18:48.000000000 +0100 @@ -24,6 +24,7 @@ #include <control.h> #include <collection.h> #include <item.h> +#include <itemdeletejob.h> #include <itemfetchjob.h> #include <itemfetchscope.h> #include <itemsync.h> @@ -49,7 +50,7 @@ private: Item::List fetchItems(const Collection &col) { - qDebug() << col.remoteId(); + qDebug() << "fetching items from collection" << col.remoteId() << col.name(); ItemFetchJob *fetch = new ItemFetchJob(col, this); fetch->fetchScope().fetchFullPayload(); fetch->fetchScope().fetchAllAttributes(); @@ -575,6 +576,62 @@ syncer->deliveryDone(); QTRY_COMPARE(spy.count(), 1); } + + void testFullSyncManyItems() + { + const Collection col = Collection(collectionIdFromPath(QStringLiteral("res2/foo2"))); + QVERIFY(col.isValid()); + + Akonadi::Monitor monitor; + monitor.setCollectionMonitored(col); + QSignalSpy addedSpy(&monitor, SIGNAL(itemAdded(Akonadi::Item,Akonadi::Collection))); + QVERIFY(addedSpy.isValid()); + + const int itemCount = 1000; + for (int i = 0; i < itemCount; ++i) { + Item item(QStringLiteral("application/octet-stream")); + item.setRemoteId(QStringLiteral("rid") + QString::number(i)); + item.setGid(QStringLiteral("gid") + QString::number(i)); + item.setPayload<QByteArray>("payload1"); + ItemCreateJob *job = new ItemCreateJob(item, col); + AKVERIFYEXEC(job); + } + + QTRY_COMPARE(addedSpy.count(), itemCount); + addedSpy.clear(); + + const Item::List origItems = fetchItems(col); + + //Since the item sync affects the knut resource we ensure we actually managed to load all items + //This needs to be adjusted should the testdataset change + QCOMPARE(origItems.size(), itemCount); + + QSignalSpy deletedSpy(&monitor, SIGNAL(itemRemoved(Akonadi::Item))); + QVERIFY(deletedSpy.isValid()); + QSignalSpy changedSpy(&monitor, SIGNAL(itemChanged(Akonadi::Item,QSet<QByteArray>))); + QVERIFY(changedSpy.isValid()); + + QBENCHMARK { + ItemSync *syncer = new ItemSync(col); + syncer->setTransactionMode(ItemSync::SingleTransaction); + QSignalSpy transactionSpy(syncer, SIGNAL(transactionCommitted())); + QVERIFY(transactionSpy.isValid()); + syncer->setFullSyncItems(origItems); + AKVERIFYEXEC(syncer); + QCOMPARE(transactionSpy.count(), 1); + } + + const Item::List resultItems = fetchItems(col); + QCOMPARE(resultItems.count(), origItems.count()); + QTest::qWait(100); + QCOMPARE(deletedSpy.count(), 0); + QCOMPARE(addedSpy.count(), 0); + QCOMPARE(changedSpy.count(), 0); + + // delete all items; QBENCHMARK leads to the whole method being called more than once + ItemDeleteJob *job = new ItemDeleteJob(resultItems); + AKVERIFYEXEC(job); + } }; QTEST_AKONADIMAIN(ItemsyncTest) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-17.08.2/autotests/libs/testrunner/main.cpp new/akonadi-17.08.3/autotests/libs/testrunner/main.cpp --- old/akonadi-17.08.2/autotests/libs/testrunner/main.cpp 2017-10-04 14:21:04.000000000 +0200 +++ new/akonadi-17.08.3/autotests/libs/testrunner/main.cpp 2017-10-29 08:18:48.000000000 +0100 @@ -30,6 +30,7 @@ #include <QApplication> #include <QCommandLineParser> #include <QCommandLineOption> +#include <QSessionManager> static SetupTest *setup = nullptr; static TestRunner *runner = nullptr; @@ -78,7 +79,11 @@ parser.process(app); aboutdata.processCommandLine(&parser); - //QT5 app.disableSessionManagement(); + auto disableSessionManagement = [](QSessionManager &sm) { + sm.setRestartHint(QSessionManager::RestartNever); + }; + QObject::connect(qApp, &QGuiApplication::commitDataRequest, disableSessionManagement); + QObject::connect(qApp, &QGuiApplication::saveStateRequest, disableSessionManagement); if (parser.isSet(QStringLiteral("config"))) { Config::instance(parser.value(QStringLiteral("config"))); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-17.08.2/po/gl/libakonadi5.po new/akonadi-17.08.3/po/gl/libakonadi5.po --- old/akonadi-17.08.2/po/gl/libakonadi5.po 2017-10-10 02:15:19.000000000 +0200 +++ new/akonadi-17.08.3/po/gl/libakonadi5.po 2017-11-07 02:24:56.000000000 +0100 @@ -15,7 +15,7 @@ "Project-Id-Version: libakonadi\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2017-09-23 05:36+0200\n" -"PO-Revision-Date: 2017-10-04 21:00+0100\n" +"PO-Revision-Date: 2017-10-22 17:20+0100\n" "Last-Translator: Adrián Chaves (Gallaecio) <[email protected]>\n" "Language-Team: Galician <[email protected]>\n" "Language: gl\n" @@ -1484,7 +1484,7 @@ "the Akonadi server installed." msgstr "" "O programa «akonadictl» debe estar accesíbel mediante $PATH. Verifique que " -"ten instalado o servidor Akonadi." +"ten o servidor Akonadi instalado." #: widgets/selftestdialog.cpp:405 #, kde-format @@ -1685,7 +1685,7 @@ #: widgets/selftestdialog.cpp:508 #, kde-format msgid "No previous Akonadi server error log found." -msgstr "Non se atopou ningún rexistro anterior de erros do servidor Akonadi" +msgstr "Non se atopou ningún rexistro anterior de erros do servidor Akonadi." #: widgets/selftestdialog.cpp:509 #, kde-format diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-17.08.2/po/zh_CN/akonadi_knut_resource.po new/akonadi-17.08.3/po/zh_CN/akonadi_knut_resource.po --- old/akonadi-17.08.2/po/zh_CN/akonadi_knut_resource.po 2017-10-10 02:15:20.000000000 +0200 +++ new/akonadi-17.08.3/po/zh_CN/akonadi_knut_resource.po 2017-11-07 02:24:58.000000000 +0100 @@ -8,7 +8,7 @@ "Project-Id-Version: kdeorg\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2016-11-19 20:17+0100\n" -"PO-Revision-Date: 2017-09-30 17:48-0400\n" +"PO-Revision-Date: 2017-10-19 10:50-0400\n" "Last-Translator: guoyunhebrave <[email protected]>\n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-17.08.2/po/zh_CN/libakonadi5.po new/akonadi-17.08.3/po/zh_CN/libakonadi5.po --- old/akonadi-17.08.2/po/zh_CN/libakonadi5.po 2017-10-10 02:15:20.000000000 +0200 +++ new/akonadi-17.08.3/po/zh_CN/libakonadi5.po 2017-11-07 02:24:58.000000000 +0100 @@ -8,7 +8,7 @@ "Project-Id-Version: kdeorg\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2017-09-23 05:36+0200\n" -"PO-Revision-Date: 2017-09-30 17:48-0400\n" +"PO-Revision-Date: 2017-10-19 10:50-0400\n" "Last-Translator: guoyunhebrave <[email protected]>\n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-17.08.2/src/core/itemsync.cpp new/akonadi-17.08.3/src/core/itemsync.cpp --- old/akonadi-17.08.2/src/core/itemsync.cpp 2017-10-04 14:21:04.000000000 +0200 +++ new/akonadi-17.08.3/src/core/itemsync.cpp 2017-10-29 08:18:48.000000000 +0100 @@ -344,9 +344,10 @@ if (mRemoteItemQueue.size() >= mBatchSize || mDeliveryDone) { //we have a new batch to process const int num = qMin(mBatchSize, mRemoteItemQueue.size()); - for (int i = 0; i < num; i++) { - mCurrentBatchRemoteItems << mRemoteItemQueue.takeFirst(); - } + mCurrentBatchRemoteItems.reserve(mBatchSize); + std::move(mRemoteItemQueue.begin(), mRemoteItemQueue.begin() + num, std::back_inserter(mCurrentBatchRemoteItems)); + mRemoteItemQueue.erase(mRemoteItemQueue.begin(), mRemoteItemQueue.begin() + num); + mCurrentBatchRemovedRemoteItems += mRemovedRemoteItemQueue; mRemovedRemoteItemQueue.clear(); } else {
