Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
titleEksempel på status service
{
   "DataSetLog":"OK",
   "SFTP YDER_EXTERNAL":"OK",
   "SFTP YDER":"OK",
   "Database":"OK",
   "version":"1.1.3-SNAPSHOT",
   "Processing":"Dataprocessering OK"
}

##

Statusservicen giver udslag i følgende situationer, som vil sætte support igang

  • En filsæt validering fejler - dvs. at den senest modtagne fil er afvist som helhed [Processing]
  • En Yderevent-validering fejler - dvs. at enkelte Yderevents i en modtagen fil ikke opfylder validitets-regler. [DataSetLog]
    Hvis en Yderevent er fejlet i et load, så vil fejl markeringen først blive fjernet når man manuelt har fjernet linierne fra datasetlog efter håndtering af problemet.
  • Afhængighedsproblemer (fx. ingen forbindelse til databasen eller SFTP server) [SFTP YDER_EXTERNAL, SFTP YDER og Database]
  • Et modtaget filsæt afviger volumenmæssigt for meget i forhold til seneste succesfulde filsæt (kan konfigureres). [Processing]

Svar ved fejl i behandling af fil

Ved fejl under behandlingen af en fil, vil statusservicen svare en http 500 og melde fejl indtil fejlen er afhjulpet gennem modtagelsen af en fil der ikke indeholder fejl.

Den modtagne fil fejler delvist

Hvis den modtagne fil indeholder fejl i enkelte entiteter, f.eks. et felt i en Yder der er for langt, vil disse fejl blive registreret.

Svaret fra statusservicen vil her vise informationen som

Code Block
Built-name: yderindlaeser
Built-version: 1.1.
Built-date: 2021-03-24T10:34:05Z

Register fejl:
OvrigeSpecialer with id 8501AEBF19F00002-01 is failing.
Latest failure is: Skipping Ovrigespecialer at location:  line 20 - due to Value of field SpecTxt (Denne er alt for lang Denne er alt for lang Denne er alt for lang Denne er alt for lang) exceeds the maxlength of 60
KommuneKoder with id 8501AEBF19F00002-01 is failing.
Latest failure is: Skipping Kommunekoder at location:  line 22 - due to Value of field KomTxt (Denne er alt for lang Denne er alt for lang Denne er alt for lang Denne er alt for lang) exceeds the maxlength of 60
...
OvrigeTelefonnumrePerson with id 9001AEBF19F00002-12345678 is failing.
Latest failure is: Skipping OvrigeTelefonnumrePerson at location:  line 41 - due to Value of field BemerkningerPerson (Denne er alt for lang Denne er alt for lang Denne er alt for lang Denne er alt for lang) exceeds ...

Latest DataSet fejl:
Skipping Ovrigespecialer - Skipping Ovrigespecialer at location:  line 20 - due to Value of field SpecTxt (Denne er alt for lang Denne er alt for lang Denne er alt for lang Denne er alt for lang) exceeds the maxlength of 60
Skipping Kommunekoder - Skipping Kommunekoder at location:  line 22 - due to Value of field KomTxt (Denne er alt for lang Denne er alt for lang Denne er alt for lang Denne er alt for lang) exceeds the maxlength of 60
...
Skipping OvrigeTelefonnumrePerson - Skipping OvrigeTelefonnumrePerson at location:  line 41 - due to Value of field BemerkningerPerson (Denne er alt for lang Denne er alt for lang Denne er alt for lang Denne er alt for lang) exceeds ...

Latest run dataset: 
- UUID: b1470ce7-aeb0-48d3-b526-0a7846bea579
- Filename: FourYder_wrongsubs.xml
- DataProcessingStart: 2021-03-24T10:39:43Z
- DataProcessingEnd: 2021-03-24T10:39:46Z
- Status: Completed with 11 log(s)

Dette indhold fortæller at der er fejl på registeret, som opremset under Register fejl:, og der er fejl i den senest modtagne fil, som opremset under Latest DataSet fejl:.

