Hello community, here is the log from the commit of package akonadi-runtime for openSUSE:Factory checked in at 2013-07-22 16:33:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/akonadi-runtime (Old) and /work/SRC/openSUSE:Factory/.akonadi-runtime.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "akonadi-runtime" Changes: -------- --- /work/SRC/openSUSE:Factory/akonadi-runtime/akonadi-runtime.changes 2013-06-14 15:42:48.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.akonadi-runtime.new/akonadi-runtime.changes 2013-07-22 16:33:15.000000000 +0200 @@ -1,0 +2,7 @@ +Tue Jul 9 21:52:48 UTC 2013 - [email protected] + +- Update to 1.10.0 + * Memory optimizations + * Fix a runtime error on Windows + +------------------------------------------------------------------- Old: ---- akonadi-1.9.80.tar.bz2 New: ---- akonadi-1.10.0.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ akonadi-runtime.spec ++++++ --- /var/tmp/diff_new_pack.jnM62B/_old 2013-07-22 16:33:16.000000000 +0200 +++ /var/tmp/diff_new_pack.jnM62B/_new 2013-07-22 16:33:16.000000000 +0200 @@ -17,7 +17,7 @@ Name: akonadi-runtime -Version: 1.9.80 +Version: 1.10.0 Release: 0 %define rversion %{version} Summary: PIM Storage Service ++++++ akonadi-1.9.80.tar.bz2 -> akonadi-1.10.0.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-1.9.80/CMakeLists.txt new/akonadi-1.10.0/CMakeLists.txt --- old/akonadi-1.9.80/CMakeLists.txt 2013-06-10 12:16:19.000000000 +0200 +++ new/akonadi-1.10.0/CMakeLists.txt 2013-07-09 18:56:12.000000000 +0200 @@ -72,8 +72,8 @@ ############### The Akonadi version (used in AkonadiConfig.cmake) ############### set(AKONADI_VERSION_MAJOR "1") -set(AKONADI_VERSION_MINOR "9") -set(AKONADI_VERSION_PATCH "80") +set(AKONADI_VERSION_MINOR "10") +set(AKONADI_VERSION_PATCH "0") set(AKONADI_VERSION "${AKONADI_VERSION_MAJOR}.${AKONADI_VERSION_MINOR}.${AKONADI_VERSION_PATCH}") set(AKONADI_VERSION_STRING "${AKONADI_VERSION}") @@ -402,7 +402,10 @@ include(CPack) # needs to happen after the above variables are set! -feature_summary(WHAT ALL) +feature_summary(WHAT ALL + INCLUDE_QUIET_PACKAGES + FATAL_ON_MISSING_REQUIRED_PACKAGES + ) # Install the file with the exported targets install(EXPORT akonadiLibraryTargets diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-1.9.80/Mainpage.dox new/akonadi-1.10.0/Mainpage.dox --- old/akonadi-1.9.80/Mainpage.dox 2013-06-10 12:16:19.000000000 +0200 +++ new/akonadi-1.10.0/Mainpage.dox 2013-07-09 18:56:12.000000000 +0200 @@ -315,6 +315,6 @@ // DOXYGEN_EXCLUDE = sqlplugin server/control server/akonadictl server/tests // DOXYGEN_PROJECTNAME=Akonadi -// DOXYGEN_PROJECTVERSION=1.9.80 +// DOXYGEN_PROJECTVERSION=1.10.0 // vim:ts=4:sw=4:expandtab:filetype=doxygen diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-1.9.80/NEWS new/akonadi-1.10.0/NEWS --- old/akonadi-1.9.80/NEWS 2013-06-10 12:16:19.000000000 +0200 +++ new/akonadi-1.10.0/NEWS 2013-07-09 18:56:12.000000000 +0200 @@ -1,3 +1,8 @@ +1.10.0 09-July-2013 +---------------------------------------------- +- Memory optimizations +- Fix a runtime error on Windows + 1.9.80 10-June-2013 ---------------------------------------------- - Update item access time less often. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-1.9.80/agentserver/agentpluginloader.cpp new/akonadi-1.10.0/agentserver/agentpluginloader.cpp --- old/akonadi-1.9.80/agentserver/agentpluginloader.cpp 2013-06-10 12:16:19.000000000 +0200 +++ new/akonadi-1.10.0/agentserver/agentpluginloader.cpp 2013-07-09 18:56:12.000000000 +0200 @@ -43,6 +43,7 @@ QPluginLoader *loader = new QPluginLoader( pluginFile ); if ( !loader->load() ) { akError() << Q_FUNC_INFO << "Failed to load agent: " << loader->errorString(); + delete loader; return 0; } m_pluginLoaders.insert( pluginFile, loader ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-1.9.80/server/src/storage/dbconfigmysql.cpp new/akonadi-1.10.0/server/src/storage/dbconfigmysql.cpp --- old/akonadi-1.9.80/server/src/storage/dbconfigmysql.cpp 2013-06-10 12:16:19.000000000 +0200 +++ new/akonadi-1.10.0/server/src/storage/dbconfigmysql.cpp 2013-07-09 18:56:12.000000000 +0200 @@ -57,7 +57,10 @@ QString defaultServerPath; QString defaultCleanShutdownCommand; - const QString socketDirectory = Utils::preferredSocketDirectory( AkStandardDirs::saveDir( "data", QLatin1String( "db_misc" ) ) ); +#ifndef Q_OS_WIN + const QString socketDirectory = Utils::preferredSocketDirectory( AkStandardDirs::saveDir( "data", QLatin1String( "db_misc" ) ) + ); +#endif const bool defaultInternalServer = true; #ifdef MYSQLD_EXECUTABLE @@ -169,7 +172,9 @@ const QString akDir = AkStandardDirs::saveDir( "data" ); const QString dataDir = AkStandardDirs::saveDir( "data", QLatin1String( "db_data" ) ); +#ifndef Q_OS_WIN const QString socketDirectory = Utils::preferredSocketDirectory( AkStandardDirs::saveDir( "data", QLatin1String( "db_misc" ) ) ); +#endif // generate config file const QString globalConfig = XdgBaseDirs::findResourceFile( "config", QLatin1String( "akonadi/mysql-global.conf" ) ); @@ -218,12 +223,14 @@ if ( akDir.isEmpty() ) akFatal() << "Akonadi server was not able to create database log directory"; +#ifndef Q_OS_WIN if ( socketDirectory.isEmpty() ) akFatal() << "Akonadi server was not able to create database misc directory"; // the socket path must not exceed 103 characters, so check for max dir length right away if ( socketDirectory.length() >= 90 ) akFatal() << "MySQL cannot deal with a socket path this long. Path was: " << socketDirectory; +#endif // move mysql error log file out of the way const QFileInfo errorLog( dataDir + QDir::separator() + QString::fromLatin1( "mysql.err" ) ); @@ -308,7 +315,10 @@ << QLatin1String( "--check-upgrade" ) << QLatin1String( "--all-databases" ) << QLatin1String( "--auto-repair" ) - << QString::fromLatin1( "--socket=%1/mysql.socket" ).arg( socketDirectory ); +#ifndef Q_OS_WIN + << QString::fromLatin1( "--socket=%1/mysql.socket" ).arg( socketDirectory ) +#endif + ; QProcess::execute( mMysqlCheckPath, arguments ); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-1.9.80/server/src/storage/dbinitializer.h new/akonadi-1.10.0/server/src/storage/dbinitializer.h --- old/akonadi-1.9.80/server/src/storage/dbinitializer.h 2013-06-10 12:16:19.000000000 +0200 +++ new/akonadi-1.10.0/server/src/storage/dbinitializer.h 2013-07-09 18:56:12.000000000 +0200 @@ -35,7 +35,7 @@ class TestInterface { public: - virtual ~TestInterface() {}; + virtual ~TestInterface() {} virtual void execStatement( const QString &statement ) = 0; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-1.9.80/server/src/storage/querycache.cpp new/akonadi-1.10.0/server/src/storage/querycache.cpp --- old/akonadi-1.9.80/server/src/storage/querycache.cpp 2013-06-10 12:16:19.000000000 +0200 +++ new/akonadi-1.10.0/server/src/storage/querycache.cpp 2013-07-09 18:56:12.000000000 +0200 @@ -24,35 +24,73 @@ #include <QSqlQuery> #include <QThreadStorage> #include <QtCore/QHash> +#include <QtCore/QTimer> using namespace Akonadi; -static QThreadStorage< QHash<QString, QSqlQuery>* > g_queryCache; +enum { + // After these seconds without activity the cache is cleaned + CLEANUP_TIMEOUT = 30 // seconds +}; -static QHash<QString, QSqlQuery>* cache() +class Cache : public QObject +{ + Q_OBJECT +public: + + Cache() + { + connect( &m_cleanupTimer, SIGNAL(timeout()), SLOT(cleanup())); + m_cleanupTimer.setSingleShot(true); + } + + QSqlQuery query( const QString &queryStatement) + { + m_cleanupTimer.start( CLEANUP_TIMEOUT*1000 ); + return m_cache.value( queryStatement ); + } + +public Q_SLOTS: + void cleanup() + { + m_cache.clear(); + } + +public: // public, this is just a helper class + QHash<QString, QSqlQuery> m_cache; + QTimer m_cleanupTimer; +}; + +static QThreadStorage<Cache*> g_queryCache; + +static Cache* perThreadCache() { if ( !g_queryCache.hasLocalData() ) - g_queryCache.setLocalData( new QHash<QString, QSqlQuery>() ); + g_queryCache.setLocalData( new Cache() ); + return g_queryCache.localData(); } -bool QueryCache::contains(const QString& queryStatement) +bool QueryCache::contains(const QString &queryStatement) { if ( DbType::type( DataStore::self()->database() ) == DbType::Sqlite ) { return false; } else { - return cache()->contains( queryStatement ); + return perThreadCache()->m_cache.contains( queryStatement ); } } -QSqlQuery QueryCache::query(const QString& queryStatement) +QSqlQuery QueryCache::query(const QString &queryStatement) { - return cache()->value( queryStatement ); + return perThreadCache()->query( queryStatement ); } -void QueryCache::insert(const QString& queryStatement, const QSqlQuery& query) +void QueryCache::insert(const QString &queryStatement, const QSqlQuery &query) { if ( DbType::type( DataStore::self()->database() ) != DbType::Sqlite ) { - cache()->insert( queryStatement, query ); + perThreadCache()->m_cache.insert( queryStatement, query ); } } + + +#include <querycache.moc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akonadi-1.9.80/server/src/storagejanitor.cpp new/akonadi-1.10.0/server/src/storagejanitor.cpp --- old/akonadi-1.9.80/server/src/storagejanitor.cpp 2013-06-10 12:16:19.000000000 +0200 +++ new/akonadi-1.10.0/server/src/storagejanitor.cpp 2013-07-09 18:56:12.000000000 +0200 @@ -219,7 +219,7 @@ qb.exec(); const Collection::List orphans = qb.result(); - if ( orphans.size() > 0 ) { + if ( !orphans.isEmpty() ) { inform( QLatin1Literal( "Found " ) + QString::number( orphans.size() ) + QLatin1Literal( " orphan collections." ) ); // TODO: attach to lost+found resource } -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
