Introduktion

Formål

Dette dokument er rettet mod systemadministratorer og driftspersoner, som skal kunne håndtere driftsmæssige aspekter af programmet.

Driftsvejledningen indeholder information om XDSCleanup komponenten med hensyn til afvikling, konfiguration og overvågning.

Læsevejledning

Læseren forventes at have kendskab til drifts-setuppet vedr. XDS Registry og det tilhørende XDB repository.

Dokumenthistorik

Version

Dato

Ansvarlig

Beskrivelse

0.1

28-02-2022

KvalitetsIT

Initiel udgave

Afvikling

XDSCleanup udstiller et antal http-endpoints. Dette afsnit beskriver hvilke endpoints der er, og deres returkoder og fortolkning af svaret.

Det forventes at der kun deployes én instans af XDSCleanup. Servicen tjekker om den selv er i gang med at udføre en oprydning, inden den går i gang, men den tjekker ikke om eventuelle andre instanser er i gang.

Cleanup

Primært endpoint, som starter en iteration af oprydningen: Eksempel på kald:

curl -i localhost:8060/xdscleanup/cleanup

Der returneres følgende http-statuskoder:

StatuskodeFortolkning
200 OKSletningen gik godt. Det vil fremgå af applikationloggen, hvad der er slettet.
400 Bad RequestRequestet blev afvist, da et andet request allerede var i gang.
500 Internal Server ErrorNoget gik galt under sletning. Applikationsloggen bør inspiceres for at fastslå problemet.

Response-body'en vil indeholde yderligere information om udfaldet af oprydningen. Bemærk at statuskode 200 godt kan indikere 'delvis succes', f.eks. hvis der er udført en delvis sletning fra registry'et, men requestet tog for lang tid til at køre færdigt.

Nulstilling af fejlede repository-sletninger

Tabellen deleted_documentries holder styr på hvor langt sletningen af dokumenter er kommet (se Design og Arkitektur for flere detaljer). Hvis sletning af et dokument er mislykkes et antal gange, vil XDSCleanup-servicen ikke længere forsøge at slette det dokument. Det er muligt at nulstille disse mislykkede sletninger, og dermed få XDSCleanup-servicen til at forsøge at udføre dem igen.Dette kan være nyttigt for at rette op på fejlsituationer.

Nulstilling udføres ved at angive en query-parameter i requestet:


curl -i localhost:8060/xdscleanup/cleanup?reset-failed-deletions=true


Hvis parameteren gives med, så nulstilles alle mislykkede sletninger i deleted_documententries-tabellen, hvorefter requestet udføres som normalt.

Health

Overvågnings-endpoint, som bruges til at overvåge komponentens sundhedstilstand. Eksempel på kald:

curl -i localhost:8060/xdscleanup/health

Der returneres følgende http-statuskoder:

StatuskodeFortolkning
200 OKServicen er i sund tilstand.
500 Internal Server ErrorServicen er i usund tilstand. Responset indeholder information om årsagen. Applikationsloggen indeholder yderligere information.

Body'en indeholder en json-struktur, der beskriver hvilke dele af systemet der er blevet tjekket, og deres tilstand. Eksempel hvor tjenesten er i sund tilstand:

{
  "version": "42e17e1cb3ea8d8abd21d87252b14a136020e7c0",
  "registry.db": "OK: 0 entries currently enqueued for repository deletion.",
  "repository.db": "OK"
}

Bemærk at det er angivet hvor mange dokumenter der pt. ligger i kø til sletning.

Eksempel hvor tjenesten er i usund tilstand:

{
  "version": "42e17e1cb3ea8d8abd21d87252b14a136020e7c0",
  "registry.db": "ERROR: 7 entries could not be deleted from repository.",
  "repository.db": "OK" 
}

Konfiguration

Grundlæggende konfiguration foregår ved redigering i filen /compose/configuration/xdscleanup.properties.

I filen skal følgende properties være definerede:

PropertyBeskrivelse
datasource.nxrg.jndi.nameJNDI navnet på den datasource der giver adgang til NXRG databasen.
datasource.openxds.jndi.nameJNDI navnet på den datasource der giver adgang til OpenXDS databasen.
deletion.document.cleanup.specificationsKomma-separeret liste af oprydningskriterier. Angiver hvilke dokumenttyper der slettes, og hvornår de slettes. Et oprydningskriterium har formen <code-name>#<code-scheme>#<months-to-keep>, hvor <code-name> og <code-scheme> angiver dokumenttypen der skal slettes, og <months-to-keep> angiver hvor mange måneder der skal gå, før sletningen udføres. Værdien af <months-to-keep> skal være et positivt heltal. De to andre værdier kan være vilkårlige strenge, så længe de ikke indeholder kommaer.
deletion.batchsizeAntal dokumenter der forsøges slettet i registry per dokumenttype i en kørsel af jobbet.
deletion.repository.batchsizeAntal dokumenter der forsøges slettet i repository i en kørsel af jobbet.
deletion.max.attemptsAntal gange sletning fra repository'et forsøges, før sletningen markeres som 'fejlet'.
deletion.in.clause.max.sizeMaksimal størrelse på in-clause i sql-queries.
allowed.execution.time.minutes

Antal minutter, som en oprydningsiteration (et request til /cleanup) maksimalt må køre. Servicen indeholder checkpoints på passende steder, hvor køretiden tjekkes, og kørslen afsluttes hvis den maksimale køretid er overskredet.

