Created
August 22, 2022 17:10
-
-
Save joergreichert/8d0c714cfb2d3c5a7eef1bdc0e9be097 to your computer and use it in GitHub Desktop.
Reproduce endless loop during erezeptabrechnungsdaten validation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import ca.uhn.fhir.context.FhirContext; | |
import ca.uhn.fhir.context.support.DefaultProfileValidationSupport; | |
import ca.uhn.fhir.validation.FhirValidator; | |
import de.abda.fhir.validator.core.support.IgnoreMissingValueSetValidationSupport; | |
import org.hl7.fhir.common.hapi.validation.support.CachingValidationSupport; | |
import org.hl7.fhir.common.hapi.validation.support.NpmPackageValidationSupport; | |
import org.hl7.fhir.common.hapi.validation.support.SnapshotGeneratingValidationSupport; | |
import org.hl7.fhir.common.hapi.validation.support.ValidationSupportChain; | |
import org.hl7.fhir.common.hapi.validation.validator.FhirInstanceValidator; | |
import org.hl7.fhir.r4.model.Bundle; | |
import org.junit.jupiter.api.Test; | |
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStreamReader; | |
import java.net.URL; | |
import java.net.URLConnection; | |
public class MemoryBugReproduceTest { | |
@Test | |
public void testMemory() throws IOException { | |
FhirContext fhirContext = FhirContext.forR4(); | |
NpmPackageValidationSupport npmPackageSupport = new NpmPackageValidationSupport(fhirContext); | |
// download via npm --registry https://packages.simplifier.net install de.gkvsv.eRezeptAbrechnungsdaten@1.2.0 | |
// or download via https://simplifier.net/packages/de.gkvsv.erezeptabrechnungsdaten/1.2.0/download (requires free login) | |
npmPackageSupport.loadPackageFromClasspath("classpath:package/de.gkvsv.erezeptabrechnungsdaten-1.2.0.tgz"); | |
ValidationSupportChain validationSupportChain = new ValidationSupportChain( | |
npmPackageSupport, | |
new DefaultProfileValidationSupport(fhirContext), | |
new SnapshotGeneratingValidationSupport(fhirContext), | |
new IgnoreMissingValueSetValidationSupport(fhirContext) | |
); | |
CachingValidationSupport validationSupport = new CachingValidationSupport(validationSupportChain); | |
FhirInstanceValidator instanceValidator = new FhirInstanceValidator(validationSupport); | |
instanceValidator.setAnyExtensionsAllowed(false); | |
instanceValidator.setNoTerminologyChecks(false); | |
FhirValidator fhirValidator = new FhirValidator(fhirContext); | |
fhirValidator.registerValidatorModule(instanceValidator); | |
URLConnection urlcon = new URL("https://raw.githubusercontent.com/DAV-ABDA/eRezept-Beispiele/main/Freitext-Verordnung/Freitext-Verordnung_V1/FT_V1_TA7_Sammelrechnung_Bundle.xml").openConnection(); | |
BufferedReader br = new BufferedReader(new InputStreamReader(urlcon.getInputStream())); | |
StringBuilder sb = new StringBuilder(); | |
String i; | |
while ((i = br.readLine()) != null) { | |
sb.append(i).append("\n"); | |
} | |
var content = sb.toString(); | |
var iParser = FhirContext.forR4().newXmlParser().setPrettyPrint(true); | |
var bundle = iParser.parseResource(Bundle.class, content); | |
fhirValidator.validateWithResult(bundle); | |
} | |
} |
will end in
19:08:13.952 [main] INFO ca.uhn.fhir.util.VersionUtil #84 - HAPI FHIR version 6.0.1 - Rev 2a70df1a11
19:08:13.969 [main] INFO ca.uhn.fhir.context.FhirContext #208 - Creating new FHIR context for FHIR version [R4]
19:08:18.413 [main] INFO ca.uhn.fhir.context.FhirContext #208 - Creating new FHIR context for FHIR version [R4]
19:08:18.550 [main] INFO ca.uhn.fhir.util.XmlUtil #75 - FHIR XML procesing will use StAX implementation 'Woodstox' version '6.2.7'
19:08:19.277 [main] INFO ca.uhn.fhir.context.FhirContext #208 - Creating new FHIR context for FHIR version [R5]
19:08:19.508 [main] INFO c.u.f.c.s.DefaultProfileValidationSupport #327 - Loading structure definitions from classpath: /org/hl7/fhir/r4/model/profile/profiles-resources.xml
19:08:21.028 [main] INFO c.u.f.c.s.DefaultProfileValidationSupport #327 - Loading structure definitions from classpath: /org/hl7/fhir/r4/model/profile/profiles-types.xml
19:08:21.177 [main] INFO c.u.f.c.s.DefaultProfileValidationSupport #327 - Loading structure definitions from classpath: /org/hl7/fhir/r4/model/profile/profiles-others.xml
19:08:21.436 [main] INFO c.u.f.c.s.DefaultProfileValidationSupport #327 - Loading structure definitions from classpath: /org/hl7/fhir/r4/model/extension/extension-definitions.xml
19:08:23.494 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Bundle
19:08:24.073 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_EX_ERP_TA7_Dateinummer
19:08:24.714 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Composition
19:08:25.190 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_EX_TA7_IK_Empfaenger
19:08:25.765 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_EX_TA7_IK_Kostentraeger
19:08:26.084 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_List
19:08:26.561 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Bundle
19:08:26.563 [main] WARN o.h.f.c.h.v.s.SnapshotGeneratingValidationSupport #65 - Detected circular dependency, already generating snapshot for: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Bundle
19:08:26.576 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Composition
19:08:26.577 [main] WARN o.h.f.c.h.v.s.SnapshotGeneratingValidationSupport #65 - Detected circular dependency, already generating snapshot for: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Composition
19:08:26.598 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_List
19:08:26.599 [main] WARN o.h.f.c.h.v.s.SnapshotGeneratingValidationSupport #65 - Detected circular dependency, already generating snapshot for: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_List
19:08:26.623 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Rechnung
19:08:27.154 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_EX_ERP_TA7_Abrechnungszeitraum
19:08:27.445 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_EX_ERP_RezeptBundleReferenz
19:08:27.786 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_List
19:08:28.302 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Bundle
19:08:28.648 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Composition
19:08:28.899 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_List
19:08:28.900 [main] WARN o.h.f.c.h.v.s.SnapshotGeneratingValidationSupport #65 - Detected circular dependency, already generating snapshot for: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_List
19:08:28.906 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Bundle
19:08:28.907 [main] WARN o.h.f.c.h.v.s.SnapshotGeneratingValidationSupport #65 - Detected circular dependency, already generating snapshot for: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Bundle
19:08:28.913 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Composition
19:08:28.914 [main] WARN o.h.f.c.h.v.s.SnapshotGeneratingValidationSupport #65 - Detected circular dependency, already generating snapshot for: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Composition
19:08:28.948 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_List
19:08:29.250 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Bundle
19:08:29.627 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Composition
19:08:29.830 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_List
19:08:29.831 [main] WARN o.h.f.c.h.v.s.SnapshotGeneratingValidationSupport #65 - Detected circular dependency, already generating snapshot for: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_List
19:08:29.839 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Bundle
19:08:29.840 [main] WARN o.h.f.c.h.v.s.SnapshotGeneratingValidationSupport #65 - Detected circular dependency, already generating snapshot for: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Bundle
19:08:29.848 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Composition
19:08:29.849 [main] WARN o.h.f.c.h.v.s.SnapshotGeneratingValidationSupport #65 - Detected circular dependency, already generating snapshot for: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Composition
19:08:29.872 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_List
19:08:30.157 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Bundle
19:08:30.552 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Composition
19:08:30.742 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_List
19:08:30.742 [main] WARN o.h.f.c.h.v.s.SnapshotGeneratingValidationSupport #65 - Detected circular dependency, already generating snapshot for: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_List
19:08:30.746 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Bundle
19:08:30.747 [main] WARN o.h.f.c.h.v.s.SnapshotGeneratingValidationSupport #65 - Detected circular dependency, already generating snapshot for: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Bundle
19:08:30.752 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Composition
19:08:30.753 [main] WARN o.h.f.c.h.v.s.SnapshotGeneratingValidationSupport #65 - Detected circular dependency, already generating snapshot for: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_Composition
19:08:30.778 [main] INFO o.h.f.c.h.v.v.VersionSpecificWorkerContextWrapper #103 - Generating snapshot for StructureDefinition: https://fhir.gkvsv.de/StructureDefinition/GKVSV_PR_TA7_Sammelrechnung_List
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
uses