I recently had a player report that they are unable to load their save data. I went to investigate and have realized that their data is constantly returning an InternalServerError on an attempt to SetAsync.
2025-08-02T00:38:00.993Z,507.993835,5474,12 [DFLog::HttpTraceError] HttpResponse(#2611 000001CC038491E8) time:4799.3ms (net:4799.2ms callback:2.0ms timeInRetryQueue:0.0ms)status:500 Internal Server Error bodySize:55 url:{ "https://gamepersistence.roblox.com/v2/persistence/3666294218/datastores/objects/object?datastore=RELEASE001-SlotProfile&objectKey=global%2FSlot_68210261927_Player_124528721_0_-1" } ip:128.116.48.3 external:0 numberOfTimesRetried:0
DataStoreService: InternalServerError: An internal server error occurred. API: SetAsync, Data Store: RELEASE001-SlotProfile
This has been happening for the user for 4 days as of now. I don’t know if this is the first time it’s happened, but I wouldn’t be surprised if it wasn’t.
This consistently happens for this key. My save system is very intricate, it’s a fork of ProfileStore with a compression algorithm built on top, so I’m unable to create a repro file. I have no clue why this would be happening. I am able to give studio access if need be.
I’ve also come across this issue and messed with the key
The affected key seems to become more unreliable with additional non repetitive data filling a table with hello worlds works fine but filling it with math randoms becomes super unreliable around 2mb and higher
I ran RemoveAsync on the key and then SetAsync and it seems to work as intended now.
I’ve taken a look at my error report analytics and it seems this started on 7/28/25 UTC for me.
Thanks for the report. We’ve verified that the data of both keys mentioned is stored and available. It’s possible that you’re experiencing transient issues reading and writing keys with large values. Are you able to retrieve the second key with GetAsync(), or is the same failure always reproducible?
local DS = game:GetService("DataStoreService"):GetDataStore("RELEASE001-SlotProfile")
local ExistingData = DS:GetAsync("Slot_43477843270_Player_459968348_0_-1")
DS:SetAsync("Slot_43477843270_Player_459968348_0_-1", ExistingData)
Setting new data will result in it successfully going through.
local DS = game:GetService("DataStoreService"):GetDataStore("RELEASE001-SlotProfile")
local ExistingData = DS:GetAsync("Slot_43477843270_Player_459968348_0_-1")
DS:SetAsync("Slot_43477843270_Player_459968348_0_-1", "Blank_Data")
Doing this has made it so now I can’t restore their old data due to the constant API error of trying to restore it. I have a back-up saved from the Data Store Manager.
Currently I’m using someone’s implementation of LZW for encoding and decoding, but I plan on switching to a different encoding approach that takes advantage of how buffers are JSON Encoded and Decoded.
I think if I flipped my flag for my new encoder these errors would stop happening, but I didn’t want to as this may happen again in the future.