Data used to hand its storage work to the bundled ProfileStore package. That
package is removed. Store holds a DataStore key for one
server at a time, saves it while it is held, and releases it on the way out.
A key written by ProfileStore still reads. Its format is recognised and raised to
the current one on the first save.
Store also works on its own, for keys that are not player data, such as a
guild or a shared world:
local keep = guilds:StartSessionAsync("guild-4812")
Reading the new module end to end turned up eight faults.
A refused write reported success. The code checked that the call had not
raised, rather than that anything was stored. With packing enabled, a failure
to pack took exactly this path: nothing was stored, LastSaved was updated,
and OnAfterSave fired.
Nothing was saved on shutdown. The closing handler wrote to the frozen
module table on its first line and raised there.
Shutdown had no time limit. Each write kept four attempts with backoff
climbing to 30 seconds, so keys later in the queue could not finish before the
server closed.
A replaced handle kept accepting writes. Taking a key this server already
held left the earlier handle looking alive. It accepted writes that could never
be stored.