We are using spring-boot-starter-data-redis-reactive. our redis server has ssl protective with ssl certrificate. how to create a RedisClient bean with these configuration to use in microstreams?
We have created below Configuration and bean not sure how to to inject LettuceConnectionFactory in redis client.
@Configuration
@RequiredArgsConstructor
public class RedisConfig {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;
@Value("${spring.redis.password}")
private String password;
@Value("${spring.redis.ssl:false}")
private boolean sslEnabled;
@Value("${spring.redis.ssl-cert-file}")
private String pemFile;
@Autowired
private ResourceLoader resourceLoader;
@Bean
public ReactiveRedisConnectionFactory reactiveRedisConnectionFactory() throws IOException {
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
redisStandaloneConfiguration.setHostName(host);
redisStandaloneConfiguration.setPort(port);
redisStandaloneConfiguration.setPassword(password);
LettuceClientConfiguration.LettuceClientConfigurationBuilder lettuceClientConfigurationBuilder =
LettuceClientConfiguration.builder();
if (sslEnabled){
SslOptions sslOptions = SslOptions.builder()
.trustManager(resourceLoader.getResource("file:"+pemFile).getFile())
.build();
ClientOptions clientOptions = ClientOptions
.builder()
.sslOptions(sslOptions)
.protocolVersion(ProtocolVersion.RESP3)
.build();
lettuceClientConfigurationBuilder
.clientOptions(clientOptions)
.useSsl();
}
LettuceClientConfiguration lettuceClientConfiguration = lettuceClientConfigurationBuilder.build();
return new LettuceConnectionFactory(redisStandaloneConfiguration, lettuceClientConfiguration);
}
@Bean
public RedisClient redisClient() {
RedisURI redisUri = RedisURI.Builder.redis(host, port)
.withSsl(true)
.build();
return RedisClient.create(redisUri);
}
}
Getting below error:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'streamApplication': Unsatisfied dependency expressed through field 'updateDataPeriodically': Error creating bean with name 'updateDataPeriodically' defined in file [/Users/id/Downloads/stream/build/classes/java/main/com/micro/stream/UpdateDataPeriodically.class]: Unsatisfied dependency expressed through constructor parameter 1: Error creating bean with name 'testDataRepo' defined in file [/Users/id/Downloads/stream/build/classes/java/main/com/micro/stream/TestDataRepo.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'rootObject': Unsatisfied dependency expressed through field 'storageManager': Error creating bean with name 'defineStorageManager' defined in class path resource [com/micro/stream/MicroConfig.class]: Failed to instantiate [one.microstream.storage.types.StorageManager]: Factory method 'defineStorageManager' threw exception with message: null\
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:710) ~[spring-beans-6.0.9.jar:6.0.9]\
... 20 common frames omitted\
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'testDataRepo' defined in file [/Users/id/Downloads/stream/build/classes/java/main/com/micro/stream/TestDataRepo.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'rootObject': Unsatisfied dependency expressed through field 'storageManager': Error creating bean with name 'defineStorageManager' defined in class path resource [com/micro/stream/MicroConfig.class]: Failed to instantiate [one.microstream.storage.types.StorageManager]: Factory method 'defineStorageManager' threw exception with message: null\
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:245) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1189) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.9.jar:6.0.9]\
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'testDataRepo' defined in file [/Users/id/Downloads/stream/build/classes/java/main/com/micro/stream/TestDataRepo.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'rootObject': Unsatisfied dependency expressed through field 'storageManager': Error creating bean with name 'defineStorageManager' defined in class path resource [com/micro/stream/MicroConfig.class]: Failed to instantiate [one.microstream.storage.types.StorageManager]: Factory method 'defineStorageManager' threw exception with message: null\
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:888) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-6.0.9.jar:6.0.9]\
... 33 common frames omitted\
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'rootObject': Unsatisfied dependency expressed through field 'storageManager': Error creating bean with name 'defineStorageManager' defined in class path resource [com/micro/stream/MicroConfig.class]: Failed to instantiate [one.microstream.storage.types.StorageManager]: Factory method 'defineStorageManager' threw exception with message: null\
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:713) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:693) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:133) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:482) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1416) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:597) ~[spring-beans-6.0.9.jar:6.0.9]\
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'rootObject': Unsatisfied dependency expressed through field 'storageManager': Error creating bean with name 'defineStorageManager' defined in class path resource [com/micro/stream/MicroConfig.class]: Failed to instantiate [one.microstream.storage.types.StorageManager]: Factory method 'defineStorageManager' threw exception with message: null\
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:888) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-6.0.9.jar:6.0.9]\
... 47 common frames omitted\
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defineStorageManager' defined in class path resource [com/micro/stream/MicroConfig.class]: Failed to instantiate [one.microstream.storage.types.StorageManager]: Factory method 'defineStorageManager' threw exception with message: null\
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:659) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:493) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1332) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1162) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[spring-beans-6.0.9.jar:6.0.9]\
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defineStorageManager' defined in class path resource [com/micro/stream/MicroConfig.class]: Failed to instantiate [one.microstream.storage.types.StorageManager]: Factory method 'defineStorageManager' threw exception with message: null\
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:710) ~[spring-beans-6.0.9.jar:6.0.9]\
... 62 common frames omitted\
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [one.microstream.storage.types.StorageManager]: Factory method 'defineStorageManager' threw exception with message: null\
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:171) ~[spring-beans-6.0.9.jar:6.0.9]\
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:655) ~[spring-beans-6.0.9.jar:6.0.9]\
... 75 common frames omitted\
Caused by: one.microstream.persistence.exceptions.PersistenceExceptionSource: null\
at one.microstream.persistence.internal.PersistenceTypeDictionaryFileHandler.readTypeDictionary(PersistenceTypeDictionaryFileHandler.java:76) ~[microstream-persistence-08.01.00-MS-GA.jar:na]\
at one.microstream.persistence.internal.PersistenceTypeDictionaryFileHandler.readTypeDictionary(PersistenceTypeDictionaryFileHandler.java:49) ~[microstream-persistence-08.01.00-MS-GA.jar:na]\
at one.microstream.persistence.internal.PersistenceTypeDictionaryFileHandler.loadTypeDictionary(PersistenceTypeDictionaryFileHandler.java:198) ~[microstream-persistence-08.01.00-MS-GA.jar:na]\
at one.microstream.persistence.types.PersistenceTypeDictionaryProvider$Default.provideTypeDictionary(PersistenceTypeDictionaryProvider.java:77) ~[microstream-persistence-08.01.00-MS-GA.jar:na]\
at one.microstream.persistence.types.PersistenceTypeDictionaryProvider$Caching.provideTypeDictionary(PersistenceTypeDictionaryProvider.java:130) ~[microstream-persistence-08.01.00-MS-GA.jar:na]\
at one.microstream.persistence.types.PersistenceTypeDictionaryManager$Exporting.internalProvideTypeDictionary(PersistenceTypeDictionaryManager.java:248) ~[microstream-persistence-08.01.00-MS-GA.jar:na]\
at one.microstream.persistence.types.PersistenceTypeDictionaryManager$Abstract.ensureTypeDictionary(PersistenceTypeDictionaryManager.java:111) ~[microstream-persistence-08.01.00-MS-GA.jar:na]\
at one.microstream.persistence.types.PersistenceTypeDictionaryManager$Abstract.provideTypeDictionary(PersistenceTypeDictionaryManager.java:125) ~[microstream-persistence-08.01.00-MS-GA.jar:na]\
at one.microstream.persistence.types.PersistenceTypeHandlerManager$Default.synchInternalInitialize(PersistenceTypeHandlerManager.java:965) ~[microstream-persistence-08.01.00-MS-GA.jar:na]\
at one.microstream.persistence.types.PersistenceTypeHandlerManager$Default.initialize(PersistenceTypeHandlerManager.java:957) ~[microstream-persistence-08.01.00-MS-GA.jar:na]\
at one.microstream.storage.embedded.types.EmbeddedStorageFoundation$Default.createEmbeddedStorageManager(EmbeddedStorageFoundation.java:803) ~[microstream-storage-embedded-08.01.00-MS-GA.jar:na]\
at one.microstream.storage.embedded.types.EmbeddedStorageFoundation.createEmbeddedStorageManager(EmbeddedStorageFoundation.java:178) ~[microstream-storage-embedded-08.01.00-MS-GA.jar:na]\
at com.micro.stream.MicroConfig.defineStorageManager(MicroConfig.java:58) ~[main/:na]\
at com.micro.stream.MicroConfig$$SpringCGLIB$$0.CGLIB$defineStorageManager$0(<generated>) ~[main/:na]\
at com.micro.stream.MicroConfig$$SpringCGLIB$$2.invoke(<generated>) ~[main/:na]\
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258) ~[spring-core-6.0.9.jar:6.0.9]\
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [one.microstream.storage.types.StorageManager]: Factory method 'defineStorageManager' threw exception with message: null\
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-6.0.9.jar:6.0.9]\
at com.micro.stream.MicroConfig$$SpringCGLIB$$0.defineStorageManager(<generated>) ~[main/:na]\
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]\
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]\
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]\
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]\
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:139) ~[spring-beans-6.0.9.jar:6.0.9]\
Caused by: one.microstream.persistence.exceptions.PersistenceExceptionSource: null\
... 76 common frames omitted\
Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to <IP_ADDRESS>/<unresolved>:6378\
at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) ~[lettuce-core-6.2.4.RELEASE.jar:6.2.4.RELEASE]\
at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) ~[lettuce-core-6.2.4.RELEASE.jar:6.2.4.RELEASE]\
at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:350) ~[lettuce-core-6.2.4.RELEASE.jar:6.2.4.RELEASE]\
at io.lettuce.core.RedisClient.connect(RedisClient.java:216) ~[lettuce-core-6.2.4.RELEASE.jar:6.2.4.RELEASE]\
at one.microstream.afs.redis.types.RedisConnector$Default.commands(RedisConnector.java:152) ~[microstream-afs-redis-08.01.00-MS-GA.jar:na]\
at one.microstream.afs.redis.types.RedisConnector$Default.blobs(RedisConnector.java:171) ~[microstream-afs-redis-08.01.00-MS-GA.jar:na]\
at one.microstream.afs.blobstore.types.BlobStoreConnector$Abstract.internalFileExists(BlobStoreConnector.java:315) ~[microstream-afs-blobstore-08.01.00-MS-GA.jar:na]\
at one.microstream.afs.blobstore.types.BlobStoreConnector$Abstract.fileExists(BlobStoreConnector.java:692) ~[microstream-afs-blobstore-08.01.00-MS-GA.jar:na]\
at one.microstream.afs.blobstore.types.BlobStoreIoHandler$Default.subjectFileExists(BlobStoreIoHandler.java:136) ~[microstream-afs-blobstore-08.01.00-MS-GA.jar:na]\
at one.microstream.afs.blobstore.types.BlobStoreIoHandler$Default.subjectFileExists(BlobStoreIoHandler.java:65) ~[microstream-afs-blobstore-08.01.00-MS-GA.jar:na]\
at one.microstream.afs.types.AIoHandler$Abstract.exists(AIoHandler.java:532) ~[microstream-afs-08.01.00-MS-GA.jar:na]\
at one.microstream.afs.types.AFile.exists(AFile.java:145) ~[microstream-afs-08.01.00-MS-GA.jar:na]\
at one.microstream.persistence.internal.PersistenceTypeDictionaryFileHandler.readTypeDictionary(PersistenceTypeDictionaryFileHandler.java:56) ~[microstream-persistence-08.01.00-MS-GA.jar:na]\
... 98 common frames omitted\
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131) ~[na:na]\
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:371) ~[na:na]\
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:314) ~[na:na]\
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:309) ~[na:na]\
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1357) ~[na:na]\
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1232) ~[na:na]\
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1175) ~[na:na]\
at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396) ~[na:na]\
at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480) ~[na:na]\
at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1277) ~[na:na]\
Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to <IP_ADDRESS>/<unresolved>:6378\
at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1264) ~[na:na]\
at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) ~[na:na]\
at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask.run(SSLEngineImpl.java:1209) ~[na:na]\
at io.netty.handler.ssl.SslHandler.runDelegatedTasks(SslHandler.java:1559) ~[netty-handler-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1405) ~[netty-handler-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1246) ~[netty-handler-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1295) ~[netty-handler-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529) ~[netty-codec-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468) ~[netty-codec-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290) ~[netty-codec-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[netty-transport-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[netty-transport-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.92.Final.jar:4.1.92.Final]\
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[netty-transport-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) ~[netty-transport-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) ~[netty-transport-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) ~[netty-transport-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[netty-transport-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.92.Final.jar:4.1.92.Final]\
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.92.Final.jar:4.1.92.Final]\
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]\
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\
at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439) ~[na:na]\
at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306) ~[na:na]\
at java.base/sun.security.validator.Validator.validate(Validator.java:264) ~[na:na]\
at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:285) ~[na:na]\
at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:144) ~[na:na]\
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1335) ~[na:na]\
... 31 common frames omitted\
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\
at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141) ~[na:na]\
at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126) ~[na:na]\
at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297) ~[na:na]\
at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434) ~[na:na]\
... 36 common frames omitted\
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target}
This problem has nothing to do with Microstream or Spring. It's that the Java Client cannot validate your certificate on Redis. So either you have to upload a public key to the JVM or use some certificate on a publicly recognized authority that is already in the JVM.
for example:
java8
java 11