RFC Errata
RFC 8620, "The JSON Meta Application Protocol (JMAP)", July 2019
Note: This RFC has been updated by RFC 9404, RFC 9670
Source of RFC: jmap (art)
Errata ID: 6604
Status: Reported
Type: Technical
Publication Format(s) : TEXT
Reported By: Neil Jenkins
Date Reported: 2021-06-09
Section 5.6 says:
If it *splices out* all ids in the removed array that it has in its
cached results, then:
removed = [ "id2", "id31", ... ];
fooIds => [ "id1", null, null, "id3", "id4", null, null, null ]
and *splices in* (one by one in order, starting with the lowest
index) all of the ids in the added array:
added = [{ id: "id5", index: 0, ... }];
fooIds => [ "id5", "id1", null, null, "id3", "id4", null, null, null ]
It should say:
If it *splices out* all ids in the removed array that it has in its
cached results, then:
removed = [ "id2", "id31", ... ];
fooIds => [ "id1", null, null, "id3", "id4", null, null, null ]
and if any of the "removed" ids were not found, invalidates all
cached ids after the first gap in the sparse array:
fooIds => [ "id1", null, null, null, null, null, null, null ]
and *splices in* (one by one in order, starting with the lowest
index) all of the ids in the added array:
added = [{ id: "id5", index: 0, ... }];
fooIds => [ "id5", "id1", null, null, null, null, null, null, null ]
Notes:
Adds a critical step that was omitted from the description for how a client should process a "/queryUpdates" response. Without this step, the client could end up with ids in incorrect positions in its cached query results.
