1. 21 Sep, 2020 1 commit
  2. 13 Sep, 2020 1 commit
  3. 10 Sep, 2020 1 commit
  4. 23 Aug, 2020 1 commit
  5. 22 Aug, 2020 1 commit
  6. 16 Aug, 2020 1 commit
  7. 02 Aug, 2020 1 commit
  8. 27 Jul, 2020 1 commit
  9. 13 Jul, 2020 1 commit
  10. 12 Jul, 2020 1 commit
  11. 10 Jul, 2020 1 commit
  12. 08 Jul, 2020 1 commit
  13. 07 Jul, 2020 3 commits
  14. 30 Jun, 2020 2 commits
  15. 19 Jun, 2020 2 commits
  16. 17 Jun, 2020 1 commit
  17. 14 Jun, 2020 1 commit
  18. 05 Jun, 2020 1 commit
  19. 04 Jun, 2020 1 commit
  20. 02 Jun, 2020 1 commit
  21. 31 May, 2020 1 commit
  22. 29 May, 2020 1 commit
  23. 28 May, 2020 1 commit
  24. 26 May, 2020 2 commits
  25. 21 May, 2020 1 commit
  26. 17 May, 2020 1 commit
  27. 10 May, 2020 1 commit
  28. 09 May, 2020 1 commit
  29. 20 Apr, 2020 2 commits
    • Daniel Vrátil's avatar
      SearchJob: don't assemble OR term recursively · b0529aff
      Daniel Vrátil authored
      Summary:
      The code was ridiculously inefficient for large OR sets. Trying
      to assemble an OR term with 28'000 subterms took minutes and the
      process eventually ran out of memory. Instead just use a for loop
      and a bit of counting to balance the parentheses, the string
      is assembled within milliseconds.
      
      Test Plan:
      Added a test to make sure the serialized string is the same as before
      
      A benchmark for 10'000 subterms took 4 seconds. Benchmark for 28'000
      subterms got killed by the OOM-killer. After the patch the benchmark
      for 28'000 subterms took 2.2 ms.
      
      Reviewers: #kde_pim, vkrause
      
      Reviewed By: #kde_pim, vkrause
      
      Subscribers: kde-pim
      
      Tags: #kde_pim
      
      Differential Revision: https://phabricator.kde.org/D28946
      b0529aff
    • Daniel Vrátil's avatar
      ImapSet: optimize the set before serialization · 68facf36
      Daniel Vrátil authored
      Summary:
      Client code usually generates the ImapSet by simply passing it a vector of
      IDs or just by calling ImapSet::add() in a for loop for individual IDs. This
      creates potentially massive amount of intervals. This change ads a method
      that will optimize the ImapSet by merging adjacent or overlapping intervals.
      
      I ran into this trying to move about 28'000 emails to Trash in KMail. The IMAP
      resource calls ImapSet::add() in a for loop to add each Item to be moved into
      the set. This just created 28'000 single-UID intervals and the resulting request
      string was so long that my Courier IMAP server just dropped the connection, so
      the IMAP resource reconnected and tried to send the same massive request again
      and again and again...
      
      By optimizing the set the string size is reduced from nearly 156 kilobytes
      down to less than 4 kilobytes.
      
      Reviewers: #kde_pim, vkrause
      
      Reviewed By: #kde_pim, vkrause
      
      Subscribers: kde-pim
      
      Tags: #kde_pim
      
      Differential Revision: https://phabricator.kde.org/D28944
      68facf36
  30. 15 Apr, 2020 1 commit
  31. 14 Apr, 2020 3 commits
  32. 07 Apr, 2020 1 commit