Hvis en efterfølgende fil, ikke indeholder fejl, men heller ikke retter op på de registrerede register fejl, vil statusservicen vise

Code Block
Built-name: yderindlaeser
Built-version: 1.1.
Built-date: 2021-03-24T10:34:05Z

Register fejl:
OvrigeSpecialer with id 8501AEBF19F00002-01 is failing.
Latest failure is: Skipping Ovrigespecialer at location:  line 20 - due to Value of field SpecTxt (Denne er alt for lang Denne er alt for lang Denne er alt for lang Denne er alt for lang) exceeds the maxlength of 60
KommuneKoder with id 8501AEBF19F00002-01 is failing.
Latest failure is: Skipping Kommunekoder at location:  line 22 - due to Value of field KomTxt (Denne er alt for lang Denne er alt for lang Denne er alt for lang Denne er alt for lang) exceeds the maxlength of 60
...
OvrigeTelefonnumrePerson with id 9001AEBF19F00002-12345678 is failing.
Latest failure is: Skipping OvrigeTelefonnumrePerson at location:  line 41 - due to Value of field BemerkningerPerson (Denne er alt for lang Denne er alt for lang Denne er alt for lang Denne er alt for lang) exceeds ...

Latest DataSet fejl:

Latest run dataset: 
- UUID: 89028258-1286-46c7-b0a1-bc79daade75d
- Filename: FourYderX.xml
- DataProcessingStart: 2021-03-24T10:48:37Z
- DataProcessingEnd: 2021-03-24T10:48:38Z
- Status: Completed

Her er der altså ikke detekteret fejl i den senest modtagne fil, men der er ubehandlede fejl i registret, hvilket betyder at statusservicen stadig melder http 500.

Aktion

Der skal tages kontakt til Praksys, der er dataleverandør, for at få dem til at levere en fil der ikke indeholder fejl.

Når der på et tidspunkt modtages en fil der udbedre de registrerede fejl, vil statusservicen igen melde http 200 og vise et svar som beskrevet i Svar ved ok.

Aktion ved manglende nulstillen af registrerede fejl.

Som det kan ses i eksemplerne, så vises der en nøgle for de entiteter hvorpå der er registreret en fejl.

Når der modtages en entitet med samme nøgle hvor fejlen er udbedret, vil Yder indlæseren nulstille den fejl der var registreret på nøglen.

Der vil kunne forekomme situationer, hvor nøglen kan være ændret som følge af udbedring af en registreret fejl. I sådanne tilfælde, vil Yder indlæseren ikke selv kunne nulstille fejlen og det er nødvendigt at foretage en manuel nulstilling.

Beskrivelsen af register fejlen på formen

Code Block
OvrigeTelefonnumrePerson with id 9001AEBF19F00002-12345678 is failing.

fortæller at det er en entitet af typen OvrigeTelefonnumrePerson med entitets id 9001AEBF19F00002-12345678 hvorpå der er registreret en fejl.

Hvis det f.eks. fra Praksys er godtgjort at fejlen er rettet, men den registrerede fejl ikke nulstilles kan det gøres ved at udføre denne SQL mod databasen:

Code Block
DELETE FROM YDS_registerfejl WHERE EntityID = "9001AEBF19F00002-12345678" AND EntityType = "OvrigeTelefonnumrePerson";

Dette vil fjerne registreringen af fejlen og derved betyde at statusservicen, hvis der ikke er yderligere fejl, vil svare http 200.

Den modtagne fil fejler som helhed

Hvis den modtagne fil ikke er i det forventede format eller dens kontrol felter ikke stemmer med indholdet, så vil hele filen fejle og der vil ikke blive indlæst data fra filen.

Her vil statusservicen melde en fejl som

Code Block
Built-name: yderindlaeser
Built-version: 1.1.1-SNAPSHOT
Built-date: 2021-03-24T06:21:45Z

Register fejl:
FIL with id STAMDATAFIL is failing.
Latest failure is: java.io.IOException: The file uses an unsupported encoding

