Make the eagerly loaded job dependencies and env variables to use the default fetch types #1174
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.
Entity graph loads the named attributes eagerly. This creates a very big list of returned rows when there are multiple layers of OneToMany relationships exist in a single query.
For example, if a single job has 5 job dependencies and 5 job environment variables. The number of returned rows of this entity graph is 155 = 25. This number grows very fast.
This change makes the job_dependencies and job_env_variables to use the default FetchType, which is LAZY. Then in the above example, at most, the number of returned rows is 1 + 5 + 5 if both getJobDependencies() and getJobEnvironmentVariables() are called.
This diff does not make any changes to the cluster, command and application resources since those are mostly safe.
There is a cost of this. By adopting this change, the number of query/db connection needed for getJobSpecification() will be increased to 3 instead of 1. Since this call is associated with every single job launch, it worth to acknowledge the cost.