1. 15 Oct, 2020 2 commits
    • Luca Beltrame's avatar
      Increase timeout for reading data from resources to 30 seconds · 9acda8e4
      Luca Beltrame authored
      The introduction of LZMA compression for payloads can mean that when
      handling already-compressed attachments, especially those in large
      sizes, the default timeout of 10 seconds can be exceeded. This is
      particularly evident for machines with rotational disks or full disk
      encryption.
      
      This has particularly bad effects on item syncing:
      
      1. The resource retrieves an item, and starts compressing the payload.
      2. The compression takes more than 10 seconds, so the resource is
         disconnected from Akonadi due to the timeout.
      3. Upon reconnection, there is an attempt to rollback the change, but
         the change did not actually take place, so a bunch of errors
         regarding transactions are logged.
      4. The database for that resource and that collection is left in an
         inconsistent state.
      5. This can cause the resource to ultimately get stuck on its jobs.
      
      Fixing the actual problem is probably far more convoluted, but a quick
      workaround would be to increase the timeout up to 30 seconds, to stay on
      the safe side.
      
      This change was tested on a laptop with FDE that could not sync
      attachments larger than 5M: after the change, the syncing was performed
      sucessfully.
      9acda8e4
    • Laurent Montel's avatar
      Remove not implemented method · e52957ae
      Laurent Montel authored
      e52957ae
  2. 11 Oct, 2020 2 commits
  3. 10 Oct, 2020 1 commit
  4. 09 Oct, 2020 1 commit
  5. 06 Oct, 2020 1 commit
  6. 05 Oct, 2020 1 commit
  7. 04 Oct, 2020 3 commits
  8. 03 Oct, 2020 3 commits
    • Daniel Vrátil's avatar
    • Daniel Vrátil's avatar
      (De)compress payload data during (de)serialization · 37f9fcae
      Daniel Vrátil authored
      The compression is completely transparent to clients, serializers and
      Akonadi. The idea is that when serializing payload, we can compress
      the serialized data using LZMA compression to save space. The data are
      usually large enough to benefit from the compression and at the same
      time small enough for the compression to not cause any significant
      performance overhead.
      
      In my local experiment, compressing each file in file_db_data reduced
      the overall size by ~30%.
      
      The only place where the compression aspects "leak" to the user is
      regarding the Item and part sizes stored in Akonadi.
      
      The change is backwards compatible, so it can handle uncompressed
      payloads created before this change just fine. All newly created
      or updated payloads will get compressed automatically. Eventually
      a StorageJanitor task to compress th entire storage may be introduced,
      but we may need some proper progress reporting for that, since it
      may take a lot of time, even on fast SSD disk to compress all the
      files in file_db_data (depending on size of the database).
      37f9fcae
    • Daniel Vrátil's avatar
      Implement CompressionStream · 2bf3a5c9
      Daniel Vrátil authored
      It's a QIODevice that can be placed on top of another
      QIODevice. When opened in read-only mode, it will read
      compressed data from the underlying device and output
      decompressed data. When opened in write-only mode it
      will take the data written into it and write them
      compressed into the underlying device.
      2bf3a5c9
  9. 01 Oct, 2020 1 commit
  10. 29 Sep, 2020 2 commits
  11. 21 Sep, 2020 3 commits
  12. 20 Sep, 2020 1 commit
  13. 15 Sep, 2020 3 commits
  14. 13 Sep, 2020 1 commit
  15. 11 Sep, 2020 1 commit
  16. 07 Sep, 2020 1 commit
  17. 05 Sep, 2020 3 commits
  18. 04 Sep, 2020 1 commit
  19. 03 Sep, 2020 1 commit
    • Volker Krause's avatar
      Set package prefix dependent variables before calling find_dependency() · 7fcdb7fb
      Volker Krause authored
      find_dependency() changes the package prefix variable to whatever that is
      for the package we look for. That's commonly the same, so this doesn't
      matter. In the Flatpak build environment however Akonadi and its
      dependencies are in different prefixes, causing this to break modules
      depending on Akonadi when they need any of these variables.
      7fcdb7fb
  20. 02 Sep, 2020 3 commits
    • Christophe Giboudeaux's avatar
    • Ahmad Samir's avatar
      AgentBase: Fix crash in setOnline · 66d1135d
      Ahmad Samir authored
      When setOnline tries to access the mSettings member after the latter has
      been deleted we get a crash; mSettings is deleted in quit() or cleanup(),
      therefore it looks like a race condition: the Agent is about to quit, but
      some other code calls setOnline leading to a crash. It looks like this can
      happen in more than one way, e.g. via a dbus call (from AgentInstance), or
      via a sub-class of AgentBase calling setOnline directly. Use a bool member
      var, modelled after how AgentInstance uses a similar logic.
      
      BUG: 418844
      (cherry picked from commit 53574eb6)
      66d1135d
    • Ahmad Samir's avatar
      AgentBase: Fix crash in setOnline · 53574eb6
      Ahmad Samir authored
      When setOnline tries to access the mSettings member after the latter has
      been deleted we get a crash; mSettings is deleted in quit() or cleanup(),
      therefore it looks like a race condition: the Agent is about to quit, but
      some other code calls setOnline leading to a crash. It looks like this can
      happen in more than one way, e.g. via a dbus call (from AgentInstance), or
      via a sub-class of AgentBase calling setOnline directly. Use a bool member
      var, modelled after how AgentInstance uses a similar logic.
      
      BUG: 418844
      53574eb6
  21. 01 Sep, 2020 1 commit
  22. 26 Aug, 2020 1 commit
  23. 23 Aug, 2020 1 commit
  24. 22 Aug, 2020 2 commits