[Bitrepository-devel] Undo af replace/delete logik

Jun Petersen Yoneyama jpy at sa.dk
Thu Jun 23 12:21:11 CEST 2011


Kære alle

Eld har forklaret mig hvilke behov hun har i implementering af delete og replace.
Min opgave her var at se om de kunne løses med two-phase commit.
Jeg har skrevet argumenter og konklusioner ned efter et telefonmøde, så alle forbehold for, om jeg nu har forstået og nedskrevet tingene korrekt.


Delete / replace logik:
Eld vil gerne have at alle delete og replace aktioner kan fortrydes af brugeren.
Use cases er
-       at man starter en sletning og overser, at det er den gale fil man har angivet.
-       at en medarbejder bevidst søger at slette data som hævn eller sabotage

Vores forslag er, at alle pillars har en undo facilitet for delete og replace handlinger.
Undo kan aktiveres af brugeren/kunden indenfor en periode.
Som alternativ kunne man vise en "Slet eller fortryd" dialogboks, men i praksis medfører det blot, at brugeren tvinges
til at tage afgørelsen her-og-nu. Det sidste vil jeg umiddelbart tro er vanskeligere at integrere ind i en organisatorisk implementation.
For at gennemføre en "undo" bør brugeren have adgang til at aktivere tilstrækkelige credentials.
Uanset hvor tydeligt det vises på klientsiden, bør Undo altid logges på audit.

Eld mener, at det skal være muligt at undo enhver delete/replace på enhver pillar i Bitmagasinet.
Vores konklusion blev derfor, at dette skal implementeres i form af et nyt krav til alle pillars (understøtte undo)
og en udvidelse af protokollen (selve undo beskeden).

Det ovenstående kan i princippet også løses med en almindelig two-phase commit, da klientprogrammer som regel har mulighed for at afslutte en transaktion enten med commit eller med rollback. I den forstand har klientprogrammet derfor en sidste chance for at fortryde en eller flere operationer, der er pakket ind i en two-phase commit mekanisme.

Men overheaded i krav til pillars er urimelig stort.
Det er en "dyr" fortrydelsesmekanisme, da two-phase commit er beregnet til, at koordinere en distribueret transaktion, så den kun gennemføres hvis alle distribuerede operationer gik godt. Uden at gå ned i alle detaljer af en two-phase commit, så skal alle pillars mindst opretholde:
-       låsninger på alle involverede objekter
-       opretholde data til at undo alle ændringer
-       og kunne afgive en stemme til afstemningsproceduren
Bortset fra undo er alt det andet ikke nødvendig til en konfirmation af delete/replace.

Hertil kommer, at vi nok ikke kan leve med låsninger ned i storage i længere tid.
En two-phase commit vil derfor i praksis tvinge programmøren til at "slette eller fortryde" umiddelbart efter gennemførslen.
Så, en stemme på en simpel undo herfra.




Audit: Hvem trykker på undo knappen?
På audit bør alle loggede operationer så vidt muligt logges med en individuel bruger ID.
Hvordan gør vi det? På mødet i onsdag nåede vi (næsten) frem til, at det er tilstrækkeligt med credentials.


Mvh Jun































-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ml.sbforge.org/pipermail/bitrepository-devel/attachments/20110623/ef154900/attachment.html>


More information about the Bitrepository-devel mailing list