Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimistic lock / Unngå overskriving av oppdaterte data #5

Open
narve opened this issue Oct 29, 2016 · 3 comments
Open

Optimistic lock / Unngå overskriving av oppdaterte data #5

narve opened this issue Oct 29, 2016 · 3 comments
Assignees

Comments

@narve
Copy link
Collaborator

narve commented Oct 29, 2016

For å unngå at noen overskriver feks en session med gamle data, trenger vi en form for optimistic locking.

Jeg tenker det er greit å følge http-specen og bruke If-Match, men det er andre måter å løse dette på.

@narve narve changed the title Optimistic lock / If-Not-Modified Since Optimistic lock / Unngå overskriving av oppdaterte data Oct 29, 2016
@narve
Copy link
Collaborator Author

narve commented Oct 29, 2016

Mitt forslag:

  1. Når en klient (feks websidene) henter en session, får den med en "lastUpdatedDate" eller lignende, som i praksis er eventDate fra siste relaterte event.

  2. Når web-clienten skal poste en oppdatert session, så må den sende med en If-Unmodified-Since http-header med datoen den fikk i steg 1

  3. Web-serveren sjekker at If-Unmodified-Since er lik lastUpdated og excepter med en 4xx-exception hvis ikke.

@narve
Copy link
Collaborator Author

narve commented Oct 29, 2016

Enige?

@narve
Copy link
Collaborator Author

narve commented Oct 29, 2016

Anders var ikke enig i å bruke datoer. En modifisert versjon bruker etag. Da må vi ha en etag for en gitt session. Det kan være id'en til siste event (kanskje litt vel brutalt), eller id'en til siste event som er relevant for en gitt session. Da må denne id'en oppdaters når en Session oppdateres, men det er jo ikke noe problem. Da blir det slik:

  1. Sørge for at Session-oppdatereren tar vare på id til siste event som oppdaterte denne Session
  2. Server sender med en http-header ETag: W/"123", der 123 er relevant event-id
  3. Når en klient ønsker å oppdatere en event sender den med http-header If-Match: "123".
  4. Når server tar i mot en update-request, sjekker den If-Match-headeren og dersom den ikke stemmer (lengre) så excepter den med HTTP-kode 412.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants