Skip to content

AOT/GraalVM/native Caused by: java.lang.RuntimeException: No deserializer found in 'co.elastic.clients.elasticsearch.indices.IndexSettings._DESERIALIZER' #2565

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

Closed
patpatpat123 opened this issue May 16, 2023 · 17 comments
Labels
status: feedback-provided Feedback has been provided

Comments

@patpatpat123
Copy link

Hello team,

I would like to report an issue only faced with native / graalVM / AOT.

Using SpringBoot 3.1.0-RC2, (did not try with lower versions) I am able to reproduce this 100%

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.elasticsearch.repository.support.SimpleReactiveElasticsearchRepository]: Constructor threw exception
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224) ~[na:na]
	at org.springframework.data.repository.core.support.RepositoryFactorySupport.lambda$instantiateClass$5(RepositoryFactorySupport.java:571) ~[abc:3.1.0-RC1]
	at [email protected]/java.util.Optional.map(Optional.java:260) ~[abc:na]
	at org.springframework.data.repository.core.support.RepositoryFactorySupport.instantiateClass(RepositoryFactorySupport.java:571) ~[abc:3.1.0-RC1]
	at org.springframework.data.repository.core.support.RepositoryFactorySupport.getTargetRepositoryViaReflection(RepositoryFactorySupport.java:536) ~[abc:3.1.0-RC1]
	at org.springframework.data.elasticsearch.repository.support.ReactiveElasticsearchRepositoryFactory.getTargetRepository(ReactiveElasticsearchRepositoryFactory.java:94) ~[na:na]
	at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:317) ~[abc:3.1.0-RC1]
	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:279) ~[abc:3.1.0-RC1]
	at org.springframework.data.util.Lazy.getNullable(Lazy.java:245) ~[na:na]
	at org.springframework.data.util.Lazy.get(Lazy.java:114) ~[na:na]
	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:285) ~[abc:3.1.0-RC1]
	at org.springframework.data.elasticsearch.repository.support.ReactiveElasticsearchRepositoryFactoryBean.afterPropertiesSet(ReactiveElasticsearchRepositoryFactoryBean.java:102) ~[abc:5.1.0-RC1]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1816) ~[abc:6.0.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1766) ~[abc:6.0.8]
	... 45 common frames omitted
