Test and fix native-image functionality with hibernate-validator
Summary
native-image have some flaws using hibernate-validator, the idea is to detect and try to fix the issues with bean validation and if the issue is from upstream report the issue to Quarkus directly.
Environment
-
StackGres version:0.6beta1
-
Kubernetes version (use
kubectl version): v.1.12.10 -
Cloud provider or hardware configuration: all
Steps to reproduce
Enable the quarkus-hibernate-validator module, compile and run the operator
Relevant logs and/or screenshots
javax.validation.ValidationException: HV000083: The specified annotation javax.validation.constraints.NotNull defines no attribute 'groups'.
at org.hibernate.validator.internal.util.annotation.AnnotationDescriptor.getMandatoryAttribute(AnnotationDescriptor.java:93)
at org.hibernate.validator.internal.util.annotation.ConstraintAnnotationDescriptor.getGroups(ConstraintAnnotationDescriptor.java:35)
at org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl.buildGroupSet(ConstraintDescriptorImpl.java:547)
at org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl.<init>(ConstraintDescriptorImpl.java:181)
at org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl.<init>(ConstraintDescriptorImpl.java:231)
at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.buildConstraintDescriptor(AnnotationMetaDataProvider.java:587)
at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.lambda$findConstraintAnnotations$0(AnnotationMetaDataProvider.java:542)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.findConstraintAnnotations(AnnotationMetaDataProvider.java:543)
at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.findConstraints(AnnotationMetaDataProvider.java:479)
at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.findConstraints(AnnotationMetaDataProvider.java:461)
at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.findPropertyMetaData(AnnotationMetaDataProvider.java:236)
at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.getFieldMetaData(AnnotationMetaDataProvider.java:229)
at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.retrieveBeanConfiguration(AnnotationMetaDataProvider.java:129)
at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.getBeanConfiguration(AnnotationMetaDataProvider.java:120)
at org.hibernate.validator.internal.metadata.BeanMetaDataManagerImpl.getBeanConfigurationForHierarchy(BeanMetaDataManagerImpl.java:224)
at org.hibernate.validator.internal.metadata.BeanMetaDataManagerImpl.createBeanMetaData(BeanMetaDataManagerImpl.java:191)
at org.hibernate.validator.internal.metadata.BeanMetaDataManagerImpl.getBeanMetaData(BeanMetaDataManagerImpl.java:156)
at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:156)
at io.fabric8.kubernetes.api.builder.ValidationUtils.validate(ValidationUtils.java:53)
at io.fabric8.kubernetes.api.model.ServiceAccountBuilder.build(ServiceAccountBuilder.java:80)
at io.stackgres.operator.resource.SgPatroniRole.createServiceAccount(SgPatroniRole.java:61)
at io.stackgres.operator.resource.SgPatroniRole.create(SgPatroniRole.java:44)
at io.stackgres.operator.resource.SgPatroniRole_ClientProxy.create(SgPatroniRole_ClientProxy.zig:38)
at io.stackgres.operator.controller.ClusterController.newStackGresCluster(ClusterController.java:51)
at io.stackgres.operator.controller.ClusterController_ClientProxy.newStackGresCluster(ClusterController_ClientProxy.zig:38)
at io.stackgres.operator.watcher.StackGresClusterWatcher.eventReceived(StackGresClusterWatcher.java:32)
at io.stackgres.operator.watcher.StackGresClusterWatcher.eventReceived(StackGresClusterWatcher.java:18)
at io.stackgres.operator.watcher.StackGresClusterWatcher_ClientProxy.eventReceived(StackGresClusterWatcher_ClientProxy.zig:124)
at io.fabric8.kubernetes.client.utils.WatcherToggle.eventReceived(WatcherToggle.java:49)
at io.fabric8.kubernetes.client.dsl.internal.WatchConnectionManager$1.onMessage(WatchConnectionManager.java:237)
at okhttp3.internal.ws.RealWebSocket.onReadMessage(RealWebSocket.java:323)
at okhttp3.internal.ws.WebSocketReader.readMessageFrame(WebSocketReader.java:219)
at okhttp3.internal.ws.WebSocketReader.processNextFrame(WebSocketReader.java:105)
at okhttp3.internal.ws.RealWebSocket.loopReader(RealWebSocket.java:274)
at okhttp3.internal.ws.RealWebSocket$2.onResponse(RealWebSocket.java:214)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:206)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460)
at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193)
Links
Edited by Jorge Solorzano