RFC Errata
RFC 8620, "The JSON Meta Application Protocol (JMAP)", July 2019
Note: This RFC has been updated by RFC 9404
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.