On October 20, Roblox released a game server update which caused issues when requesting GlobalDataStore through GetDataStores. The version has been rolled back and restored, and now current data is being read/written correctly. However, this update may have affected some of your players’ data.
Please reference this post on steps you can take to determine if your players’ data was impacted and what to do if it was: [Update] DataStores Incident: Data Consistency Checker API
10:02AM: Started release of new version.
10:25AM-11:00AM: Increasing reports of issue with DataStores.
11:00AM: Rollback started.
11:15AM: Rollback and player transition to different server complete.
Who was affected?
Games which attempted to save data to a DataStore in new Roblox servers (v. 453).
How were they affected?
Any data saved between 10:02AM - 11:15AM PST on an affected server, to a GlobalDataStore, has been lost or reverted. Existing data before 10:02AM was not overwritten. OrderedDataStores were not affected.
However, if you were using an OrderedDataStore and DataStore together:
The OrderedDataStore has not lost any information, and therefore may point to data which was lost from the DataStore.
Modules such as DataStore2 use this approach to store backups of player data. In this case, the OrderedDataStore is likely to be out of sync and point to missing data.
This table gives you an idea of the exact issue:
|Key||OrderedDataStore Value||DataStore Value||EmptyScope DataStore Value|
What can you do if you were affected?
We have released a temporary DataStore API which lets you query any data that was redirected to an empty scope during the incident window (Oct 20, 10:02AM - 11:30AM PST). The API will help you solve inconsistencies with your players’ data. You have to restart your studio to access the new API. Please reference this post for more information.
Q: Is it safe to re-open my game?
A. Yes, if you were using DataStores directly, and not versioning them.
If you were versioning them, then be aware that you may be saving new-data to players who have an old save in your game. The old save can be recovered but will become more difficult to do-so over time. Use your best judgement.
Q: Can Roblox do a manual rollback of our game?
A: We are looking into this, but are unable to offer rollbacks at this time.
Q: What about transactions or purchases which occurred during this time?
A: We have provided reimbursements to all affected players. Please direct them to check their Roblox Inbox for a message on a refund.
October 21 - 11:00AM PST Update
We are compiling a list of all games that were impacted by the incident. Once that is complete, we will reach out and provide tooling for you to restore or rollback player data if you were among the affected group. There will be references and examples on how to use the tooling if you decide to proceed with data rollbacks.
We will also be providing refunds to all players that made purchases during the incident. The refund will include messaging to clarify what occurred. If you are receiving messages from your players, please direct them to Roblox support so we can assist them.
Please standby for another update later this afternoon.
October 21 - 5:00PM PST Update
As of this evening, reimbursements to all affected players are being processed. If you receive messages from players regarding inconsistent Robux purchases in-game due to the incident, please direct them to watch their Roblox Inbox for a message on a refund.
Our team is actively working on a patch that contains a new API which will check for keys which were affected during the incident. We are aiming to release it tomorrow morning (Oct 22, 11AM PST).
We also want to further clarify the timeline of events and provide more information on what occurred.
When we began rolling out version 453 to game servers, the default scope of GetDataStore was changed from “global” to “(Empty String)”. This meant that all requests made through a GlobalDataStore on the affected servers were redirected to the empty scope, but still succeeded. Between 10:02AM - 11:30AM PST, data was written or read from the empty scope which resulted in players appearing to have “lost data.” Since rolling back to version 452, the default scope was corrected and players appeared to have their “lost data” restored.
However, since OrderedDataStore was unaffected by this issue, reads and writes went to the correct scope. If you use OrderedDataStores to point to data in a GlobalDataStore, this data could have been written to the wrong scope resulting in data mismatches. We will follow up with more details on this use case shortly.
We anticipate to have the API live tomorrow around 11AM PST and will be providing documentation on how to use it to resolve data inconsistencies.
We are doing a thorough investigation of the problem and will provide updates on how Roblox will ensure issues like this will be prevented in the future.
October 22 - 5:15PM PST Update
We have released a temporary DataStore API which lets you query any data that was redirected to an empty scope during the incident window. The API will help you solve inconsistencies with your players’ data. You have to restart your studio to access the new API. Please reference this post for more information.