cqframework / cqframework/cqf-tooling
Updated RefreshIG to utilize HttpClientUtils, and restore multithreading and verbose console logging
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 22
- Forks
- 26
- PR merge metrics
- No merged PRs in 30d
Description
Recent changes to RefreshIG abandoned work done to AbstractBundler, MeasureBundler, and PlanDefinitionBundler, which in turn abandoned HttpClientUtils. The new refresh process is fine, but I'd like to restore a few things.
-
Multithreading: The refresh process benefits from the fact that each bundle doesn't rely on any sequential ordering in processing of another bundle. Each can be assigned a task and sent to an executorservice.
-
HttpClientUtils: This class is more than just sending http requests to fhir servers, it maintains a connection pool, has extensive logging for the user, saves failed requests to a dedicated log file for further review by users, and prevents flooding hapi-fhir to the point of crashing it. The http requests are queued and executed as a final step in RefreshIG so that all requests can be conveyed to the user report-style. The queue style approach also acts to free up the measure refresh process so it is not reliant on waiting for responses from servers before proceeding to the next file.
-
Verbose logging: A command passed into the tool enabled processes that gave the user further information about anything from measure refresh failures to cql errors.
We should adopt these optimizations and features, which was built upon many months worth of work, into the new PackageMeasure/PackageMeasures approach.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the new PackageMeasure/PackageMeasures approach and compare it with RefreshIG, AbstractBundler, MeasureBundler, and PlanDefinitionBundler. Read HttpClientUtils to understand the requested connection pooling, queued requests, logging, and failure handling, then determine how multithreading and verbose logging should be restored. Done means the new refresh flow provides these behaviors without losing its current processing.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- tooling
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100