3 ms·
The application has a retry mechanism that will keep trying until a connection succeeds (with an exponential backoff), but it doesn't handle a case where the se
by Daniel_sk 6y ago
The application has a retry mechanism that will keep trying until a connection succeeds (with an exponential backoff), but it doesn't handle a case where the server is basically rejecting the messages on purpose (due to capacity issues). Suddenly all applications will start retrying the connection at once and there is no way to turn if off. So it will make the problem even much worse than it already is. They have added a server feature flag yesterday to change the maximum backoff time and they also added the handling of HTTP 508 error response.
- williamdclt 6y agoI'm wondering if another way to handle that would be the server accepting the request, but not actually servicing it. Basically let it timeout so that the client doesn't retry (at least, does not retry before timeout)
- Daniel_sk 6y agoCommits from yesterday: Feature flag for maximum retry backoff time: https://github.com/signalapp/Signal-Android/commit/93e9dd6425b22db13baaf7e7f780a93bda0a457e https://github.com/signalapp/Signal-Android/commit/93e9dd642... Add jitter to backoff time: https://github.com/signalapp/Signal-Android/commit/8f7fe5c3eeb693e132b3c7d8bc692546bd70d27d https://github.com/signalapp/Signal-Android/commit/8f7fe5c3e... Handle ServerRejectedException (HTTP 508): https://github.com/signalapp/Signal-Android/commit/c95f0fce6ee3b78ff82fde865b2ee49288e1303f https://github.com/signalapp/Signal-Android/commit/c95f0fce6... Feature flag for automatic session reset: https://github.com/signalapp/Signal-Android/commit/a3c7e7e552f35751c43e79481357980bb36a8404 https://github.com/signalapp/Signal-Android/commit/a3c7e7e55...
- LurkersWillLurk 6y agoCan somebody clarify if I'm correct in believing that feature flags are client features that can be activated server-side (as opposed to an app update)?
- Daniel_sk 6y agoThese can be set by the server, you don't need to update the app. "A location for flags that can be set locally and remotely. These flags can guard features that are not yet ready to be activated." Here is the file with javadoc on top: https://github.com/signalapp/Signal-Android/blob/2c1c6fab3560ef12996030cf7c84cc0d895e329e/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java https://github.com/signalapp/Signal-Android/blob/2c1c6fab356...
- jimsparkman 6y agoThat is correct. Typically used to enable or modify a feature in the client on your own time table vs. App Store approval.
- erdeszt 6y agoProblem: whatever Solution: TRY-CATCH
- fctorial 6y agoWHILE TRY CATCH
- ericbarrett 6y agoThe technical term for this is “thundering herd”