Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Increase java-quarkus container memory limit #231

Merged
merged 1 commit into from
Oct 24, 2023

Conversation

thepetk
Copy link
Contributor

@thepetk thepetk commented Oct 17, 2023

What does this PR do?:

As it is mentioned in devfile/api#1293 the checks of odov3 and odov2 are failing because we reach the memory limit of the container when we are trying to build the quarkus application.

I've managed to fix this issue by increasing the component memory limit to 1024Mi.

Which issue(s) this PR fixes:

fixes devfile/api#1293

PR acceptance criteria:

  • Contributing guide
    Have you read the devfile registry contributing guide and followed its instructions?
  • Test automation
    Does this repository's tests pass with your changes?
  • Documentation
    Does any documentation need to be updated with your changes?
  • Check Tools Provider
    Have you tested the changes with existing tools, i.e. Odo, Che, Console? (See devfile registry contributing guide on how to test changes)

How to test changes / Special notes to the reviewer:

You can reproduce and test the fix by running locally the test/check_odov2.sh (the instructions are in the bug issue)

@maxandersen
Copy link
Collaborator

What has changed to now require more memory?

@maxandersen
Copy link
Collaborator

Note 512 mb is tiny anyways for a dev build setup so makes sense just curious what caused out of memory

@rm3l
Copy link
Member

rm3l commented Oct 18, 2023

What has changed to now require more memory?

Not sure what could have changed, but I can see that the starterProjects in this Stack (and which odo uses in the tests here) are generated and downloaded from code.quarkus.io. So I guess we are testing against the most recent versions of Quarkus (3.4.3 in the test here).

Could the memory requirements have changed for Quarkus?

That said, I think the tests against java-quarkus have been consistently failing for at least one month for the same reason (example with this job one month ago: https://github.com/devfile/registry/actions/runs/627028488)

I tried locally, and here is the stack trace I observed from the dev-run command (running mvn quarkus:dev):

tools: [INFO] ------------------------------------------------------------------------                                                                                                         
tools: [INFO] BUILD FAILURE                                                                                                                                                                    
tools: [INFO] ------------------------------------------------------------------------                                                                                                         
tools: [INFO] Total time:  14.800 s                                                                                                                                                            
tools: [INFO] Finished at: 2023-10-18T14:16:16Z                                                                                                                                                
tools: [INFO] ------------------------------------------------------------------------                                                                                                         
tools: [ERROR] Java heap space -> [Help 1]                                                                                                                                                     
tools: java.lang.OutOfMemoryError: Java heap space                                                                                                                                             
tools:     at org.apache.maven.repository.internal.ArtifactDescriptorReaderDelegate.convert (ArtifactDescriptorReaderDelegate.java:117)                                                        
tools:     at org.apache.maven.repository.internal.ArtifactDescriptorReaderDelegate.populateResult (ArtifactDescriptorReaderDelegate.java:73)
tools:     at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor (DefaultArtifactDescriptorReader.java:183)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.resolveCachedArtifactDescriptor (DefaultDependencyCollector.java:541)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.getArtifactDescriptorResult (DefaultDependencyCollector.java:526)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:413)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:353)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:509)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:461)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:353)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:509)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:461)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:353)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies (DefaultDependencyCollector.java:258)
tools:     at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies (DefaultRepositorySystem.java:300)
tools:     at io.quarkus.bootstrap.resolver.maven.MavenArtifactResolver.collectManagedDependencies (MavenArtifactResolver.java:307)
tools:     at io.quarkus.bootstrap.resolver.maven.ApplicationDependencyTreeResolver.collectDependencies (ApplicationDependencyTreeResolver.java:592)
tools:     at io.quarkus.bootstrap.resolver.maven.ApplicationDependencyTreeResolver.injectDeploymentDependencies (ApplicationDependencyTreeResolver.java:493)
tools:     at io.quarkus.bootstrap.resolver.maven.ApplicationDependencyTreeResolver.resolve (ApplicationDependencyTreeResolver.java:197)
tools:     at io.quarkus.bootstrap.resolver.BootstrapAppModelResolver.buildAppModel (BootstrapAppModelResolver.java:321)
tools:     at io.quarkus.bootstrap.resolver.BootstrapAppModelResolver.doResolveModel (BootstrapAppModelResolver.java:286)
tools:     at io.quarkus.bootstrap.resolver.BootstrapAppModelResolver.resolveManagedModel (BootstrapAppModelResolver.java:165)
tools:     at io.quarkus.maven.QuarkusBootstrapProvider$QuarkusMavenAppBootstrap.doBootstrap (QuarkusBootstrapProvider.java:234)
tools:     at io.quarkus.maven.QuarkusBootstrapProvider$QuarkusMavenAppBootstrap.bootstrapApplication (QuarkusBootstrapProvider.java:351)
tools:     at io.quarkus.maven.QuarkusBootstrapProvider.bootstrapApplication (QuarkusBootstrapProvider.java:128)
tools:     at io.quarkus.maven.QuarkusBootstrapMojo.bootstrapApplication (QuarkusBootstrapMojo.java:296)
tools:     at io.quarkus.maven.GenerateCodeMojo.generateCode (GenerateCodeMojo.java:79)
tools:     at io.quarkus.maven.GenerateCodeTestsMojo.doExecute (GenerateCodeTestsMojo.java:13)
tools:     at io.quarkus.maven.QuarkusBootstrapMojo.execute (QuarkusBootstrapMojo.java:171)
tools: [ERROR] 
tools: [ERROR] 
tools: [ERROR] For more information about the errors and possible solutions, please read the following articles:
tools: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/OutOfMemoryError