Caused by: java.lang.RuntimeException: No deserializer found in 'co.elastic.clients.elasticsearch.indices.IndexSettings._DESERIALIZER'
	at co.elastic.clients.json.JsonpMapperBase.findDeserializer(JsonpMapperBase.java:92) ~[abc:na]
	at co.elastic.clients.json.JsonpMapperBase.findDeserializer(JsonpMapperBase.java:78) ~[abc:na]
	at co.elastic.clients.util.WithJsonObjectBuilderBase.withJson(WithJsonObjectBuilderBase.java:44) ~[abc:na]
	at co.elastic.clients.json.WithJson.withJson(WithJson.java:57) ~[abc:na]
	at org.springframework.data.elasticsearch.client.elc.RequestConverter.lambda$indicesCreateRequest$0(RequestConverter.java:130) ~[na:na]
	at co.elastic.clients.elasticsearch.indices.IndexSettings.of(IndexSettings.java:302) ~[abc:na]
	at org.springframework.data.elasticsearch.client.elc.RequestConverter.indicesCreateRequest(RequestConverter.java:129) ~[na:na]
	at org.springframework.data.elasticsearch.client.elc.ReactiveIndicesTemplate.doCreate(ReactiveIndicesTemplate.java:126) ~[na:na]
	at org.springframework.data.elasticsearch.client.elc.ReactiveIndicesTemplate.lambda$createWithMapping$1(ReactiveIndicesTemplate.java:120) ~[na:na]
	at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:132) ~[abc:3.5.5]
	at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) ~[na:na]
	at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) ~[na:na]
	at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) ~[na:na]
	at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2545) ~[abc:3.5.5]
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2341) ~[abc:3.5.5]
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2215) ~[abc:3.5.5]
	at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55) ~[na:na]
	at reactor.core.publisher.Mono.subscribe(Mono.java:4485) ~[abc:3.5.5]
	at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[na:na]
	at reactor.core.publisher.Operators.complete(Operators.java:137) ~[abc:3.5.5]
	at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[na:na]
	at reactor.core.publisher.Mono.subscribe(Mono.java:4485) ~[abc:3.5.5]
	at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:200) ~[abc:3.5.5]
	at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) ~[abc:3.5.5]
	at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:57) ~[abc:3.5.5]
	at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) ~[abc:3.5.5]
	at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) ~[na:na]
	at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) ~[abc:3.5.5]
	at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) ~[na:na]
	at reactor.core.publisher.MonoCompletionStage$MonoCompletionStageSubscription.apply(MonoCompletionStage.java:125) ~[abc:3.5.5]
	at reactor.core.publisher.MonoCompletionStage$MonoCompletionStageSubscription.apply(MonoCompletionStage.java:71) ~[abc:3.5.5]
	at [email protected]/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) ~[abc:na]
	at [email protected]/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911) ~[na:na]
	at [email protected]/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[abc:na]
	at [email protected]/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) ~[abc:na]
	at co.elastic.clients.transport.rest_client.RestClientTransport$1.onSuccess(RestClientTransport.java:182) ~[na:na]
	at org.elasticsearch.client.RestClient$FailureTrackingResponseListener.onSuccess(RestClient.java:676) ~[abc:8.7.1]
	at org.elasticsearch.client.RestClient$1.completed(RestClient.java:399) ~[na:na]
	at org.elasticsearch.client.RestClient$1.completed(RestClient.java:393) ~[na:na]
	at org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:122) ~[na:na]
	at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseCompleted(DefaultClientExchangeHandlerImpl.java:182) ~[na:na]
	at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processResponse(HttpAsyncRequestExecutor.java:448) ~[na:na]
	at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.responseReceived(HttpAsyncRequestExecutor.java:321) ~[na:na]
	at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:255) ~[abc:4.4.16]
	at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:87) ~[na:na]
	at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:40) ~[na:na]
	at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114) ~[abc:4.4.16]
	at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162) ~[na:na]
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337) ~[abc:4.4.16]
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315) ~[abc:4.4.16]
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276) ~[abc:4.4.16]
	at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) ~[na:na]
	at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591) ~[na:na]
	at [email protected]/java.lang.Thread.run(Thread.java:833) ~[abc:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:775) ~[abc:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:203) ~[na:na]
	Suppressed: java.lang.Exception: #block terminated with an error
		at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:99) ~[abc:3.5.5]
		at reactor.core.publisher.Mono.block(Mono.java:1710) ~[abc:3.5.5]
		at org.springframework.data.elasticsearch.repository.support.SimpleReactiveElasticsearchRepository.createIndexAndMappingIfNeeded(SimpleReactiveElasticsearchRepository.java:68) ~[abc:5.1.0-RC1]
		at org.springframework.data.elasticsearch.repository.support.SimpleReactiveElasticsearchRepository.<init>(SimpleReactiveElasticsearchRepository.java:60) ~[abc:5.1.0-RC1]
		at [email protected]/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[abc:na]
		at [email protected]/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[abc:na]
		at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211) ~[na:na]
		at org.springframework.data.repository.core.support.RepositoryFactorySupport.lambda$instantiateClass$5(RepositoryFactorySupport.java:571) ~[abc:3.1.0-RC1]
		at [email protected]/java.util.Optional.map(Optional.java:260) ~[abc:na]
		at org.springframework.data.repository.core.support.RepositoryFactorySupport.instantiateClass(RepositoryFactorySupport.java:571) ~[abc:3.1.0-RC1]
		at org.springframework.data.repository.core.support.RepositoryFactorySupport.getTargetRepositoryViaReflection(RepositoryFactorySupport.java:536) ~[abc:3.1.0-RC1]
		at org.springframework.data.elasticsearch.repository.support.ReactiveElasticsearchRepositoryFactory.getTargetRepository(ReactiveElasticsearchRepositoryFactory.java:94) ~[na:na]
		at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:317) ~[abc:3.1.0-RC1]
		at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:279) ~[abc:3.1.0-RC1]
		at org.springframework.data.util.Lazy.getNullable(Lazy.java:245) ~[na:na]
		at org.springframework.data.util.Lazy.get(Lazy.java:114) ~[na:na]
		at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:285) ~[abc:3.1.0-RC1]
		at org.springframework.data.elasticsearch.repository.support.ReactiveElasticsearchRepositoryFactoryBean.afterPropertiesSet(ReactiveElasticsearchRepositoryFactoryBean.java:102) ~[abc:5.1.0-RC1]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1816) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1766) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[abc:6.0.8]
		at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337) ~[abc:6.0.8]
		at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveArgument(BeanInstanceSupplier.java:327) ~[na:na]
		at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveArguments(BeanInstanceSupplier.java:267) ~[na:na]
		at org.springframework.beans.factory.aot.BeanInstanceSupplier.get(BeanInstanceSupplier.java:202) ~[na:na]
		at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:947) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1214) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1158) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[abc:6.0.8]
		at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337) ~[abc:6.0.8]
		at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveArgument(BeanInstanceSupplier.java:327) ~[na:na]
		at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveArguments(BeanInstanceSupplier.java:267) ~[na:na]
		at org.springframework.beans.factory.aot.BeanInstanceSupplier.get(BeanInstanceSupplier.java:202) ~[na:na]
		at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:947) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1214) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1158) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[abc:6.0.8]
		at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) ~[abc:6.0.8]
		at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917) ~[abc:6.0.8]
		at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) ~[abc:6.0.8]
		at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:733) ~[abc:3.1.0-RC2]
		at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:435) ~[abc:3.1.0-RC2]
		at org.springframework.boot.SpringApplication.run(SpringApplication.java:311) ~[abc:3.1.0-RC2]
		at org.springframework.boot.SpringApplication.run(SpringApplication.java:1305) ~[abc:3.1.0-RC2]
		at org.springframework.boot.SpringApplication.run(SpringApplication.java:1294) ~[abc:3.1.0-RC2]

