Don't block a command while retrieving parts if we can afford it.
AbandonedPublic

Authored by knauss on Nov 27 2015, 4:03 PM.

Details

Summary

If the relevant parts are not available, and the ItemFetchJob will
simply block until ItemRetriever retrieved each individual message
from the resource. This completely blocks i.e. the kmail etm session.
By simply avoiding this if we can afford it (ignoreErrors, which the
ETM sets), we can circumvent this problem.

We may still want to trigger a non-blocking process that retrieves the
missing parts though.

Diff Detail

Lint
No Linters Available
Unit
No Unit Test Coverage
knauss updated this revision to Diff 1397.Nov 27 2015, 4:03 PM
knauss retitled this revision from to Don't block a command while retrieving parts if we can afford it..
knauss updated this object.
knauss edited the test plan for this revision. (Show Details)
knauss added a reviewer: dvratil.
dvratil edited edge metadata.Dec 5 2015, 6:43 PM

This is not what ignoreErrors really means. Also I think this could potentially lead to a data-loss situations, especially when not using disconnected IMAP, so I am not in favor of the patch the way it is now.

However I am aware about how painful this issue is and I have a longterm plan to rewrite the ItemRetriever to

  1. return all valid results immediately and only wait for retrieval of the actually missing items (will partially solve the blocking situation)
  2. batch requests to resources (instead of requesting each missing item one by one, just send a batch request)
  3. using the Protocol for this, not DBus.
knauss abandoned this revision.Mar 15 2016, 4:31 PM

Than we wait for your rewrite and do not go firther with this patch