Specifically, this PR makes the following changes:
Use JOOQ's lazyFetch() in readFromDB() to avoid loading lots of table rows in a list and causing OOM.
Set JDBC AutoCommit to false when creating a PG connection in the REST API. This is needed as PG doesn't like non-zero fetch size and autocommit == 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.
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.