Could you please help on this issue?

Thank you

@spring-projects-issues spring-projects-issues added the status: waiting-for-triage An issue we've not yet triaged label May 16, 2023
@sothawo
Copy link
Collaborator

sothawo commented May 16, 2023

Please provide a buildable/runnable example that produces this error.

@sothawo sothawo added status: waiting-for-feedback We need additional information before we can continue and removed status: waiting-for-triage An issue we've not yet triaged labels May 16, 2023
@patpatpat123
Copy link
Author

issue.zip

@patpatpat123
Copy link
Author

patpatpat123 commented May 17, 2023

Of course, here we go.

Step to reproduce:

Step 1: download the issue.zip and decompress it.

Step 2: build a native image, using mvn -Pnative native:compile

the result of step 2 should be a native image named issue

Step 3: run the native image with ./issue

Step 4: can you please confirm you got the same stacktrace:

@patpatpat123
Copy link
Author

~/issue/target$ ./issue

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::            (v3.1.0-RC2)

2023-05-17T10:33:05.514+08:00  INFO 6781 --- [           main] org.example.SomeApplication              : Starting AOT-processed SomeApplication using Java 17.0.7 with PID 6781 (/home/elastic/issue/target/issue started by elastic in /home/elastic/issue/target)
2023-05-17T10:33:05.514+08:00  INFO 6781 --- [           main] org.example.SomeApplication              : No active profile set, falling back to 1 default profile: "default"
2023-05-17T10:33:05.704+08:00  WARN 6781 --- [           main] .r.c.ReactiveWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'someService': Unsatisfied dependency expressed through field 'someRepository': Error creating bean with name 'someRepository': Failed to instantiate [org.springframework.data.elasticsearch.repository.support.SimpleReactiveElasticsearchRepository]: Constructor threw exception
2023-05-17T10:33:05.706+08:00 ERROR 6781 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'someService': Unsatisfied dependency expressed through field 'someRepository': Error creating bean with name 'someRepository': Failed to instantiate [org.springframework.data.elasticsearch.repository.support.SimpleReactiveElasticsearchRepository]: Constructor threw exception
	at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveValue(AutowiredFieldValueResolver.java:195) ~[na:na]
	at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveObject(AutowiredFieldValueResolver.java:154) ~[na:na]
	at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolve(AutowiredFieldValueResolver.java:143) ~[na:na]
	at org.example.SomeService__Autowiring.apply(SomeService__Autowiring.java:14) ~[na:na]
	at org.springframework.beans.factory.support.InstanceSupplier$1.get(InstanceSupplier.java:83) ~[na:na]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:947) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1214) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1158) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) ~[issue:6.0.8]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917) ~[issue:6.0.8]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) ~[issue:6.0.8]
	at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66) ~[issue:3.1.0-RC2]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:733) ~[issue:3.1.0-RC2]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:435) ~[issue:3.1.0-RC2]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:311) ~[issue:3.1.0-RC2]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1305) ~[issue:3.1.0-RC2]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1294) ~[issue:3.1.0-RC2]
	at org.example.SomeApplication.main(SomeApplication.java:15) ~[issue:na]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'someRepository': Failed to instantiate [org.springframework.data.elasticsearch.repository.support.SimpleReactiveElasticsearchRepository]: Constructor threw exception
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[issue:6.0.8]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337) ~[issue:6.0.8]
	at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveValue(AutowiredFieldValueResolver.java:189) ~[na:na]
	... 23 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.elasticsearch.repository.support.SimpleReactiveElasticsearchRepository]: Constructor threw exception
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224) ~[na:na]
	at org.springframework.data.repository.core.support.RepositoryFactorySupport.lambda$instantiateClass$5(RepositoryFactorySupport.java:571) ~[issue:3.1.0-RC1]
	at [email protected]/java.util.Optional.map(Optional.java:260) ~[issue:na]
	at org.springframework.data.repository.core.support.RepositoryFactorySupport.instantiateClass(RepositoryFactorySupport.java:571) ~[issue:3.1.0-RC1]
	at org.springframework.data.repository.core.support.RepositoryFactorySupport.getTargetRepositoryViaReflection(RepositoryFactorySupport.java:536) ~[issue:3.1.0-RC1]
	at org.springframework.data.elasticsearch.repository.support.ReactiveElasticsearchRepositoryFactory.getTargetRepository(ReactiveElasticsearchRepositoryFactory.java:94) ~[na:na]
	at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:317) ~[issue:3.1.0-RC1]
	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:279) ~[issue:3.1.0-RC1]
	at org.springframework.data.util.Lazy.getNullable(Lazy.java:245) ~[na:na]
	at org.springframework.data.util.Lazy.get(Lazy.java:114) ~[na:na]
	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:285) ~[issue:3.1.0-RC1]
	at org.springframework.data.elasticsearch.repository.support.ReactiveElasticsearchRepositoryFactoryBean.afterPropertiesSet(ReactiveElasticsearchRepositoryFactoryBean.java:102) ~[issue:5.1.0-RC1]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1816) ~[issue:6.0.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1766) ~[issue:6.0.8]
	... 33 common frames omitted
Caused by: java.lang.RuntimeException: No deserializer found in 'co.elastic.clients.elasticsearch.indices.IndexSettings._DESERIALIZER'
	at co.elastic.clients.json.JsonpMapperBase.findDeserializer(JsonpMapperBase.java:92) ~[issue:na]
	at co.elastic.clients.json.JsonpMapperBase.findDeserializer(JsonpMapperBase.java:78) ~[issue:na]
	at co.elastic.clients.util.WithJsonObjectBuilderBase.withJson(WithJsonObjectBuilderBase.java:44) ~[issue:na]
	at co.elastic.clients.json.WithJson.withJson(WithJson.java:57) ~[issue:na]
	at org.springframework.data.elasticsearch.client.elc.RequestConverter.lambda$indicesCreateRequest$0(RequestConverter.java:130) ~[na:na]
	at co.elastic.clients.elasticsearch.indices.IndexSettings.of(IndexSettings.java:302) ~[issue:na]
	at org.springframework.data.elasticsearch.client.elc.RequestConverter.indicesCreateRequest(RequestConverter.java:129) ~[na:na]
	at org.springframework.data.elasticsearch.client.elc.ReactiveIndicesTemplate.doCreate(ReactiveIndicesTemplate.java:126) ~[na:na]
	at org.springframework.data.elasticsearch.client.elc.ReactiveIndicesTemplate.lambda$createWithMapping$1(ReactiveIndicesTemplate.java:120) ~[na:na]
	at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:132) ~[issue:3.5.5]
	at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) ~[na:na]
	at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) ~[na:na]
	at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) ~[na:na]
	at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2545) ~[issue:3.5.5]
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2341) ~[issue:3.5.5]
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2215) ~[issue:3.5.5]
	at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55) ~[na:na]
	at reactor.core.publisher.Mono.subscribe(Mono.java:4485) ~[issue:3.5.5]
	at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[na:na]
	at reactor.core.publisher.Operators.complete(Operators.java:137) ~[issue:3.5.5]
	at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[na:na]
	at reactor.core.publisher.Mono.subscribe(Mono.java:4485) ~[issue:3.5.5]
	at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:200) ~[issue:3.5.5]
	at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) ~[issue:3.5.5]
	at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:57) ~[issue:3.5.5]
	at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) ~[issue:3.5.5]
	at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) ~[na:na]
	at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) ~[issue:3.5.5]
	at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) ~[na:na]
	at reactor.core.publisher.MonoCompletionStage$MonoCompletionStageSubscription.apply(MonoCompletionStage.java:125) ~[issue:3.5.5]
	at reactor.core.publisher.MonoCompletionStage$MonoCompletionStageSubscription.apply(MonoCompletionStage.java:71) ~[issue:3.5.5]
	at [email protected]/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) ~[issue:na]
	at [email protected]/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911) ~[na:na]
	at [email protected]/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[issue:na]
	at [email protected]/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) ~[issue:na]
	at co.elastic.clients.transport.rest_client.RestClientTransport$1.onSuccess(RestClientTransport.java:182) ~[na:na]
	at org.elasticsearch.client.RestClient$FailureTrackingResponseListener.onSuccess(RestClient.java:676) ~[issue:8.7.1]
	at org.elasticsearch.client.RestClient$1.completed(RestClient.java:399) ~[na:na]
	at org.elasticsearch.client.RestClient$1.completed(RestClient.java:393) ~[na:na]
	at org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:122) ~[na:na]
	at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseCompleted(DefaultClientExchangeHandlerImpl.java:182) ~[na:na]
	at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processResponse(HttpAsyncRequestExecutor.java:448) ~[na:na]
	at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.responseReceived(HttpAsyncRequestExecutor.java:321) ~[na:na]
	at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:255) ~[issue:4.4.16]
	at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:87) ~[na:na]
	at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:40) ~[na:na]
	at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114) ~[issue:4.4.16]
	at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162) ~[na:na]
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337) ~[issue:4.4.16]
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315) ~[issue:4.4.16]
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276) ~[issue:4.4.16]
	at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) ~[na:na]
	at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591) ~[na:na]
	at [email protected]/java.lang.Thread.run(Thread.java:833) ~[issue:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:775) ~[issue:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:203) ~[na:na]
	Suppressed: java.lang.Exception: #block terminated with an error
		at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:99) ~[issue:3.5.5]
		at reactor.core.publisher.Mono.block(Mono.java:1710) ~[issue:3.5.5]
		at org.springframework.data.elasticsearch.repository.support.SimpleReactiveElasticsearchRepository.createIndexAndMappingIfNeeded(SimpleReactiveElasticsearchRepository.java:68) ~[issue:5.1.0-RC1]
		at org.springframework.data.elasticsearch.repository.support.SimpleReactiveElasticsearchRepository.<init>(SimpleReactiveElasticsearchRepository.java:60) ~[issue:5.1.0-RC1]
		at [email protected]/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[issue:na]
		at [email protected]/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[issue:na]
		at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211) ~[na:na]
		at org.springframework.data.repository.core.support.RepositoryFactorySupport.lambda$instantiateClass$5(RepositoryFactorySupport.java:571) ~[issue:3.1.0-RC1]
		at [email protected]/java.util.Optional.map(Optional.java:260) ~[issue:na]
		at org.springframework.data.repository.core.support.RepositoryFactorySupport.instantiateClass(RepositoryFactorySupport.java:571) ~[issue:3.1.0-RC1]
		at org.springframework.data.repository.core.support.RepositoryFactorySupport.getTargetRepositoryViaReflection(RepositoryFactorySupport.java:536) ~[issue:3.1.0-RC1]
		at org.springframework.data.elasticsearch.repository.support.ReactiveElasticsearchRepositoryFactory.getTargetRepository(ReactiveElasticsearchRepositoryFactory.java:94) ~[na:na]
		at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:317) ~[issue:3.1.0-RC1]
		at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:279) ~[issue:3.1.0-RC1]
		at org.springframework.data.util.Lazy.getNullable(Lazy.java:245) ~[na:na]
		at org.springframework.data.util.Lazy.get(Lazy.java:114) ~[na:na]
		at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:285) ~[issue:3.1.0-RC1]
		at org.springframework.data.elasticsearch.repository.support.ReactiveElasticsearchRepositoryFactoryBean.afterPropertiesSet(ReactiveElasticsearchRepositoryFactoryBean.java:102) ~[issue:5.1.0-RC1]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1816) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1766) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[issue:6.0.8]
		at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337) ~[issue:6.0.8]
		at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveValue(AutowiredFieldValueResolver.java:189) ~[na:na]
		at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveObject(AutowiredFieldValueResolver.java:154) ~[na:na]
		at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolve(AutowiredFieldValueResolver.java:143) ~[na:na]
		at org.example.SomeService__Autowiring.apply(SomeService__Autowiring.java:14) ~[na:na]
		at org.springframework.beans.factory.support.InstanceSupplier$1.get(InstanceSupplier.java:83) ~[na:na]
		at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:947) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1214) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1158) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[issue:6.0.8]
		at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) ~[issue:6.0.8]
		at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917) ~[issue:6.0.8]
		at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) ~[issue:6.0.8]
		at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66) ~[issue:3.1.0-RC2]
		at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:733) ~[issue:3.1.0-RC2]
		at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:435) ~[issue:3.1.0-RC2]
		at org.springframework.boot.SpringApplication.run(SpringApplication.java:311) ~[issue:3.1.0-RC2]
		at org.springframework.boot.SpringApplication.run(SpringApplication.java:1305) ~[issue:3.1.0-RC2]
		at org.springframework.boot.SpringApplication.run(SpringApplication.java:1294) ~[issue:3.1.0-RC2]
		at org.example.SomeApplication.main(SomeApplication.java:15) ~[issue:na]

@spring-projects-issues spring-projects-issues added status: feedback-provided Feedback has been provided and removed status: waiting-for-feedback We need additional information before we can continue labels May 17, 2023
@patpatpat123
Copy link
Author

Do I need to provide anything else?

@sothawo
Copy link
Collaborator

sothawo commented May 20, 2023

Do I need to provide anything else?

Patience.

I will have a look at this.

@sothawo
Copy link
Collaborator

sothawo commented May 20, 2023

I cannot reproduce this with the provided code.
Both when running the program in a normal JVM and using a compiled native version show the same different error:

non-native

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::            (v3.1.0-RC2)

2023-05-20T14:49:14.484+02:00  INFO 60650 --- [           main] org.example.SomeApplication              : Starting SomeApplication using Java 17.0.7 with PID 60650 (/Users/peter/Entwicklung/Projekte/3rdparty/issue/target/classes started by peter in /Users/peter/Entwicklung/Projekte/3rdparty/issue)
2023-05-20T14:49:14.491+02:00  INFO 60650 --- [           main] org.example.SomeApplication              : No active profile set, falling back to 1 default profile: "default"
2023-05-20T14:49:14.879+02:00  INFO 60650 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode.
2023-05-20T14:49:15.015+02:00  INFO 60650 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 132 ms. Found 1 Reactive Elasticsearch repository interfaces.
2023-05-20T14:49:15.141+02:00  INFO 60650 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Elasticsearch repositories in DEFAULT mode.
2023-05-20T14:49:15.150+02:00  INFO 60650 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 9 ms. Found 0 Elasticsearch repository interfaces.
2023-05-20T14:49:16.299+02:00  INFO 60650 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port 8080
2023-05-20T14:49:16.311+02:00  INFO 60650 --- [           main] org.example.SomeApplication              : Started SomeApplication in 2.402 seconds (process running for 3.113)
2023-05-20T14:50:22.953+02:00 ERROR 60650 --- [     parallel-2] reactor.core.publisher.Operators         : Operator called default onErrorDropped

