Page History
...
XDSCleanup sletter også dokumenter baseret på afdøde personer. Derfor indgår DSM SDM databasen også i løsningen. Der læses alene fra denne database.
...
Der skrives til applikationsloggen, hvad der bliver slettet. Det er dokumenteret i større detalje i driftsvejledningen hvad der logges.
Asynkronitet
Implementationen følger husreglerne for baggrundsjobs og understøtter derfor samtidige kørsler af alle oprydningsjobs.
Løsningen for alle oprydningsjobs er en in-memory stak, hvorpå der løbende bliver påfyldt operationer til at udføre oprydningen.
Ved hver kørsel, bliver der enten fyldt nye operationer på stakken, eller der bliver taget en operation fra stakken, som bliver udført.
Afkobling af sletning i registry og repository
Sletning i registry og repository foregår i seperate servlets, som kan køres uafhængigt af hinanden.
Sletning af dokumentmetadata i NXRG vil dog altid ske før sletning af dokumenterne i OpenXDS.
Sletningen foregår i to trin: Først slettes dokumentmetadata i NXRG, og derefter slettes selve dokumenterne i OpenXDS. De to skridt er uafhængige af hinanden, og kan i princippet foregå på forskellige tidspunkter. Når dokumentmetadata er slettet i NXRG, bliver dette skrevet til tabellen deleted_documententries, som udgør en log over slettede metadata. Sletningen fra OpenXDS foregår med udgangspunkt i tabellen deleted_documententries. Denne tabel vedligeholdes af NXRG, men tabellens indhold er for overblikkets skyld gengivet nedenfor.
...
| Attributnavn | Datatype | Indhold |
|---|---|---|
| id | int(11) | Primary key. |
| entryuuid | varchar(64) | EntryUuid på slettet DocumentEntry. |
| uniqueid | varchar(64) | UniqueId på slettet DocumentEntry |
| deletion_status | varchar(64) | Status på sletningen. Kan være DELETED_FROM_REGISTRY , DELETED_FROM_REPOSITORY, eller DELETION_FROM_REPOSITORY_FAILED. |
| deletion_attempts | int(11) | Antal gange hvor sletning fra repository er gået galt. |
| creation_time | datetime(6) | Tidspunkt for indsættelse af rækken. |
Hver række i tabellen svarer til et slettet DocumentEntry. Ved indsættelse af en række bliver deletion_status sat til DELETED_FROM_REGISTRY, hvilket indikerer at dokumentet er slettet fra registry'et, men endnu ikke fra repository'et.
Sletning fra repository'et foregår ved at udvælge et antal rækker fra tabellen, hvor status enten er DELETED_FROM_REGISTRY, eller er DELETION_FROM_REPOSITORY_FAILED samtidig med at deletion_attempts er lavere end en vis grænse. Disse dokumenter slettes i repository'et, og rækkerne i deleted_documententries opdateres. Hvis sletningen går godt, så sættes deletion_status til DELETED_FROM_REPOSITORY, og sletningen af dette dokument En kørsel af repository slettejobbet vil hente alle rækker ud af tabellen og forsøge at slette en delmængde af disse fra OpenXDS. Hvis sletningen går godt, slettes rækkerne fra tabellen, og sletningen af disse dokumenter er færdig. Hvis sletningen mislykkes, sættes deletion_status til DELETION_FROM_REPOSITORY_FAILED, og deletion_attempts tælles én op.Værdien af den førnævnte grænse for antal sletningsforsøg er konfigurerbar. Se driftsvejledningen for flere detaljer om dette
deletion_attempts kolonnen vedligeholdes for at skabe overblik, og benyttes udelukkende af health endpointet.
Konfiguration af sletninger
XDSCleanup-servicen konfigureres med et antal oprydningskriterier , som beskriver hvilke dokumenter der skal slettes hvornår. Et oprydningskriterium består af en dokumenttype og en dokumentalder i måneder. Ved kørsel bliver der for hver specifikation udvalgt et antal dokumenter, som har den angivne type, og er ældre end den maksimale alder. Herefter slettes disse dokumenter. Derudover er der en oprydninge
Det er muligt at konfigurere sletning af dokumenter hørende til personer med status 90 (=døde). I opsætningen kan man angive hvor lang tid dokumenterne for disse personer skal gemmes.
Herudover er det muligt at konfigurere antallet af sletninger der skal foretages ved hver kørsel.
Beregning af dokumentalder
...
Sletning fra OpenXDS foregår ved at hente et batch af slettede dokumentmetadata fra deleted_documententries-tabellen, slette dem fra openxds, og derefter markere i slette rækkerne fra deleted_documententries-tabellen at sletningen er fuldført. Bemærk at der her indgår to databaser, så det er ikke tilstrækkeligt at udføre hele operationen i en transaktion. Hvis sletningen i repository'et mislykkes, så markeres sletningen som fejlet, og antallet af forsøgte sletninger forøges med én. Hvis antallet af forsøgte sletninger kommer over en vis grænse, så forsøges sletning ikke længere, og situationen kræver formentlig manuel indgriben.