* Revert "Send all messages via keyspace notifications when a feature flag is enabled."
This reverts commit fadcf62166.
* Revert "Consolidate semaphore release logic."
This reverts commit c02b255766.
* Revert "Represent stored message state as an enumeration rather than a collection of booleans."
This reverts commit 89788fa665.
* Revert "Refactor: collapse state into semaphores/atomic booleans."
This reverts commit a052e2ee8f.
* Revert "Refactor: move sendNextMessagePage into its own method."
This reverts commit 158e5004b7.
* Revert "Avoid querying the database if we think all new messages are in the cache."
This reverts commit 6f9ff3be37.
* Revert "Query for more stored messages if an update happens while we're already processing a batch."
This reverts commit f766c57743.
* Revert "Only send the "queue cleared" message once per websocket session."
This reverts commit 8f53152c3e.
* Revert "Let processStoredMessages handle requery logic."
This reverts commit 7bbc88d716.
* Revert "Only allow one thread to process stored messages at a time."
This reverts commit 68256d2343.
* Parse and log the Twilio error code
* Automatically retry without sender ID when Twilio returns unreachable
* Remove attempt count and pass around whether or not sender id was used
* Remove arbitrary SMS code
This code has run its course and is no longer needed for now.
* Add elements to sample config that were left out
* Add a messaging service for NANPA
* Fixup sample config capitalization
The rules around selecting sender ids can get complicated with some
countries not supporting it and others requiring pre-registration that
may result in having a different sender id for that country than
others. This strategy class handles the logic of dealing with this
expanded configuration and applying the appropriate sender id or none
when it's not appropriate to do so at all.
The RemoteConfigControllerTest#testMath unit test would occassionally
fail because randomness doesn't necessarily group into expected ranges
over a finite trial count. This changes the test to use a predefined
PRNG sequence instead of one that varies with each test so that the
test will no long randomly fail.
The get endpoint for key fetching can fail if the transaction cannot
complete because of simultaneous modification. Clients currently
receive 500 from this and retry if it happens, but this test case runs
into it without retrying and then complains that not all the threads
completed successfully. This workaround adds some retry attempts.
This version of remote config allows non-boolean values to be returned
to clients but unfortunately limits the configuration to only one
value or another. There is no way to configure more than two values
for the same key with this setup.