Latest DataSet fejl:
Stopping error - java.io.IOException: The file uses an unsupported encoding

Latest run dataset: 
- UUID: f6a82d26-c27a-4112-b3ac-b25e5c5eafef
- Filename: notxml.xml
- DataProcessingStart: 2021-03-24T06:34:39Z
- DataProcessingEnd: 2021-03-24T06:34:39Z
- Status: Failed with error

eller

Code Block
Built-name: yderindlaeser
Built-version: 1.1.1-SNAPSHOT
Built-date: 2021-03-24T06:21:45Z

Register fejl:
FIL with id STAMDATAFIL is failing.
Latest failure is: org.xml.sax.SAXException: Not correct number of elements in file AntPost=74 differs from counted records: 4

Latest DataSet fejl:
Stopping error - org.xml.sax.SAXException: Not correct number of elements in file AntPost=74 differs from counted records: 4

Latest run dataset: 
- UUID: 25383cad-92d8-4b7e-823c-2152d404b03d
- Filename: FourYder_antpost.xml
- DataProcessingStart: 2021-03-24T06:38:26Z
- DataProcessingEnd: 2021-03-24T06:38:26Z
- Status: Failed with error

Aktion

Svar ved fejl i behandling af fil

Ved fejl under behandlingen af en fil, vil statusservicen svare en http 500 og melde fejl indtil fejlen er afhjulpet gennem modtagelsen af en fil der ikke indeholder fejl.

Den modtagne fil fejler delvist

Hvis den modtagne fil indeholder fejl i enkelte entiteter, f.eks. et felt i en Yder der er for langt, vil disse fejl blive registreret.

Svaret fra statusservicen vil her vise informationen som følger, og http status vil være 500.

Code Block
{
   "DataSetLog":"Der er fejlede linjer i DatasetLog tabellen",
   "SFTP YDER_EXTERNAL":"OK",
   "SFTP YDER":"OK",
   "Database":"OK",
   "version":"1.2.2-SNAPSHOT",
   "Processing":"Dataprocessering OK"
}

Dette indhold fortæller at der er fejl i forbindelse med indlæsning af datasettet (Elementet DataSetLog)

Man kan herefter se i yder databasen for at få præciseset hvilken fejl det drejer sig om.


Code Block
select * from YDS_datasetlog;
+-----+--------------------------------------+---------+----------------------------------------------------------------+-----------------+---------------------+
| PID | DataSetUUID                          | LogType | LogMessage                                                     | DataSetLocation | LogTime             |
+-----+--------------------------------------+---------+----------------------------------------------------------------+-----------------+---------------------+
|   1 | e4c3abf3-c52e-42a8-bd20-a3855a05880b | NULL    | Value of field YdernrYder (0000001) exceeds the maxlength of 6 | 6               | 2023-12-20 07:50:41 |
+-----+--------------------------------------+---------+----------------------------------------------------------------+-----------------+---------------------+


Man kan finde de præcise linier der vedrører en given fil, ved at udføre følgende sql, hvor filename er det aktuelle filnavn:

Code Block
select * from YDS_datasetlog where DataSetUUID = (select UUID from YDS_dataset where FileName = "filename");


Aktion

Der skal tages kontakt til Praksys, der er dataleverandør, for at få dem til at levere en fil der ikke indeholder fejl.

Når denne fil er indlæst kan de relaterede linier i YDS_datasetlog slettes manuelt. Så længe der er linier i YDS_datasetlog vil statusservicen svarer 500 i http status.

Den modtagne fil fejler som helhed

Hvis den modtagne fil ikke er i det forventede format eller dens kontrol felter ikke stemmer med indholdet, så vil hele filen fejle og der vil ikke blive indlæst data fra filen.

Her vil statusservicen melde en fejl som følger, og http status vil være 500.