reactor.core.Exceptions$ErrorCallbackNotImplemented: reactor.core.Exceptions$OverflowException: Could not emit buffer due to lack of requests
Caused by: reactor.core.Exceptions$OverflowException: Could not emit buffer due to lack of requests
	at reactor.core.Exceptions.failWithOverflow(Exceptions.java:249) ~[reactor-core-3.5.5.jar:3.5.5]
	at reactor.core.publisher.FluxBufferTimeout$BufferTimeoutSubscriber.flushCallback(FluxBufferTimeout.java:227) ~[reactor-core-3.5.5.jar:3.5.5]
	at reactor.core.publisher.FluxBufferTimeout$BufferTimeoutSubscriber.lambda$new$0(FluxBufferTimeout.java:158) ~[reactor-core-3.5.5.jar:3.5.5]
	at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84) ~[reactor-core-3.5.5.jar:3.5.5]
	at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37) ~[reactor-core-3.5.5.jar:3.5.5]
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
	at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

native

╰─➤  ./target/issue                                                                                                                                                                                                                                                                                                                                                   1 ↵

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::            (v3.1.0-RC2)

2023-05-20T14:45:31.700+02:00  INFO 60131 --- [           main] org.example.SomeApplication              : Starting AOT-processed SomeApplication using Java 17.0.7 with PID 60131 (/Users/peter/Entwicklung/Projekte/3rdparty/issue/target/issue started by peter in /Users/peter/Entwicklung/Projekte/3rdparty/issue)
2023-05-20T14:45:31.700+02:00  INFO 60131 --- [           main] org.example.SomeApplication              : No active profile set, falling back to 1 default profile: "default"
2023-05-20T14:45:31.776+02:00  INFO 60131 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port 8080
2023-05-20T14:45:31.776+02:00  INFO 60131 --- [           main] org.example.SomeApplication              : Started SomeApplication in 0.088 seconds (process running for 0.1)
2023-05-20T14:45:35.785+02:00 ERROR 60131 --- [     parallel-2] reactor.core.publisher.Operators         : Operator called default onErrorDropped

