CMSgov / hpt-validator

Validation library for CMS Hospital Price Transparency machine-readable files
Other
4 stars 5 forks source link

Match metadata paths in JSON parser #55

Closed mint-thompson closed 2 months ago

mint-thompson commented 2 months ago

Match metadata paths in JSON parser

Problem

Node may run out of available memory if input JSON contains large top-level elements that are matched by the parser's $.* path.

Solution

Specify paths for defined metadata elements instead of matching all top-level elements. This allows the parser to skip undefined elements, which reduces memory usage for parsing.

Result

Validator will be able to run on JSON files containing large top-level elements without exhausting available memory.

Test Plan

Code was tested using JSON HPT MRF that contained its standard charge information in a top-level element with a key not defined by the schema. The file was large enough such that prior to the change, Node ran out of heap space. Specifically, the file was 1GB, and Node was configured with the default heap size. After the change, the validator was able to finish running and return a result object.