Mailspring/packages/client-sync
Evan Morikawa c7bdb5804a [client-sync] fix unbouded query
Summary:
Fixes T7783

This unbounded query, plus a yet-to-be-diagnosed bug causing large numbers
of messages with no folderIds, led to frequent crashes of the worker
window at the end of every sync loop.

This took a fair amount to diagnose. Notes on that are here:
https://paper.dropbox.com/doc/Diagnosing-Crash-X329VTxevrqtIMESBtHNV

Huge thanks to @mark.

Test Plan: Reboot app with patch, no more crashes!

Reviewers: spang, halla, mark, juan

Reviewed By: mark, juan

Subscribers: mark

Maniphest Tasks: T7783

Differential Revision: https://phab.nylas.com/D4039
2017-02-24 10:58:21 -08:00
..
images [client-*] Rename packages folders and update readme 2017-02-16 13:31:37 -08:00
spec [client-*] Rename packages folders and update readme 2017-02-16 13:31:37 -08:00
src [client-sync] fix unbouded query 2017-02-24 10:58:21 -08:00
stylesheets [client-*] Rename packages folders and update readme 2017-02-16 13:31:37 -08:00
main.es6 [client-*] Rename packages folders and update readme 2017-02-16 13:31:37 -08:00
package.json [*] move to monorepo 2017-02-16 18:46:26 -08:00
README.md [*] update and add READMEs to each package 2017-02-17 17:28:09 -08:00

Client Sync

This is the mail sync engine that runs within the Nylas Mail client

It is symlinked in as an internal_package of Nylas Mail via the postinstall script of the root repo.

Important Usage Notes:

Since this is symlinked in as an internal_package of Nylas Mail, there are a handulf of considerations when developing in client-sync. Some common gotchas:

  • You MAY use NylasEnv, NylasExports and other injected libraries in the Nylas Mail client environment.
  • You MAY use any 3rd party library declared in client-app/package.json. Since this gets added as a plugin of the Nylas Mail client, you'll have access to all libraries. This works because the client-app/node_modules was added to the global require paths. That lets us access client-app plugins without being a file directory decendent of client-app (client-sync is now a sibling of client-app)
  • You may NOT add "dependencies" to the client-sync/package.json. If you need a 3rd party library, add it to the main client-app/package.json. All Nylas Mail plugins (those inside of internal_packages), may no longer declare their own dependencies.
  • You should be aggressive at moving generic mail methods to isomorphic-core. We may eventually want to make large chunks of client-sync work in a cloud environment as well.