1. 01 Sep, 2017 1 commit
  2. 02 May, 2017 1 commit
  3. 19 Apr, 2017 2 commits
    • Daniel Vrátil's avatar
      StorageJanitor: flush CollectionStatitics cache · 48ffdb6b
      Daniel Vrátil authored
      Flush the cache when running 'akonadictl fsck' since any potential
      changes that the Janitor does don't usually go through the
      NotificationCollector, so there's a chance that the cache will be
      out-of-date after the fsck.
      48ffdb6b
    • Daniel Vrátil's avatar
      StorageJanitor: check if search index contains invalid items · 9c6b4038
      Daniel Vrátil authored
      When running 'akonadictl fsck', the StorageJanitor now checks if
      all indexed items refer to an existing Akonadi Items. If not, the
      collection is re-indexed. This is useful especially when using
      'Clear Akonadi cache' in Akonadi Console, which only wipes the
      Items from the database.
      9c6b4038
  4. 18 Apr, 2017 1 commit
  5. 05 Apr, 2017 1 commit
  6. 01 Apr, 2017 1 commit
  7. 09 Mar, 2017 1 commit
  8. 25 Feb, 2017 1 commit
  9. 14 Feb, 2017 1 commit
    • David Faure's avatar
      Setting a thread's object name after calling start() is a data race. · 1ccd5f40
      David Faure authored
      QThreadPrivate::start() uses the thread's objectName() to set the thread
      name in pthread (PR_SET_NAME), so we must provide it before calling start.
      Given that AkThread calls start in the constructor, this means passing
      the string as a constructor argument.
      
      While at it, simplify code by using that string for both the object name
      of the AkThread (QObject) and the object name of its QThread.
      
      Detected by clang's thread-sanitizer.
      
      CCMAIL: dvratil@kde.org
      1ccd5f40
  10. 15 Jan, 2017 1 commit
  11. 06 Jan, 2017 1 commit
  12. 17 Dec, 2016 1 commit
  13. 12 Nov, 2016 1 commit
  14. 13 Oct, 2016 1 commit
  15. 08 Sep, 2016 2 commits
  16. 18 Jul, 2016 1 commit
  17. 23 Apr, 2016 1 commit
  18. 15 Mar, 2016 1 commit
  19. 06 Dec, 2015 1 commit
    • Daniel Vrátil's avatar
      Rework the thread management and shutdown · d9fb479d
      Daniel Vrátil authored
      This uses the proper approach to threads in Qt (moveToThread() instead
      of subclassing QThread), and it makes it possible to do final cleanup
      in the object's thread instead of the thread from which the destructor
      was called.
      d9fb479d
  20. 29 Aug, 2015 1 commit
  21. 24 Aug, 2015 1 commit
    • Daniel Vrátil's avatar
      Make akonadictl fsck/vacuum blocking, report status to console · 2ccd2e9e
      Daniel Vrátil authored
      Running "akonadictl fsck" will now block, printing status messages
      emitted by the Janitor to the terminal. It will quit once the janitor
      finishes. This makes it clear for users that the tool is actually doing
      something, without this there was no way to track progress. Same works
      for "vacuum"
      2ccd2e9e
  22. 21 Aug, 2015 5 commits
    • Daniel Vrátil's avatar
      Make sure StorageJanitor looks into the levelled cache for files · 3f3fefdc
      Daniel Vrátil authored
      Otherwise it will think that all external parts in database reference non-existent
      files
      3f3fefdc
    • Daniel Vrátil's avatar
      Refactor external payload parts handling and implement levelled cache · cb24efd0
      Daniel Vrátil authored
      External payload files are now stored in levelled folder hierarchy. Currently we
      implement one level of indirection using modulo 100 of Part.id(). Using modulo
      100 ensures even distribution of files into the subdirectories. The migration is
      implemented in StorageJanitor, so it can be triggered manually by running
      akonadictl fsck.
      
      Handling of access to external files has been refactored to ExternalPartStorage
      class. This class implements access to the legacy flat-cache hierarchy as well
      as simple transactional system. The transactional system allows us to rollback
      or commit changes in the external files: file created in the transaction are
      deleted when the transaction is rolled back, and file deletion is delayed until
      the transaction is committed. This allows us to control the files from outside
      PartStreamer and tie it to committing of database transaction, which is more
      likely to fail than the EPS transaction. This should prevent us from losing
      cached parts when error occurs during update.
      
      BUG: 338402
      FIXED-IN: 15.12.0
      cb24efd0
    • Daniel Vrátil's avatar
      StorageJanitor: check results of SQL queries · 7ea71010
      Daniel Vrátil authored
      Make sure we don't clean up some more than we should because an SQL query has failed.
      7ea71010
    • Daniel Vrátil's avatar
      Move AkDBus to KF5AkonadiPrivate · 8cf38d60
      Daniel Vrátil authored
      Akonadi::DBus provides generic instance-aware access to all DBus services of
      Akonadi. By moving it to KF5AkonadiPrivate we can use it from client libraries
      too instead of them having their own copy of the code.
      
      This also removes the #defines for DBus services names from headers as they
      should never be used, instead Akonadi::DBus should always be used to get
      instance-aware service names. Similarily the DBus object paths have been moved
      to dbus_p.h so that one does not have to include the entire giant protocol_p.h
      just to get access to a few #defines.
      8cf38d60
    • Daniel Vrátil's avatar
      Move AkStandardDirs to KF5AkonadiPrivate · 8265998a
      Daniel Vrátil authored
      Akonadi::StandarDirs provides instance-aware access to Akonadi config files
      unlike XdgBaseDirs::akonadi*ConfigFile() which always point to the global
      files regardless of current instance settings. The plan is to port clients
      to use Akonadi::StandardDirs instead and remove the broken functions from
      XdgBaseDirs.
      8265998a
  23. 16 Aug, 2015 1 commit
  24. 15 Aug, 2015 1 commit
  25. 03 Jun, 2015 1 commit
  26. 31 May, 2015 1 commit
  27. 10 Sep, 2014 1 commit
  28. 27 Aug, 2014 1 commit
  29. 31 Jul, 2014 1 commit
  30. 24 Apr, 2014 1 commit
    • Daniel Vrátil's avatar
      Use per-thread QDBusConnections · 09468a82
      Daniel Vrátil authored
      This moves DBusConnectionPool from Nepomuk search code to Akonadi and makes
      use of it in search infrastructure and couple other classes that interact
      with DBus from non-main thread.
      
      QDBusConnection is not thread-safe in Qt 4, so we need to workaround it by
      having a connection for each thread. Qt 5 should be OK, so we can remove this
      in Frameworks.
      
      This should fix random crashes I've been seeing when SearchTaskManager::addTask()
      was called from multiple threads simultaneously.
      09468a82
  31. 17 Apr, 2014 1 commit
    • Daniel Vrátil's avatar
      Use per-thread QDBusConnections · a5542751
      Daniel Vrátil authored
      This moves DBusConnectionPool from Nepomuk search code to Akonadi and makes
      use of it in search infrastructure and couple other classes that interact
      with DBus from non-main thread.
      
      QDBusConnection is not thread-safe in Qt 4, so we need to workaround it by
      having a connection for each thread. Qt 5 should be OK, so we can remove this
      in Frameworks.
      
      This should fix random crashes I've been seeing when SearchTaskManager::addTask()
      was called from multiple threads simultaneously.
      a5542751
  32. 14 Mar, 2014 1 commit
  33. 17 Feb, 2014 1 commit
    • Daniel Vrátil's avatar
      Wrap all classes in /server to Akonadi::Server namespace · c90b946d
      Daniel Vrátil authored
      Since we now support loading of plugins, having only Akonadi namespace
      might not be enough, as plugins can easily clash (like Akonadi::TagAttribute
      from Akonadi and from kdepimlibs). It will also make it easier to differentiate
      classes once both server and client libs are in the same repo in KF5.
      c90b946d
  34. 05 Jan, 2014 1 commit