No data stores found after deleting over 2k datastores (6 remaining)

My guess is that it still try to fetch the delete ones, despite not showing them… making the list paginated

Page URL: https://create.roblox.com/dashboard/creations/experiences/508099649/data-stores-manager?filter_Text=DataStoreService

Hi there Symlat,

Thanks for raising this issue.

First, I’d like to explain the root cause of the issue.

The underlying cause is that the Data Stores Manager relies on the ListDataStores Open Cloud endpoint to populate the list.

When the query parameter showDeleted is set to true, the operation will only check up to 512 data stores. If all checked data stores are deleted then it will return an empty list with a page token to continue iteration. This causes the behavior you noted in the bug report.

Now, I’d like to explain a resolution.

While it’s not possible to remove the 512 limit (since it protects our backend servers), I do believe two action items are warranted:

  1. The 512 data stores limit should be documented on the ListDataStores Open Cloud API documentation.
  2. The Data Stores Manager frontend should show a descriptive error message when an empty list is returned with a cursor to continue pagination.

I’ll work on adding both of these and post a resolution here when done. Otherwise, can you please let us know if you have any feedback on these action items?

Thanks!

2 Likes

Hello!

Thanks for the explanation.

Since it’s using OpenCloud’s endpoint, when we have the “Show Deleted?” toggle on the list toggled off, the argument &showDelete=false on the open cloud query should be set to false.

This should then only return the non-deleted datastores. Saving bandwidth for both the users and Roblox wihle fixing this issue

EDIT: So I ran a quick script to confirm what I said above about fetching with showDeleted=false, this was the result, which is what I would expect to see in the list:
image

Basically this means that right now the fetch call is done using showDelete=true (or absent) whether or not you have it enabled, then the filtering is done directly on the frontend part