Error when building the project using Lettuce.

1,775 views
Skip to first unread message

Gael Yimen

unread,
Jul 27, 2018, 12:01:38 PM7/27/18
to lettuce-redis-client-users
Hi everyone,

I'm using the following class in my project to handle Redis caching.

import io.lettuce.core.RedisCommandExecutionException;
import io.lettuce.core.RedisException;
import io.lettuce.core.api.StatefulRedisConnection;
import io.lettuce.core.api.sync.RedisCommands;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;


@Component
public class LettuceClient {


 
private static final Logger LOGGER = LoggerFactory.getLogger(LettuceClient.class);


 
@Autowired
 
private StatefulRedisConnection connection;


 
/**
   * Gets the value of the given key from the cache.
   *
   * @param key The key of the value in the Redis cache.
   * @return Object asociated to the above key in the Redis cache.
   */

 
public Object get(final String key) {
   
final RedisCommands<String, Object> commands = connection.sync();
   
Object obj = null;
   
try {
      obj
= commands.get(key);
     
return obj;
   
} catch (RedisCommandExecutionException cmdEx) {
      LOGGER
.error("Redis responds with an error");
   
} catch (RedisException redisException) {
      LOGGER
.error("Fail to return result before the timeout expires", obj);
   
}
   
return null;
 
}


 
/**
   * Sets a new element in the cache.
   *
   * @param key The key of the element to add in the cache.
   * @param value The value we want to add to the cache.
   */

 
public void set(final String key, final Object value) {
   
final RedisCommands<String, Object> commands = connection.sync();
   
try {
     
final String result = commands.set(key, value);
      LOGGER
.info("Object added to the cache : " + result);
   
} catch (RedisCommandExecutionException cmdEx) {
      LOGGER
.error("Redis responds with an error");
   
} catch (RedisException redisException) {
      LOGGER
.error("Fail to add result before the timeout expires");
   
}
 
}


 
/**
   * Deletes an entry from the cache.
   *
   * @param key The key of the entry we want to remove from the cache.
   */

 
public void delete(final String key) {
   
final RedisCommands<String, Object> commands = connection.sync();
   
try {
     
final Long result = commands.del(key);
      LOGGER
.info("Object deleted from the cache : " + result);
   
} catch (RedisCommandExecutionException cmdEx) {
      LOGGER
.error("Redis responds with an error");
   
} catch (RedisException redisException) {
      LOGGER
.error("Fail to delete entry before the timeout expires");
   
}
 
}
}


But when I'm packaging the project using Maven, I'm having the following error message :

2018-07-26 15:05:19.484  INFO 86494 --- [           main] io.lettuce.core.EpollProvider            : Starting without optional epoll library
2018-07-26 15:05:19.485  INFO 86494 --- [           main] io.lettuce.core.KqueueProvider           : Starting without optional kqueue library
2018-07-26 15:05:19.617  WARN 86494 --- [           main] o.s.w.c.s.GenericWebApplicationContext   : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'lettuceClient': Unsatisfied dependency expressed through field 'connection'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'connection' defined in class path resource [com/consort/www/mytrip/configuration/CacheLettuceConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.lettuce.core.api.StatefulRedisConnection]: Factory method 'connection' threw exception; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379
2018-07-26 15:05:19.629  INFO 86494 --- [           main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2018-07-26 15:05:19.644  INFO 86494 --- [           main] utoConfigurationReportLoggingInitializer :


Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2018-07-26 15:05:19.650 ERROR 86494 --- [           main] o.s.boot.SpringApplication               : Application startup failed


org
.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'lettuceClient': Unsatisfied dependency expressed through field 'connection'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'connection' defined in class path resource [com/consort/www/mytrip/configuration/CacheLettuceConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.lettuce.core.api.StatefulRedisConnection]: Factory method 'connection' threw exception; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379
 at org
.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588)
 at org
.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
 at org
.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366)
 at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264)
 at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
 at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
 at org
.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
 at org
.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
 at org
.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
 at org
.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
 at org
