#2361 ✓bluesky
Alexey Zakhlestin

Search blocks app (is nor asynchronous)

Reported by Alexey Zakhlestin | July 9th, 2019 @ 09:30 AM

Steps to reproduce:

  1. Enter text in search field
  2. Press Enter

Actual result:

  1. Circular rainbow cursor is displayed
  2. MailMate is not responsive for several seconds

Expected result:

  1. Search-request row (Message contains "…") is displayed instantly
  2. Pane with list of messages is empty
  3. There is some indicator which tells, that search is in progress
  4. App is responsive all the time

Expected solution: search initialization happens in background thread, sends status/progress notifications/messages to ui-thread. No heavy work happens in UI thread

Comments and changes to this ticket

  • benny

    benny August 1st, 2019 @ 07:51 AM

    • State changed from “new” to “bluesky”

    In principle, I agree, but the nature of MailMate is that basically everything is a search (even an IMAP mailbox in MailMate is based on an internal search for the emails belonging to that mailbox). In other words, most parts of MailMate require searches to be near instantaneous. Some things could/should be more asynchronous, but my time would actually be better spent on optimizing searches in general (which is always on my todo lists).

    I assume you have quite a lot of emails in MailMate. One way to reduce search time is to setup a smart mailbox for the emails you most often search and then use the popup menu in the toolbar search field to limit default searches to happen in that mailbox.

    (Note that I'm not saying that I won't make anything asynchronous and if it was a quick fix then I would certainly do that for the toolbar search field. My point is just that the main problem is that the search is slow for large message stores. You would still have to wait for the result if it was happening asynchronously.)

  • Alexey Zakhlestin

    Alexey Zakhlestin August 1st, 2019 @ 11:52 AM

    Thanks benny,

    I understand that "asynchronous" wouldn't make things faster. But it will definitely make things smoother and lead to much better UX.

    Overhead of passing data between threads is negligible in comparison to actual search process, so executing search on the main thread doesn't really buy you any performance either.

    I also understand that past architectural choices could have made such change non-trivial (I have 20 years of software architectural choices myself) :)

  • benny

    benny August 1st, 2019 @ 12:12 PM

    I didn't mean to say that it bought me any performance, but changing it to be asynchronous would currently be very non-trivial :)

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป

Mac OS X email client.

Shared Ticket Bins

People watching this ticket