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 |
0.2 | 10-10-2022 | KvalitetsIT | SDS-5785 |
Afvikling
XDSCleanup udstiller et antal http-endpoints. Dette afsnit beskriver hvilke endpoints der er, og deres returkoder og fortolkning af svaret.
Alle endpoints sørger for at håndtere samtidige kald.
Cleanup
Der findes følgende endpoint i to forskellige containere.
xdscleanup:
URL | Beskrivelse |
---|---|
<server>/xdscleanup/registry-timebased-cleanup/start | Starter et tidsbaseret registry oprydningsjob |
<server>/xdscleanup/registry-status90-cleanup/start | Starter et registry oprydningsjob for personer med status 90 |
<server>/xdscleanup/repository-cleanup/start | Starter et repository oprydningsjob |
xdscleanup-deprecated:
URL | Beskrivelse |
---|---|
<server>/xdscleanup-deprecated/deprecated-document-entries/start | Starter oprydning af udløbne aftaler og tilhørende associations. |
<server>/xdscleanup-deprecated/dangling-submissionsets/start | Starter oprydning af submissionsets der ikke er knyttet til associations |
Ovenstående endpoints kan returnere følgende http-statuskoder:
Statuskode | Fortolkning |
---|---|
200 OK | Sletningen (eller opbygningen af opgave stakken) gik godt. Det vil fremgå af applikationloggen, hvad der er slettet. |
500 Internal Server Error | Noget gik galt under sletning. Applikationsloggen bør inspiceres for at fastslå problemet. |
Status
Hver snitflade til oprydning, har en tilsvarende status snitflade, som returnerer statuskoden for seneste kørsel af oprydningsjobbet. Har oprydningsjobbet ikke kørt endnu, returneres statuskode 200.
Disse findes også i to containere.
xdscleanup:
URL |
---|
<server>/xdscleanup/registry-timebased-cleanup/status |
<server>/xdscleanup/registry-status90-cleanup/status |
<server>/xdscleanup/repository-cleanup/status |
xdscleanup-deprecated:
URL |
---|
<server>/xdscleanup-deprecated/deprecated-document-entries/status |
<server>/xdscleanup-deprecated/dangling-submissionsets/status |
Health
Overvågnings-endpoint, som bruges til at overvåge komponentens sundhedstilstand.
URL |
---|
<server>/xdscleanup/health |
Der returneres følgende http-statuskoder:
Statuskode | Fortolkning |
---|---|
200 OK | Servicen er i sund tilstand. |
500 Internal Server Error | Servicen 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.", "sdm.db": "OK: Database connnection available.", "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 (at least 5 attempts).", "sdm.db": "OK: Database connnection available.", "repository.db": "OK" }
I ovenstående eksempel er komponenten konfigureret til at melde fejl efter 5 mislykkede forsøg på at slette dokumenter.
Konfiguration
Konfiguration af jobbene i xdscleanup foregår ved redigering i filen /compose/configuration/xdscleanup.properties.
I filen skal følgende properties være definerede:
Property | Beskrivelse |
---|---|
datasource.nxrg.jndi.name | JNDI navnet på den datasource der giver adgang til NXRG databasen. |
datasource.openxds.jndi.name | JNDI navnet på den datasource der giver adgang til OpenXDS databasen. |
datasource.sdm.jndi.name | JNDI navnet på den datasource der giver adgang til SDM databasen (v2_Person tabellen). |
deletion.document.cleanup.specifications | Komma-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.registry.batchsize | Antal dokumenter der forsøges slettet i registry i en kørsel. |
deletion.repository.batchsize | Antal dokumenter der forsøges slettet i repository i en kørsel. |
deletion.max.attempts | Antal gange sletning fra repository'et forsøges, før health endpointet vil melde fejl. |
deletion.in.clause.max.size | Maksimal størrelse på in-clause i sql-queries. |
deletion.save.status90.docs | Angiver en periode tilbage i tiden hvor dokumenter hørende til personer med status 90 kan slettes. Eksempler på værdier er: "2Y" (for 2 år) "12M" (for 12 måneder) "90D" (for 90 dage) |
desired.execution.duration | Ønsket udførselstid for kørsler af oprydningsjobs. Angives i ISO-8601 formattet. Fx 'PT20S' (20 sekunder) Et kald vil køre oprydninger indtil den konfigurerede tid er gået, eller der ikke er flere opgaver på stakken. |
Konfiguration af jobbene i xdscleanup-deprecated foregår ved redigering i filen /compose/configuration/xdscleanup-deprecated.properties.
I filen skal følgende properties være definerede:
Property | Beskrivelse |
---|---|
datasource.nxrg.jndi.name | JNDI navnet på den datasource der giver adgang til NXRG databasen. |
deletion.registry.batchsize | Antal dokumenter der forsøges slettet i registry i en kørsel. |
deletion.max.attempts | Antal gange sletning fra repository'et forsøges, før health endpointet vil melde fejl. |
deletion.in.clause.max.size | Maksimal størrelse på in-clause i sql-queries. |
desired.execution.duration | Ønsket udførselstid for kørsler af oprydningsjobs. Angives i ISO-8601 formattet. Fx 'PT20S' (20 sekunder) Et kald vil køre oprydninger indtil den konfigurerede tid er gået, eller der ikke er flere opgaver på stakken. |
deletion.deprecated.document.cleanup.typecodes | Liste af typecodes slettejobbet deprecated-document-entries tager fat i. Angives som komma-separeret liste. Eksempel: 39289-4,39290-2 |
deletion.deprecated.document.cleanup.days | Angiver det antal dage, hvor et dokument med status 'Deprecated' slettes af jobbet deprecated-document-entries. Angives som heltal. Eksempel: 60 |
deletion.deprecated.document.cleanup.limit | Angiver limit til SQL for det job der henter deprecatede dokumenter Default værdi: 10000 |
deletion.dangling.submissionsets.cleanup.limit | Angiver limit til SQL for det job der henter dangling submissionsets Default værdi: 10000 |
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 ved kørsler af registry-timebased-cleanup:
2024-02-20 10:45:53,073 [INFO] dk.nsp.backgroundjob.ws.AbstractOperationsServlet - Starting RegistryTimeBasedCleanupServlet 2024-02-20 10:45:53,074 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Time Based Cleanup: Execution started. 2024-02-20 10:45:53,074 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Time Based Cleanup: Stack is empty 2024-02-20 10:45:53,076 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Time Based Cleanup: 2 items added to stack from TypeSpecificationBasedRegistryCleanupSupplier 2024-02-20 10:45:53,293 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Time Based Cleanup: 0 items added to stack from TypeAndTimeBasedRegistryCleanupSupplier 2024-02-20 10:45:53,301 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Time Based Cleanup: 15 items added to stack from TypeAndTimeBasedRegistryCleanupSupplier 2024-02-20 10:45:53,301 [INFO] dk.nsp.xdscleanup.stack.operation.RegistryBatchCleanupOperation - Registry Time Based Cleanup: Starting batch deletion of 5 entries. 2024-02-20 10:45:59,923 [INFO] dk.nsp.xdscleanup.stack.operation.RegistryBatchCleanupOperation - Registry Time Based Cleanup: Batch cleanup finished! deleted=5 Time spent: 6 seconds. 2024-02-20 10:45:59,924 [INFO] dk.nsp.xdscleanup.stack.operation.RegistryBatchCleanupOperation - Registry Time Based Cleanup: Deleted DocumentEntries are: [DocumentEntry[entryId=19,entryUuid=urn:uuid:cd4dfc2c-fd90-4e86-9c97-fc3c9bf1689d,uniqueId=5276244681184508606.7987529088012732814.1644933978680], DocumentEntry[entryId=6,entryUuid=urn:uuid:d4ab1ed2-3958-4198-9a30-613163fb8b3a,uniqueId=5745551251602451683.3935600351732515390.1638782620952], DocumentEntry[entryId=73,entryUuid=urn:uuid:82f0d0a0-9d0f-485b-82db-73acc01467dd,uniqueId=7391069964040269010.6606474661760645002.1644933987142], DocumentEntry[entryId=52,entryUuid=urn:uuid:46c1090a-56fb-4e76-a350-66bff690e7d4,uniqueId=5443441424951482166.3208201158191659533.1644933984508], DocumentEntry[entryId=53,entryUuid=urn:uuid:6cc6c1f1-8283-4f12-9eac-14631436e772,uniqueId=5439909451008163766.2904449482848880817.1644933984627]] 2024-02-20 10:45:59,924 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Time Based Cleanup: remaining=14 on stack 2024-02-20 10:45:59,927 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Time Based Cleanup: remaining=14 of type RegistryBatchCleanupOperation on stack 2024-02-20 10:45:59,927 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Time Based Cleanup: Execution finished. Time spent: 6 seconds
I dette eksempel køres med deletion.registry.batchsize=5 og desired.execution.duration=PT3S
Det ses at der i kørslen først lægges opgaver på stakken. Herefter slettes 5 dokumenter i registry'et.
Næste logudsnit viser et eksempel på, hvad der logges ved kørsler af registry-status90-cleanup:
2024-02-20 10:50:25,398 [INFO] dk.nsp.backgroundjob.ws.AbstractOperationsServlet - Starting RegistryStatus90CleanupServlet 2024-02-20 10:50:25,399 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Status 90 Cleanup: Execution started. 2024-02-20 10:50:25,399 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Status 90 Cleanup: Stack is empty 2024-02-20 10:50:25,400 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Status 90 Cleanup: 10 items added to stack from Status90RegistryCleanupSupplier 2024-02-20 10:50:28,677 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Status 90 Cleanup: 1 items added to stack from Status90RegistryPatientIdSuffixCleanupSupplier 2024-02-20 10:50:28,678 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Status 90 Cleanup: remaining=10 on stack 2024-02-20 10:50:28,679 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Status 90 Cleanup: remaining=9 of type Status90RegistryPatientIdSuffixCleanupSupplier on stack 2024-02-20 10:50:28,679 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Status 90 Cleanup: remaining=1 of type Status90RegistryPatientIdBatchCleanupSupplier on stack 2024-02-20 10:50:28,679 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Status 90 Cleanup: Execution finished. Time spent: 3 seconds
I denne kørsel lægges nye opgaver på stakken. Kørslen stopper før den når at slette dokumenter da de konfigurerede 3 sekunder er gået.
Til sidste logges antallet af de to typer af opgaver der ligger på stakken.
Næste logudsnit viser et eksempel på, hvad der logges ved kørsler af repository-cleanup:
2024-02-20 11:02:02,125 [INFO] dk.nsp.backgroundjob.ws.AbstractOperationsServlet - Starting RepositoryCleanupServlet 2024-02-20 11:02:02,126 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Repository Cleanup: Execution started. 2024-02-20 11:02:02,126 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Repository Cleanup: Stack is empty 2024-02-20 11:02:02,131 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Repository Cleanup: 3 items added to stack from RepositoryCleanupSupplier 2024-02-20 11:02:02,131 [INFO] dk.nsp.xdscleanup.stack.operation.RepositoryBatchCleanupOperation - Repository Cleanup: Starting batch deletion of 10 entries. 2024-02-20 11:02:05,554 [INFO] dk.nsp.xdscleanup.stack.operation.RepositoryBatchCleanupOperation - Repository Cleanup: Batch cleanup finished! deleted=10 Time spent: 3 seconds. 2024-02-20 11:02:05,554 [INFO] dk.nsp.xdscleanup.stack.operation.RepositoryBatchCleanupOperation - Repository Cleanup: Deleted documents are: [DeletedDocumentEntry[entryId=29,entryUuid=urn:uuid:8c074054-bc99-4553-ab66-4ef0d69955d1,uniqueId=5013066068983426981.14844101298205144.1644933981986], DeletedDocumentEntry[entryId=32,entryUuid=urn:uuid:176648da-9e4c-4310-9afa-426dddc6be69,uniqueId=7940194384163546428.4597640489576449153.1644933984979], DeletedDocumentEntry[entryId=12,entryUuid=urn:uuid:1e58be50-79c2-416d-a63e-cc86acf7eab5,uniqueId=6445224554063458139.752938790016863248.1644933983266], DeletedDocumentEntry[entryId=14,entryUuid=urn:uuid:104a6045-01b4-4300-b214-f8782fbf2021,uniqueId=6814624543862677988.440886245461280012.1644933983802], DeletedDocumentEntry[entryId=18,entryUuid=urn:uuid:f061a64a-ab72-451e-90f1-555000ce0b5c,uniqueId=6374947108306177790.694872682422027174.1644933985476], DeletedDocumentEntry[entryId=30,entryUuid=urn:uuid:43d40af3-953b-45dd-bcc3-781c1f3512f2,uniqueId=6102980928965576480.144763730808818554.1644933981073], DeletedDocumentEntry[entryId=13,entryUuid=urn:uuid:98aad0e4-7d16-4e90-b628-93f81f0a8366,uniqueId=6078866472321989594.7806293989192085883.1644933986953], DeletedDocumentEntry[entryId=25,entryUuid=urn:uuid:644b95d9-927f-4f28-b96f-de8b16ab778f,uniqueId=8450233303628819957.2074304039769587217.1644933978439], DeletedDocumentEntry[entryId=23,entryUuid=urn:uuid:56971f3c-357e-4b5c-a3ac-e7009b5edd6d,uniqueId=7771216615021121331.8228789047473557417.1644933981429]] 2024-02-20 11:02:05,559 [INFO] dk.nsp.xdscleanup.stack.operation.RepositoryBatchCleanupOperation - Repository Cleanup: Batch marked as completed 2024-02-20 11:02:05,559 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Repository Cleanup: remaining=2 on stack 2024-02-20 11:02:05,559 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Repository Cleanup: remaining=2 of type RepositoryBatchCleanupOperation on stack 2024-02-20 11:02:05,559 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Repository Cleanup: Execution finished. Time spent: 3 seconds
I dette eksempel køres med deletion.repository.batchsize=10,
I kørslen lægges 3 nye operationer på stakken. Herefter, slettes det første batch fra repository'et.
Næste logudsnit viser et eksempel på, hvad der logges ved kørsler af deprecated-document-entries:
I dette eksempel slettes 12 deprecatede dokumenter.
Næste logudsnit viser et eksempel på, hvad der logges ved kørsler af dangling-submissionsets:
2024-04-09 08:10:48,776 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Dangling SubmissionSets Cleanup: 1 new operations added to stack from DanglingSubmissionSetsCleanupSupplier 2024-04-09 08:10:48,791 [INFO] dk.nsp.xdscleanup.stack.registry.submissionsets.RegistrySubmissionSetsBatchCleanupOperation - Registry Dangling SubmissionSets Cleanup: Batch cleanup finished! deleted=8 Time spent: 0 seconds. 2024-04-09 08:10:48,792 [INFO] dk.nsp.xdscleanup.stack.registry.submissionsets.RegistrySubmissionSetsBatchCleanupOperation - Registry Dangling SubmissionSets Cleanup: Deleted SubmissionSets are: [SubmissionSet[entryId=83,entryUuid=urn:uuid:f62e5064-2248-432c-887c-67ed34e03717], SubmissionSet[entryId=11,entryUuid=urn:uuid:e00461b1-d41e-400a-8976-5f0737a746d4], SubmissionSet[entryId=77,entryUuid=urn:uuid:9c806c3a-1e8c-461c-abbc-cc96015da8c5], SubmissionSet[entryId=81,entryUuid=urn:uuid:f9b0ea5a-85f8-4baa-88f0-2ac994e4c445], SubmissionSet[entryId=71,entryUuid=urn:uuid:99c7d198-ac07-42ba-9400-9c22ca32ab5c], SubmissionSet[entryId=79,entryUuid=urn:uuid:e1aabb27-57ee-4bee-87c8-ec700b37b5d8], SubmissionSet[entryId=75,entryUuid=urn:uuid:14c58541-cd56-4bed-806b-4f55adbb1568], SubmissionSet[entryId=73,entryUuid=urn:uuid:db4c8577-9aac-4849-9ec8-1e825b11b26e]] 2024-04-09 08:10:48,792 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Dangling SubmissionSets Cleanup: 0 new operations added to stack from RegistrySubmissionSetsBatchCleanupOperation 2024-04-09 08:10:48,792 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Dangling SubmissionSets Cleanup: remaining=0 on stack 2024-04-09 08:10:48,792 [INFO] dk.nsp.backgroundjob.service.StackedOperationsService - Registry Dangling SubmissionSets Cleanup: Execution finished. Time spent: 0 seconds
I dette eksempel slettes 8 dangling submissionsets.