cryptomator / integrations-api

API for optional services, such as system keychain integrations
GNU Affero General Public License v3.0
12 stars 4 forks source link

Increase resiliencey against service loading failure #26

Closed infeo closed 9 months ago

infeo commented 9 months ago

We locate and load load service providers with the IntegrationsLoader: https://github.com/cryptomator/integrations-api/blob/b58ecc65856a086a5295c9f977353844867792b0/src/main/java/org/cryptomator/integrations/common/IntegrationsLoader.java#L43-L53

We stream all possible services, check their availability by invoking isSupported and instantiate an instance. But as soon as an exceptions is thrown (wether during support check or instantiation), the whole loading stream collapses and fails with ServiceConfigurationException. Even worse, this error is not documented, tearing down lib consumers (as can be seen in https://github.com/cryptomator/cryptomator/issues/3279)

We should refactor the loading in such a way, that failure on a single service does not affect loading of other services.