@thepetk
Copy link
Contributor Author

thepetk commented Oct 18, 2023

What has changed to now require more memory?

Not sure what could have changed, but I can see that the starterProjects in this Stack (and which odo uses in the tests here) are generated and downloaded from code.quarkus.io. So I guess we are testing against the most recent versions of Quarkus (3.4.3 in the test here).

Could the memory requirements have changed for Quarkus?

That said, I think the tests against java-quarkus have been consistently failing for at least one month for the same reason (example with this job one month ago: https://github.com/devfile/registry/actions/runs/627028488)

I tried locally, and here is the stack trace I observed from the dev-run command (running mvn quarkus:dev):

tools: [INFO] ------------------------------------------------------------------------                                                                                                         
tools: [INFO] BUILD FAILURE                                                                                                                                                                    
tools: [INFO] ------------------------------------------------------------------------                                                                                                         
tools: [INFO] Total time:  14.800 s                                                                                                                                                            
tools: [INFO] Finished at: 2023-10-18T14:16:16Z                                                                                                                                                
tools: [INFO] ------------------------------------------------------------------------                                                                                                         
tools: [ERROR] Java heap space -> [Help 1]                                                                                                                                                     
tools: java.lang.OutOfMemoryError: Java heap space                                                                                                                                             
tools:     at org.apache.maven.repository.internal.ArtifactDescriptorReaderDelegate.convert (ArtifactDescriptorReaderDelegate.java:117)                                                        
tools:     at org.apache.maven.repository.internal.ArtifactDescriptorReaderDelegate.populateResult (ArtifactDescriptorReaderDelegate.java:73)
tools:     at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor (DefaultArtifactDescriptorReader.java:183)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.resolveCachedArtifactDescriptor (DefaultDependencyCollector.java:541)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.getArtifactDescriptorResult (DefaultDependencyCollector.java:526)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:413)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:353)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:509)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:461)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:353)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:509)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:461)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:353)
tools:     at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies (DefaultDependencyCollector.java:258)
tools:     at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies (DefaultRepositorySystem.java:300)
tools:     at io.quarkus.bootstrap.resolver.maven.MavenArtifactResolver.collectManagedDependencies (MavenArtifactResolver.java:307)
tools:     at io.quarkus.bootstrap.resolver.maven.ApplicationDependencyTreeResolver.collectDependencies (ApplicationDependencyTreeResolver.java:592)
tools:     at io.quarkus.bootstrap.resolver.maven.ApplicationDependencyTreeResolver.injectDeploymentDependencies (ApplicationDependencyTreeResolver.java:493)
tools:     at io.quarkus.bootstrap.resolver.maven.ApplicationDependencyTreeResolver.resolve (ApplicationDependencyTreeResolver.java:197)
tools:     at io.quarkus.bootstrap.resolver.BootstrapAppModelResolver.buildAppModel (BootstrapAppModelResolver.java:321)
tools:     at io.quarkus.bootstrap.resolver.BootstrapAppModelResolver.doResolveModel (BootstrapAppModelResolver.java:286)
tools:     at io.quarkus.bootstrap.resolver.BootstrapAppModelResolver.resolveManagedModel (BootstrapAppModelResolver.java:165)
tools:     at io.quarkus.maven.QuarkusBootstrapProvider$QuarkusMavenAppBootstrap.doBootstrap (QuarkusBootstrapProvider.java:234)
tools:     at io.quarkus.maven.QuarkusBootstrapProvider$QuarkusMavenAppBootstrap.bootstrapApplication (QuarkusBootstrapProvider.java:351)
tools:     at io.quarkus.maven.QuarkusBootstrapProvider.bootstrapApplication (QuarkusBootstrapProvider.java:128)
tools:     at io.quarkus.maven.QuarkusBootstrapMojo.bootstrapApplication (QuarkusBootstrapMojo.java:296)
tools:     at io.quarkus.maven.GenerateCodeMojo.generateCode (GenerateCodeMojo.java:79)
tools:     at io.quarkus.maven.GenerateCodeTestsMojo.doExecute (GenerateCodeTestsMojo.java:13)
tools:     at io.quarkus.maven.QuarkusBootstrapMojo.execute (QuarkusBootstrapMojo.java:171)
tools: [ERROR] 
tools: [ERROR] 
tools: [ERROR] For more information about the errors and possible solutions, please read the following articles:
tools: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/OutOfMemoryError

Yes I was looking for their releases https://github.com/quarkusio/quarkus/releases/, most probably a change on their side (probably after release 3.4.1) should have affected our tests. In general what I found while debugging this issue was that the current amount of memory was small so I think moving to 1024Mi could be a good start to fix this issue.

@openshift-ci openshift-ci bot added the lgtm Looks good to me label Oct 19, 2023
@thepetk
Copy link
Contributor Author

thepetk commented Oct 19, 2023

Thanks @rm3l for the review! @maxandersen as you are listed inside the OWNERS of this stack, could you also review this update. If you are ok I can merge it.

Copy link
Collaborator

@maxandersen maxandersen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

@openshift-ci
Copy link

openshift-ci bot commented Oct 24, 2023

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: maxandersen, rm3l, thepetk

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved lgtm Looks good to me
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Quarkus stack fails to pass odov2 and odov3 checks
3 participants