12
votes

Even with debug enabled for RemoteConfig, I still managed to get the following:

Error fetching remote config values Optional(Error Domain=com.google.remoteconfig.ErrorDomain Code=8002 "(null)" UserInfo={error_throttled_end_time_seconds=1483110267.054194})

Here is my debug code:

let debug = FIRRemoteConfigSettings(developerModeEnabled: true)
FIRRemoteConfig.remoteConfig().configSettings = debug!

Shouldn't the above prevent throttling?

How long will the throttle error remain in effect?

3
Im having the same issue, I was able to get the first value, but then it started giving me the same error, hope someone has an answer. Im also using the same debug code!Mago Nicolas Palacios
Now is working for me... Not sure if it was a Firebase error or what.Mago Nicolas Palacios
Hi. Did everything fix by itself? Got the same error after first success (SwiftStudier

3 Answers

15
votes

I've experienced the same error due to throttling. I was calling FIRRemoteConfig.remoteConfig().fetchWithExpirationDuration with an expiry that was less than 60 seconds.

To immediately get around this issue during testing, use an alternative device. The throttling occurs against a particular device. e.g. move from your simulator to a device.

The intention is not to have a single client flooding the server with fetch requests every second. Make sensible use of the caching it offers out of the box and fetch only when necessary.

5
votes

When you receive this error, plug the value of error_throttled_end_time_seconds into an epoch converter (like this one at https://www.epochconverter.com) and it will tell you the time when throttling ends. I've tested this myself, and the throttling remains in effect for 1 hour from the first moment you are throttled. So either wait an hour or try some of the other recommendations given here.

UPDATE: Also, if you continue making config requests and receive the throttle error, the expire timeout does not increase (i.e. "you are not further penalized").

1
votes

The quick and easy hack to get your app running is to delete the application and reinstall it. Firebase identifies your device as new device on reinstalling. Hope it helps and save your time.