Publish: lock concurrent publishes and catch edits after staging

Aperta
#7 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
Mezza giornata
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
sqlite, typescript
Ambito
backend, databases

Direzione di ricerca

Start with the publish path behind POST /api/publish and the staging code that records a post's state in SQLite, then read src/lib/server/db.check.ts to see how the existing checks are written. Add an in-process lock plus a lock file in the blog checkout, returning 409 with a reason on a second publish, and record the staged revision hash so edits after staging are flagged. Done when two simultaneous publish calls yield one success and one 409, a stale lock file is cleared, and the edited-after-staging check passes in db.check.ts.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Context

Two concurrent publishes race on the blog checkout: both render .svx files, build, commit and push. Separately, staging is per post rather than per revision, so an edit made after staging ships on the next publish without being restaged.

Scope

  • An in-process publish lock (plus a lock file in the blog checkout so a second server process also respects it). A second publish returns 409 with the reason.
  • Record the staged revision hash when a post is staged; at publish time, a post whose head moved since staging is listed as "edited after staging" and is not published until restaged.

Acceptance criteria

  • Two simultaneous POST /api/publish calls: one succeeds, one gets 409; the checkout is not corrupted.
  • A stale lock file from a crashed process is detected and cleared.
  • A check covers the edited-after-staging case in src/lib/server/db.check.ts.

Estimate: about 4 hours.

Lingua principale
HTML
Stelle
0
Fork
0
Merge medio
1m
PR unite (30g)
2

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di mrgnw/cfcms

Tutte le issue di mrgnw/cfcms

Issue simili

Altre issue su Backend & API Design

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.