Document toolboxDocument toolbox

Eventually Consistency

Een client kan na creatie of wijzigen van een resource deze terug opvragen. Aangezien de asynchrone aard van de projectie kan het zijn dat bij opvragen de projectie nog niet is bijgewerkt voor deze specfieke resource. De client kan dus oude data (stale data) terugkrijgen en interpreteren dat zijn actie niet gelukt is.

Om dit te voorkomen voorzien we een mechanisme zodat de client kan nagaan of hij de laatste versie van de resource terugkrijgt in HTTP GET request.

Om dit te realiseren geven we in de HTTP Response message een “ETag” header terug met een indicatie van de versie van de resource. Bij het opvragen van de resource kan de client in de “If-Match“ request header deze ETag value mee te geven.

De server zal op basis van de waarde in de “If-Match“ een evaluatie doen of hij de de versie die de client verwacht kan teruggeven. Op basis van deze evaluatie zal de server een andere HTTP Status code teruggeven:

  • 412 Precondition Failed: projection is nog niet up-to-date

  • 200 OK: projection is up-to-date