Code Block
{
   "DataSetLog":"OK",
   "SFTP YDER_EXTERNAL":"OK",
   "SFTP YDER":"OK",
   "Database":"OK",
   "version":"1.2.2-SNAPSHOT",
   "Processing":"Fejl i processering af filen: testfil1.xml. Genindlæs ved at placere filen i input folderen. Fejlens stacktrace kan ses på exception endpointet"
}

Dette indhold fortæller at der er fejl i forbindelse med processering af data (Elementet Processing)

Som angivet i status beskeden kan man herefter kalde et andet endpoint, for at få mere information om fejlen, der er opstået:

Code Block
curl -v http://localhost:8080/yderindlaeser/exception

dk.nsp.sdm.common.route.components.ProcessingException: Fejl i input-filen: Antal linier: 1, matcher ikke antal poster i footer: 4
	at dk.nsp.sdm.yder.service.impl.YderEventParser.doSumValidation(YderEventParser.java:102)
	at dk.nsp.sdm.yder.service.impl.YderEventParser.doDatasetStructureValidation(YderEventParser.java:61)
	at dk.nsp.sdm.common.route.components.DatasetValidator.doValidation(DatasetValidator.java:64)
	at dk.nsp.sdm.common.route.components.DatasetValidator.access$100(DatasetValidator.java:16)
	at dk.nsp.sdm.common.route.components.DatasetValidator$1.process(DatasetValidator.java:40)
	at org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)
	at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
	at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
	at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
	at org.apache.camel.processor.FilterProcessor.process(FilterProcessor.java:57)
	at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
	at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:76)
	at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148)
	at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
	at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
	at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
	at org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:454)
	at org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:223)
	at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:187)
	at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:174)
	at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:101)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)


Aktion

Man skal have undersøgt, hvad der er sket. 

Der skal højst sandsynligvis Der skal tages kontakt til Praksys, der er dataleverandør, for at få dem til at levere en fil der ikke indeholder fejl.

Når der er modtaget en fil uden fejl vil statusservicen igen svare ok som beskrevet i Svar ved okfejl skal yder indlæseren genstartet. Så længe der en en alvorlig fejl sket, indlæses ikke yderligere filer.

Svar når ekstern afhængighed kan ikke tilgås

...

Hvis Yder databasen ikke er tilgængelig vil statusservicen melde en fejl som:som:

Code Block
{
   "DataSetLog":"OK",
   "SFTP YDER_EXTERNAL":"OK",
   "SFTP YDER":"OK",
   "Database":<TBD - SDS-6802>,
   "version":"1.1.3-SNAPSHOT",
   "Processing":"Dataprocessering OK"
}

Code Block
Built-name: yderindlaeser
Built-version: 1.1.1
Built-date: 2021-03-17T16:34:31Z

Database error:
Unable to connect to database due to Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/yder

Register fejl:


Latest DataSet fejl:

Aktion

Der skal tages kontakt til NSP Drift for at undersøge hvorfor databasen ikke er tilgængelig.

Manglende adgang til Praksys SFTP eller Ekstern levering SFTP

Hvis Praksys eller Ekstern levering SFTP serveren ikke er tilgængelig vil statusservicen melde en fejl som

Code Block
{
   "DataSetLog":"OK",
   "SFTP YDER_EXTERNAL":"OK",
   "SFTP YDER":"
Code Block
Built-name: yderindlaeser
Built-version: 1.1.1
Built-date: 2021-03-23T19:48:53Z

SFTP error:
Unable to connect to (S)FTP (sftp:foo@ydersftp:22/praksys) due to Auth fail
Unable to connect to (S)FTP (sftp:bar@ydersftpfoo@ydersftp:22/eksternpraksys) due to java.net.NoRouteToHostException: No route to host Auth fail

Register fejl:


Latest DataSet fejl:(Host unreachable)",
   "Database":"OK",
   "version":"1.2.2-SNAPSHOT",
   "Processing":"Dataprocessering OK"
}

Aktion

Der skal tages kontakt til NSP Drift for at undersøge hvorfor SFTP serveren ikke er tilgængelig

...