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

Samtidige skriveoperasjoner uten If-Match header gir 412 Precondition Failed #349

Closed
2 tasks done
Tracked by #29
elsand opened this issue Jan 16, 2024 · 1 comment
Closed
2 tasks done
Tracked by #29
Assignees
Labels
bug Something isn't working

Comments

@elsand
Copy link
Member

elsand commented Jan 16, 2024

Beskrivelse

Samtidige skriveoperasjoner uten If-Match header gir 412 Precondition Failed

Reproduksjon

Kjør mer to eller flere paralelle POSTs til en barneentitet, f.eks. activities.

Se #348 for e2e-test som viser dette

Forventet oppførsel

Alle gyldige og samtidige POST requests for å legge til en barneentitet, eller PUT for å oppdater en (barne)entitet uten If-Match request header skal returnere 2xx Rekkefølge er ikke definert, "last request wins".

Faktisk oppførsel

Det returneres 412 Precondition Failed

Ytterligere informasjon

For POST på barneentiteter blir det uansett foretatt en full update på hele aggregatet hvor optimistic concurrency control uansett blir foretatt, selv om sluttbruker ikke oppgir If-Match-header. I de tilfellene må vi på en eller annen måte deaktivere denne kontrollen, eller gjenta forsøk inntil skrivingen lykkes.

Concurrent writes uten å oppgi If-Match er forøvrig noe vi ikke tilbyr noen garantier rundt mht konsistens på rekkefølge, men hvis tjenesteeier implisitt oppgir at han ikke bryr seg om f.eks. rekkefølgen på dialogelementer som legges til samtidig, skal dette kunne støttes (og innebære individuelle events).

Det er pt ikke mulig å dynamisk opte-ut av optimistic concurrency-håndteringen i EF, dette blir muligens støttet som følge av dotnet/efcore#10443. Løsningen må derfor inntil videre være at vi i disse tilfellene forsøker på nytt (og på nytt) inntil vi faktisk klarer å gjøre oppdateringen.

EF kaster her en exception knyttet til concurrency-sjekken feiler. Fra denne vil det være mulig å hente ut revision-ID-en som faktisk ligger i databasen, og forsøke på nytt. Se https://learn.microsoft.com/en-us/ef/core/saving/concurrency?tabs=data-annotations#resolving-concurrency-conflicts

Tasks

Preview Give feedback

Se også

@MagnusSandgren
Copy link
Collaborator

Gjelder alle oppdateringer på dialog aggregatet, ikke bare underentiteter

@elsand elsand removed the needs consideration Requires additional consideration label Jan 23, 2024
@arealmaas arealmaas self-assigned this Jan 25, 2024
@knuhau knuhau assigned knuhau and unassigned arealmaas and knuhau Feb 5, 2024
@oskogstad oskogstad self-assigned this Feb 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

5 participants