mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-10 04:36:43 +00:00
Updates go-proton-api and Gluon to includes memory reduction changes and modify the sync process to take into account how much memory is used during the sync stage. The sync process now has an extra stage which first download the message metada to ensure that we only download up to `syncMaxDownloadRequesMem` messages or 250 messages total. This allows for scaling the download request automatically to accommodate many small or few very large messages. The IDs are then sent to a download go-routine which downloads the message and its attachments. The result is then forwarded to another go-routine which builds the actual message. This stage tries to ensure that we don't use more than `syncMaxMessageBuildingMem` to build these messages. Finally the result is sent to a last go-routine which applies the changes to Gluon and waits for them to be completed. The new process is currently limited to 2GB. Dynamic scaling will be implemented in a follow up. For systems with less than 2GB of memory we limit the values to a set of values that is known to work.
16 KiB
16 KiB
Copying
Copyright (c) 2022 Proton AG
Proton Mail Bridge is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Proton Mail Bridge is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Proton Mail Bridge. If not, see https://www.gnu.org/licenses.
Dependencies
Proton Mail Bridge includes the following 3rd party software:
- The Go Project libraries | Available under BSD license
- Qt | Available under multiple licences
- notificator available under license
- semver available under license
- gluon available under license
- go-autostart available under license
- go-proton-api available under license
- go-rfc5322 available under license
- gopenpgp available under license
- goquery available under license
- ishell available under license
- go-singleinstance available under license
- juniper available under license
- godog available under license
- messages-go available under license
- docker-credential-helpers available under license
- go-sysinfo available under license
- go-imap available under license
- go-imap-id available under license
- go-message available under license
- go-sasl available under license
- go-smtp available under license
- color available under license
- sentry-go available under license
- resty available under license
- go-json available under license
- dbus available under license
- mock available under license
- go-cmp available under license
- uuid available under license
- go-multierror available under license
- html2text available under license
- go-keychain available under license
- dns available under license
- memory available under license
- errors available under license
- profile available under license
- logrus available under license
- testify available under license
- cli available under license
- msgpack available under license
- goleak
- exp available under license
- net available under license
- sys available under license
- text available under license
- grpc available under license
- protobuf available under license
- plist available under license
- atlas
- ent
- bcrypt available under license
- go-crypto available under license
- go-mime available under license
- go-srp available under license
- readline available under license
- levenshtein available under license
- cascadia available under license
- antlr available under license
- go-textseg available under license
- test available under license
- circl available under license
- go-md2man available under license
- saferith available under license
- gherkin-go available under license
- wincred available under license
- go-spew available under license
- go-windows available under license
- go-textwrapper available under license
- go-vcard available under license
- go-shlex available under license
- sse available under license
- gin available under license
- inflect available under license
- locales available under license
- universal-translator available under license
- validator available under license
- uuid available under license
- protobuf available under license
- errwrap available under license
- go-immutable-radix available under license
- go-memdb available under license
- golang-lru available under license
- hcl available under license
- multierror available under license
- go available under license
- go-urn available under license
- go-colorable available under license
- go-isatty available under license
- go-runewidth available under license
- go-sqlite3 available under license
- go-wordwrap available under license
- concurrent available under license
- reflect2 available under license
- tablewriter available under license
- go-toml available under license
- lz4 available under license
- go-difflib available under license
- procfs available under license
- uniseg available under license
- blackfriday available under license
- pflag available under license
- bom available under license
- codec available under license
- tagparser available under license
- smetrics available under license
- go-cty available under license
- crypto available under license
- mod available under license
- sync available under license
- tools available under license
- genproto gopkg.in/yaml.v2 gopkg.in/yaml.v3
- docker-credential-helpers available under license
- go-message available under license
- go-keychain available under license