Hvis køretiden overskrides, vil dette fremgå af response-body'en og applikationsloggen.

Logning

XDSCleanup logger på standardout vha. log4j. Jobbet vil undervejs i kørslen udskrive information (på INFO-niveau) om, hvor mange dokumenter der er slettet i NXRG og OpenXDS. Eventuelle fejl vil blive logget på ERROR-niveau.

Nedenstående logudsnit viser et eksempel på, hvad der logges under en succesfuld kørsel:

2022-02-28 14:40:01,019 [INFO] dk.nsp.xdscleanup.ws.CleanupServlet - Attempting to run XDS Cleanup.
2022-02-28 14:40:01,020 [INFO] dk.nsp.xdscleanup.service.impl.CleanupServiceImpl - Performing iteration of XDS Cleanup ...
2022-02-28 14:40:01,020 [INFO] dk.nsp.xdscleanup.service.impl.CleanupServiceImpl - Preparing registry deletion.
2022-02-28 14:40:01,029 [INFO] dk.nsp.xdscleanup.service.impl.CleanupServiceImpl - Deleting DocumentEntries. Deletion parameters: [ typeCode: TypeCode[codeName=39289-4,codeScheme=2.16.840.1.113883.6.1], latestStartTime: 2021-12-28T13:40:01.020Z, batchSize: 3 ]
2022-02-28 14:40:01,497 [INFO] dk.nsp.xdscleanup.service.impl.CleanupServiceImpl - Deleted DocumentEntries are: [ DocumentEntry[entryId=1,entryUuid=urn:uuid:03437e9f-24ee-4ca3-81b5-bd9222b0a221,uniqueId=7365138326801008407.4732229697929786785.1638782612783], DocumentEntry[entryId=2,entryUuid=urn:uuid:523eb18f-10a3-4ec8-8518-1e33b6c54a54,uniqueId=6313982942207370191.4718769210813691557.1638782616933], DocumentEntry[entryId=3,entryUuid=urn:uuid:050fc787-17a1-4c07-91eb-adb61fefc31e,uniqueId=7503668617814493420.8306293344729713893.1638782619079] ]
2022-02-28 14:40:01,497 [INFO] dk.nsp.xdscleanup.service.impl.CleanupServiceImpl - Number of deleted DocumentEntries is: 3
2022-02-28 14:40:01,498 [INFO] dk.nsp.xdscleanup.service.impl.CleanupServiceImpl - Preparing repository deletion.
2022-02-28 14:40:01,499 [INFO] dk.nsp.xdscleanup.service.impl.CleanupServiceImpl - Deleting documents. Deletion parameters: [ batchSize: 6 ] 
2022-02-28 14:40:01,508 [INFO] dk.nsp.xdscleanup.service.impl.CleanupServiceImpl - Attempting to delete Documents: [ DeletedDocumentEntry[entryId=1,entryUuid=urn:uuid:03437e9f-24ee-4ca3-81b5-bd9222b0a221,uniqueId=7365138326801008407.4732229697929786785.1638782612783], DeletedDocumentEntry[entryId=2,entryUuid=urn:uuid:523eb18f-10a3-4ec8-8518-1e33b6c54a54,uniqueId=6313982942207370191.4718769210813691557.1638782616933], DeletedDocumentEntry[entryId=3,entryUuid=urn:uuid:050fc787-17a1-4c07-91eb-adb61fefc31e,uniqueId=7503668617814493420.8306293344729713893.1638782619079] ]
2022-02-28 14:40:01,509 [INFO] dk.nsp.xdscleanup.service.impl.CleanupServiceImpl - Attempting deletion for 3 Documents.
2022-02-28 14:40:01,548 [INFO] dk.nsp.xdscleanup.service.impl.CleanupServiceImpl - Documents deleted are: [ DeletedDocumentEntry[entryId=1,entryUuid=urn:uuid:03437e9f-24ee-4ca3-81b5-bd9222b0a221,uniqueId=7365138326801008407.4732229697929786785.1638782612783], DeletedDocumentEntry[entryId=2,entryUuid=urn:uuid:523eb18f-10a3-4ec8-8518-1e33b6c54a54,uniqueId=6313982942207370191.4718769210813691557.1638782616933], DeletedDocumentEntry[entryId=3,entryUuid=urn:uuid:050fc787-17a1-4c07-91eb-adb61fefc31e,uniqueId=7503668617814493420.8306293344729713893.1638782619079] ]
2022-02-28 14:40:01,548 [INFO] dk.nsp.xdscleanup.service.impl.CleanupServiceImpl - Number of deleted Documents is: 3
2022-02-28 14:40:01,548 [INFO] dk.nsp.xdscleanup.service.impl.CleanupServiceImpl - Documents not deleted are: [  ]
2022-02-28 14:40:01,548 [INFO] dk.nsp.xdscleanup.service.impl.CleanupServiceImpl - Number of not deleted Documents is: 0
2022-02-28 14:40:01,548 [INFO] dk.nsp.xdscleanup.service.impl.CleanupServiceImpl - Marking successful deletion.
2022-02-28 14:40:01,557 [INFO] dk.nsp.xdscleanup.service.impl.CleanupServiceImpl - XDS Cleanup iteration finished!

I dette eksempel køres med batchSize for registry 3 og batchsize 6 for repository, og det ses at der slettes tre DocumentEntries i registry'et, og derefter tre tilsvarende Documents i repository'et.