Datastores: Improve clarity of throttling warnings

As a Roblox developer, it is hard to understand what the following Datastore warning relates to, because it gives 1 standard throttling message:

18:48:14.651 - Request was throttled. Try sending fewer requests. Key = TestKey

The reason for this is that while the key name might be given, I cannot tell why the request actually throttled, or which type of call caused the throttle. It could have been a get on the key, a set on the key, or perhaps I am calling a write on the key within 6 seconds. The error message is not specific at all, so I need to do extra effort to debug this issue.

I propose that these throttling warnings should include the method name and/or cause of throttling, such as these for when the budget is too low to perform the request: (notice method name at the start)

18:48:14.651 - GetAsync request was throttled. Try sending fewer requests. Key = TestKey
18:48:14.651 - SetAsync request was throttled. Try sending fewer requests. Key = TestKey
18:48:14.651 - IncrementAsync request was throttled. Try sending fewer requests. Key = TestKey
18:48:14.651 - UpdateAsync request was throttled. Try sending fewer requests. Key = TestKey
18:48:14.651 - RemoveAsync request was throttled. Try sending fewer requests. Key = TestKey
18:48:14.651 - OnUpdate request was throttled. Try sending fewer requests. Key = TestKey
18:48:14.651 - GetSortedAsync request was throttled. Try sending fewer requests.
18:48:14.651 - AdvanceToNextPageAsync request was throttled. Try sending fewer requests.

And these when the write cooldown of 6 seconds is violated: (notice specification of 6 second rule)

18:48:14.651 - SetAsync request was throttled. Can only write keys every 6 seconds. Key = TestKey
18:48:14.651 - IncrementAsync request was throttled. Can only write keys every 6 seconds. Key = TestKey
18:48:14.651 - UpdateAsync request was throttled. Can only write keys every 6 seconds. Key = TestKey
18:48:14.651 - RemoveAsync request was throttled. Can only write keys every 6 seconds. Key = TestKey

If this issue is addressed, it would improve my development experience because I have to spend less time debugging Datastore interactions and excessive budget usage, as it will be easier to trace back which Datastore calls generated the warnings, and what the warnings are actually about.

29 Likes

This has been filed, thank you for a great problem statement and proposed solution @buildthomas.

3 Likes

Can this be updated to also include the data store name/scope?

1 Like

This would be a lifesaver for me currently dealing with this issue: Empty key DataStore requests filling queue

I’ve searched all over and can’t find an explanation for what’s causing this warning. Nothing in the game appears to be making the request yet the warning appears every few seconds. I can’t replicate it on a test place, and it just began happening yesterday despite no updates happening to the game. I desperately want to see which script is making the request.

5 Likes