.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
 at org
.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
 at org
.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
 at org
.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
 at org
.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
 at org
.springframework.boot.SpringApplication.run(SpringApplication.java:303)
 at org
.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
 at org
.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98)
 at org
.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116)
 at org
.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)
 at org
.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:189)
 at org
.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:131)
 at org
.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230)
 at org
.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228)
 at org
.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287)
 at org
.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
 at org
.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289)
 at org
.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247)
 at org
.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
 at org
.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
 at org
.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
 at org
.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
 at org
.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
 at org
.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
 at org
.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
 at org
.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
 at org
.junit.runners.ParentRunner.run(ParentRunner.java:363)
 at org
.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
 at org
.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:283)
 at org
.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173)
 at org
.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
 at org
.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128)
 at org
.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)
 at org
.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)
 at org
.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'connection' defined in class path resource [com/consort/www/mytrip/configuration/CacheLettuceConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.lettuce.core.api.StatefulRedisConnection]: Factory method 'connection' threw exception; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379
 at org
.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599)
 at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173)
 at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067)
 at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
 at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
 at org
.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
 at org
.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
 at org
.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
 at org
.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
 at org
.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
 at org
.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
 at org
.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
 at org
.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585)
 
... 44 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.lettuce.core.api.StatefulRedisConnection]: Factory method 'connection' threw exception; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379
 at org
.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
 at org
.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)
 
... 56 common frames omitted
Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379
 at io
.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78)
 at io
.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56)
 at io
.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:234)
 at io
.lettuce.core.RedisClient.connect(RedisClient.java:205)
 at com
.consort.www.mytrip.configuration.CacheLettuceConfig.connection(CacheLettuceConfig.java:53)
 at com
.consort.www.mytrip.configuration.CacheLettuceConfig$$EnhancerBySpringCGLIB$$30d624d3.CGLIB$connection$0(<generated>)
 at com
.consort.www.mytrip.configuration.CacheLettuceConfig$$EnhancerBySpringCGLIB$$30d624d3$$FastClassBySpringCGLIB$$399c418.invoke(<generated>)
 at org
.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
 at org
.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358)
 at com
.consort.www.mytrip.configuration.CacheLettuceConfig$$EnhancerBySpringCGLIB$$30d624d3.connection(<generated>)
 at sun
.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 at sun
.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java
.lang.reflect.Method.invoke(Method.java:498)
 at org
.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)
 
... 57 common frames omitted
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/127.0.0.1:6379
 at sun
.nio.ch.SocketChannelImpl.checkConnect(Native Method)
 at sun
.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
 at io
.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:325)
 at io
.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:340)
 at io
.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:633)
 at io
.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:580)
 at io
.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:497)
 at io
.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:459)
 at io
.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
 at io
.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
 at java
.lang.Thread.run(Thread.java:748)
Caused by: java.net.ConnectException: Connection refused
 
... 11 common frames omitted


2018-07-26 15:05:19.652 ERROR 86494 --- [           main] o.s.test.context.TestContextManager      : Caught exception while allowing TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener@665df3c6] to prepare test instance [com.consort.www.mytrip.BootStarterTests@1c22642d]


java
.lang.IllegalStateException: Failed to load ApplicationContext
 at org
.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
 at org
.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)
 at org
.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:189)
 at org
.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:131)
 at org
.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230)
 at org
.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228)
 at org
.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287)
 at org
.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
 at org
.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289)
 at org
.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247)
 at org
.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
 at org
.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
 at org
.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
 at org
.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
 at org
.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
 at org
.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
 at org
.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
 at org
.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
 at org
.junit.runners.ParentRunner.run(ParentRunner.java:363)
 at org
.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
 at org
.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:283)
 at org
.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173)
 at org
.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
 at org
.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128)
 at org
.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)
 at org
.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)
 at org
.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)


Can someone please help me to figure out the issue and also help me write unit test for that specific class, I'm new to lettuce ?

Best,
Gael
Reply all
Reply to author
Forward
0 new messages