A Memory Store SIZE quota overflow affects ALL Memory Stores

Reproduction Steps

local MemoryService = game:GetService("MemoryStoreService")
local MS1 			= MemoryService:GetSortedMap('MS1')
local MS2 			= MemoryService:GetSortedMap('MS2')
for I = 1, 7 do
	Success, Error = pcall(function()
		MS1:SetAsync(I, string.rep('*', 10000), 60*60)
	end)
	if not Success then 
		warn('Error SetAsync MS1\n' .. Error)
		break
	end
end

for I = 1, 7 do
	Success, Error = pcall(function()
		MS2:SetAsync(I, string.rep('*', 10000), 60*60)
	end)
	if not Success then 
		warn('Error SetAsync MS2\n' .. Error)
		break
	end
end

Expected Behavior

The space quota overflow of the first MemoryStore shouldn’t affect the quota of the second one.

Actual Behavior

The first MemoryStore MS1 has its space overflowed on purpose, inserting 6 keys of 10000 bytes each and when the seventh key is going to be inserted, it generates the error Code: 5 warning about the overflow of space quota.

Error SetAsync MS1
Code: 5, Error: Memory usage of 70014 bytes would exceed the quota of 65536 bytes (00-3e16959b457ae41a0a4d67e9d5d0d29e-d4125ac990952fbd-00)

The second loop will do the same as the first. However, in the first SetAsync for MS2 (only 10000 bytes), the space quota overflow error is generated:

Error SetAsync MS2
Code: 5, Error: Memory usage of 70014 bytes would exceed the quota of 65536 bytes (00-2c2ebb66bf9450f6b51330d377d2306a-2c9f619ec8ed27f9-00)

Issue Area: Engine
Issue Type: Other
Impact: High
Frequency: Constantly

2 Likes

Is this not intentional behavior? The Memory Stores article on the docs states that “The memory quota limits the total amount of memory that an experience can consume.” It explicitly states the limits apply to the experience, not individual queues/maps.

1 Like

No. If you read just above that, you’ll see:

“A” MemoryStore (singular) and not “All” MemoryStore (plural).
I lost many hours of work to discover this limitation and had to throw all my work away for it.
If this limitation is intentional, fix the documentation.
If not, fix the engine.

1 Like

A MemoryStore is affected by a memory size limit, but that doesn’t mean that that limit isn’t shared among all MemoryStores.

You’d have to read further to find what the memory size limit is and then you will find
image

2 Likes

Let’s wait for an official statement from Roblox on this.

1 Like

Roblox has already gave an api documentation on this. Roblox intentionally did this so the official statement will be what it says in the documentation.

1 Like

I agree this doesn’t really make sense they shouldn’t be colliding big impact on my end as i want to have matchmaking , that’s cross server but also have live tournaments with bunch of info and that’s a big impact

1 Like

Hey @rogeriodec_games, confirming this is intended, you are hitting the memory limit for an experience as a whole (at the time of writing: 64KB + 1KB ⨉ [number of users] as per the documentation)

The documentation was apparently adjusted somewhere in the past months to remove the confusing “a memory store” leading sentence you were mentioning.

If you encounter any issues that prevent you from using memory stores in your experiences, feel free to file a feature request on those issues. (e.g. if you can’t do something because of the current limit values)

2 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.