reactor.core.Exceptions$ErrorCallbackNotImplemented: reactor.core.Exceptions$OverflowException: Could not emit buffer due to lack of requests
Caused by: reactor.core.Exceptions$OverflowException: Could not emit buffer due to lack of requests
	at reactor.core.Exceptions.failWithOverflow(Exceptions.java:249) ~[na:na]
	at reactor.core.publisher.FluxBufferTimeout$BufferTimeoutSubscriber.flushCallback(FluxBufferTimeout.java:227) ~[issue:3.5.5]
	at reactor.core.publisher.FluxBufferTimeout$BufferTimeoutSubscriber.lambda$new$0(FluxBufferTimeout.java:158) ~[issue:3.5.5]
	at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84) ~[issue:3.5.5]
	at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37) ~[issue:3.5.5]
	at [email protected]/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[issue:na]
	at [email protected]/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]
	at [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[issue:na]
	at [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
	at [email protected]/java.lang.Thread.run(Thread.java:833) ~[issue:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:775) ~[issue:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:203) ~[na:na]

@sothawo sothawo added status: waiting-for-feedback We need additional information before we can continue and removed status: feedback-provided Feedback has been provided labels May 20, 2023
@patpatpat123
Copy link
Author

Thanks for looking, I wasn't rushing anything.

With that said, this is quite interesting.

I managed to reproduce this on Linux, Windows and Mac, so probably not OS related issue.
The GraalVM version I am using is GraalVM Community 22.3
And I am using the command mvn -Pnative native:compile

May I ask which version of GraalVM and maven command are you using?

@spring-projects-issues spring-projects-issues added status: feedback-provided Feedback has been provided and removed status: waiting-for-feedback We need additional information before we can continue labels May 20, 2023
@patpatpat123
Copy link
Author

During the day, I shared this code with several colleagues and they were able to reproduce it. Still looking for someone who is not able to reproduce to see what are the differences

@sothawo
Copy link
Collaborator

sothawo commented May 23, 2023

May I ask which version of GraalVM and maven command are you using?

22.3.2.r17-nik, and mvn -Pnative native:compile like described in the Spring Boot documentation

@patpatpat123
Copy link
Author

We were 6 to try with this java:

java --version
openjdk 17.0.5 2022-10-18
OpenJDK Runtime Environment GraalVM CE 22.3.0 (build 17.0.5+8-jvmci-22.3-b08)
OpenJDK 64-Bit Server VM GraalVM CE 22.3.0 (build 17.0.5+8-jvmci-22.3-b08, mixed mode, sharing)

And could reproduce, let me try with you GraalVM and get back

@patpatpat123
Copy link
Author

And also, if I may ask, are you compiling with or without this maven block?

<plugin>
    <groupId>org.graalvm.buildtools</groupId>
    <artifactId>native-maven-plugin</artifactId>
</plugin>

@sothawo
Copy link
Collaborator

sothawo commented May 24, 2023

I am using the pom.xml from your project, the only change I did is adding basic auth to the configuration because my Elasticsearch instance needs that.

@sothawo
Copy link
Collaborator

sothawo commented May 24, 2023

I now found the reason wjy I didn't observe the error: It's happening on index creation, and I had the program run first non-native and that created the index without problems, the later native executions did not need to create the index. When deleting the index from Elasticsearch.

Will have a look later this week.

@patpatpat123
Copy link
Author

many thanks

@sothawo
Copy link
Collaborator

sothawo commented May 28, 2023

I could reproduce this with imperative code as well. The problem is that the Elasticsearch libraries do not provide AOT runtime hints. I will try to get as many as needed and add them to Spring Data Elasticsearch (see #2575).

For your problem, I got it running by adding two runtime hints:

ElasticsearchClientRuntimeHints.java:

package org.example;

import co.elastic.clients.elasticsearch._types.mapping.TypeMapping;
import co.elastic.clients.elasticsearch.indices.IndexSettings;
import org.springframework.aot.hint.*;
public class ElasticsearchClientRuntimeHints implements RuntimeHintsRegistrar {
  @Override
  public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
    hints.reflection()
        .registerType(TypeReference.of(IndexSettings.class), builder -> builder.withField("_DESERIALIZER"))
        .registerType(TypeReference.of(TypeMapping.class), builder -> builder.withField("_DESERIALIZER"));
  }
}

SomeAppplication.java:

package org.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportRuntimeHints;

@SpringBootApplication
@ImportRuntimeHints(ElasticsearchClientRuntimeHints.class)  // <=== this is new
public class SomeApplication {
  public static void main(final String[] args) {
    SpringApplication.run(SomeApplication.class);
  }
}

If you come across more missing things, add them to the runtime hints, check the current Spring Boot documentation about this topic.

@sothawo sothawo closed this as completed May 28, 2023
@patpatpat123
Copy link
Author

thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: feedback-provided Feedback has been provided
Projects
None yet
Development

No branches or pull requests

3 participants