Skip to content
This repository has been archived by the owner on Feb 23, 2023. It is now read-only.

WebFlux and Spring Security #60

Closed
sanyarnd opened this issue Mar 27, 2020 · 6 comments
Closed

WebFlux and Spring Security #60

sanyarnd opened this issue Mar 27, 2020 · 6 comments
Labels
type: compatibility Native image compatibility issue

Comments

@sanyarnd
Copy link

Hi, I'm getting error which fails the build:

Fatal error: java.lang.IllegalStateException: java.lang.IllegalStateException: No @CompilationHint found for import selector: org.springframework.security.con
fig.annotation.web.reactive.ReactiveOAuth2ClientImportSelector
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
        at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:600)
        at java.base/java.util.concurrent.ForkJoinTask.get(ForkJoinTask.java:1006)
        at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:462)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:357)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:501)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:115)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus.main(NativeImageGeneratorRunner.java:528)
Caused by: java.lang.IllegalStateException: No @CompilationHint found for import selector: org.springframework.security.config.annotation.web.reactive.Reactiv
eOAuth2ClientImportSelector
        at org.springframework.graal.type.Type.getHints(Type.java:1074)
        at org.springframework.graal.support.ResourcesHandler.processType(ResourcesHandler.java:728)
        at org.springframework.graal.support.ResourcesHandler.processType(ResourcesHandler.java:987)
        at org.springframework.graal.support.ResourcesHandler.processType(ResourcesHandler.java:1030)
        at org.springframework.graal.support.ResourcesHandler.processType(ResourcesHandler.java:633)
        at org.springframework.graal.support.ResourcesHandler.checkAndRegisterConfigurationType(ResourcesHandler.java:621)
        at org.springframework.graal.support.ResourcesHandler.processSpringFactory(ResourcesHandler.java:564)
        at org.springframework.graal.support.ResourcesHandler.processSpringFactories(ResourcesHandler.java:425)
        at org.springframework.graal.support.ResourcesHandler.register(ResourcesHandler.java:110)
        at org.springframework.graal.support.SpringFeature.beforeAnalysis(SpringFeature.java:79)
        at com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$7(NativeImageGenerator.java:674)
        at com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:63)
        at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:674)
        at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:530)
        at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:445)
        at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
        at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
Error: Image build request failed with exit status 1
com.oracle.svm.driver.NativeImage$NativeImageError: Image build request failed with exit status 1
        at com.oracle.svm.driver.NativeImage.showError(NativeImage.java:1527)
        at com.oracle.svm.driver.NativeImage.build(NativeImage.java:1289)
        at com.oracle.svm.driver.NativeImage.performBuild(NativeImage.java:1250)
        at com.oracle.svm.driver.NativeImage.main(NativeImage.java:1209)
        at com.oracle.svm.driver.NativeImage$JDK9Plus.main(NativeImage.java:1707)

As far as I understand, it means that ReactiveOAuth2ClientImportSelector is missing a configuration in spring-feature project.

I've tried to configure myself, but no luck. Any tips?

@aclement
Copy link
Contributor

Hey, you are right that it means a hint is missing. We are perhaps being a bit aggressive here and 'failing fast' but if we don't then you usually find the error you get later is massively cryptic and it comes back to this. I don't have a sample that exercises those things (if you had one that would be awesome) but I will quickly throw in a hint that has a go at being the right thing. Give me a min.

@aclement
Copy link
Contributor

Dropped in a commit for it - take a look to see the hint I created. Basically looked at ReactiveOAuth2ClientImportSelector and reasoned what it needed to expose, encoded that in a hint, added hint to list of hint providers. Let me know what happens!

@sanyarnd
Copy link
Author

@aclement still having it:

Fatal error: java.lang.IllegalStateException: java.lang.IllegalStateException: No @CompilationHint found for import selector: org.springframework.security.con
fig.annotation.web.reactive.ReactiveOAuth2ClientImportSelector
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
        at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:600)
        at java.base/java.util.concurrent.ForkJoinTask.get(ForkJoinTask.java:1006)
        at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:462)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:357)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:501)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:115)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus.main(NativeImageGeneratorRunner.java:528)
Caused by: java.lang.IllegalStateException: No @CompilationHint found for import selector: org.springframework.security.config.annotation.web.reactive.Reactiv
eOAuth2ClientImportSelector
        at org.springframework.graal.type.Type.getHints(Type.java:1074)
        at org.springframework.graal.support.ResourcesHandler.processType(ResourcesHandler.java:721)
        at org.springframework.graal.support.ResourcesHandler.processType(ResourcesHandler.java:980)
        at org.springframework.graal.support.ResourcesHandler.processType(ResourcesHandler.java:1023)
        at org.springframework.graal.support.ResourcesHandler.processType(ResourcesHandler.java:626)
        at org.springframework.graal.support.ResourcesHandler.checkAndRegisterConfigurationType(ResourcesHandler.java:621)
        at org.springframework.graal.support.ResourcesHandler.processSpringFactory(ResourcesHandler.java:564)
        at org.springframework.graal.support.ResourcesHandler.processSpringFactories(ResourcesHandler.java:425)
        at org.springframework.graal.support.ResourcesHandler.register(ResourcesHandler.java:110)
        at org.springframework.graal.support.SpringFeature.beforeAnalysis(SpringFeature.java:79)
        at com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$7(NativeImageGenerator.java:674)
        at com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:63)
        at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:674)
        at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:530)
        at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:445)
        at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
        at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
Error: Image build request failed with exit status 1
com.oracle.svm.driver.NativeImage$NativeImageError: Image build request failed with exit status 1
        at com.oracle.svm.driver.NativeImage.showError(NativeImage.java:1527)
        at com.oracle.svm.driver.NativeImage.build(NativeImage.java:1289)
        at com.oracle.svm.driver.NativeImage.performBuild(NativeImage.java:1250)
        at com.oracle.svm.driver.NativeImage.main(NativeImage.java:1209)
        at com.oracle.svm.driver.NativeImage$JDK9Plus.main(NativeImage.java:1707)
            making this accessible: org.springframework.security.config.web.server.ServerHttpSecurity$HeaderSpec$ContentSecurityPolicySpec   AccessBits(RESOUR
CE CONSTRUCTORS METHODS)

@aclement
Copy link
Contributor

How are you consuming the feature/configuration - I presume you have both dependencies either in your maven pom or in your script? If maven, you rebuilt the feature in to your local mvn repository?

@aclement aclement reopened this Mar 27, 2020
@sanyarnd
Copy link
Author

Duh, sorry, I've kept running over and over wrong command for building (and copying). Instead of configuration I've updated feature project.
Now everything seems ok.

@aclement
Copy link
Contributor

thanks for getting back to me. Good luck getting your app going!

dsyer pushed a commit to scratches/spring-graalvm-native that referenced this issue Sep 23, 2020
dsyer pushed a commit to scratches/spring-graalvm-native that referenced this issue Sep 23, 2020
@sdeleuze sdeleuze added the type: compatibility Native image compatibility issue label Jan 8, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
type: compatibility Native image compatibility issue
Development

No branches or pull requests

3 participants