Use lazy fetch in MavenResolverIO
when reading POMs from the DB
#472
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Specifically, this PR makes the following changes:
lazyFetch()
inreadFromDB()
to avoid loading lots of table rows in a list and causingOOM
.AutoCommit
to false when creating a PG connection in the REST API. This is needed as PG doesn't like non-zero fetch size andautocommit == false
together. See this for more info.Motivation and context
As described in #471, the Java REST API currently crashes due to
OOM
, which is caused by reading all package versions' metadata into memory. This should be done lazily, i.e., one by one.Testing
Tested with the DC and within the IDE.
Also, with this fix, in production, the Java REST API is now responsive and the
OOM
exception does not occur.