当前位置: 代码网 > it编程>编程语言>Java > 升级springboot3.x踩坑记录

升级springboot3.x踩坑记录

2024年05月28日 Java 我要评论
0x01 redis连接异常先贴一张项目启动的堆栈信息2023-02-06 11:20:14:162 warn [boundedelastic-1] o.s.b.a.d.r.redisreacti

0x01 redis连接异常

先贴一张项目启动的堆栈信息

2023-02-06 11:20:14:162 warn   [boundedelastic-1] o.s.b.a.d.r.redisreactivehealthindicator -redis health check failed
org.springframework.data.redis.redisconnectionfailureexception: unable to connect to redis
	at org.springframework.data.redis.connection.lettuce.lettuceconnectionfactory$exceptiontranslatingconnectionprovider.translateexception(lettuceconnectionfactory.java:1602)
	at org.springframework.data.redis.connection.lettuce.lettuceconnectionfactory$exceptiontranslatingconnectionprovider.getconnection(lettuceconnectionfactory.java:1533)
	at org.springframework.data.redis.connection.lettuce.lettuceconnectionfactory$sharedconnection.getnativeconnection(lettuceconnectionfactory.java:1358)
	at org.springframework.data.redis.connection.lettuce.lettuceconnectionfactory$sharedconnection.getconnection(lettuceconnectionfactory.java:1341)
	at org.springframework.data.redis.connection.lettuce.lettuceconnectionfactory.getsharedreactiveconnection(lettuceconnectionfactory.java:1083)
	at org.springframework.data.redis.connection.lettuce.lettuceconnectionfactory.getreactiveconnection(lettuceconnectionfactory.java:479)
	at org.springframework.data.redis.connection.lettuce.lettuceconnectionfactory.getreactiveconnection(lettuceconnectionfactory.java:105)
	at reactor.core.publisher.monosupplier.call(monosupplier.java:67)
	at reactor.core.publisher.fluxsubscribeoncallable$callablesubscribeonsubscription.run(fluxsubscribeoncallable.java:227)
	at reactor.core.scheduler.schedulertask.call(schedulertask.java:68)
	at reactor.core.scheduler.schedulertask.call(schedulertask.java:28)
	at java.base/java.util.concurrent.futuretask.run(futuretask.java:264)
	at java.base/java.util.concurrent.scheduledthreadpoolexecutor$scheduledfuturetask.run(scheduledthreadpoolexecutor.java:304)
	at java.base/java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1136)
	at java.base/java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:635)
	at java.base/java.lang.thread.run(thread.java:833)
caused by: org.springframework.data.redis.connection.poolexception: could not get a resource from the pool
	at org.springframework.data.redis.connection.lettuce.lettucepoolingconnectionprovider.getconnection(lettucepoolingconnectionprovider.java:105)
	at org.springframework.data.redis.connection.lettuce.lettuceconnectionfactory$exceptiontranslatingconnectionprovider.getconnection(lettuceconnectionfactory.java:1531)
	... 14 common frames omitted
caused by: io.lettuce.core.redisconnectionexception: unable to connect to localhost/<unresolved>: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:350)
	at io.lettuce.core.redisclient.connect(redisclient.java:216)
	at org.springframework.data.redis.connection.lettuce.standaloneconnectionprovider.lambda$getconnection$1(standaloneconnectionprovider.java:111)
	at java.base/java.util.optional.orelseget(optional.java:364)
	at org.springframework.data.redis.connection.lettuce.standaloneconnectionprovider.getconnection(standaloneconnectionprovider.java:111)
	at org.springframework.data.redis.connection.lettuce.lettucepoolingconnectionprovider.lambda$getconnection$0(lettucepoolingconnectionprovider.java:93)
	at io.lettuce.core.support.connectionpoolsupport$redispooledobjectfactory.create(connectionpoolsupport.java:211)
	at io.lettuce.core.support.connectionpoolsupport$redispooledobjectfactory.create(connectionpoolsupport.java:201)
	at org.apache.commons.pool2.basepooledobjectfactory.makeobject(basepooledobjectfactory.java:70)
	at org.apache.commons.pool2.impl.genericobjectpool.create(genericobjectpool.java:571)
	at org.apache.commons.pool2.impl.genericobjectpool.borrowobject(genericobjectpool.java:298)
	at org.apache.commons.pool2.impl.genericobjectpool.borrowobject(genericobjectpool.java:223)
	at io.lettuce.core.support.connectionpoolsupport$1.borrowobject(connectionpoolsupport.java:122)
	at io.lettuce.core.support.connectionpoolsupport$1.borrowobject(connectionpoolsupport.java:117)
	at org.springframework.data.redis.connection.lettuce.lettucepoolingconnectionprovider.getconnection(lettucepoolingconnectionprovider.java:99)
	... 15 common frames omitted
caused by: io.netty.channel.abstractchannel$annotatedconnectexception: connection refused: no further information: localhost/127.0.0.1:6379
caused by: java.net.connectexception: connection refused: no further information
	at java.base/sun.nio.ch.net.pollconnect(native method)
	at java.base/sun.nio.ch.net.pollconnectnow(net.java:672)
	at java.base/sun.nio.ch.socketchannelimpl.finishconnect(socketchannelimpl.java:946)
	at io.netty.channel.socket.nio.niosocketchannel.dofinishconnect(niosocketchannel.java:337)
	at io.netty.channel.nio.abstractniochannel$abstractniounsafe.finishconnect(abstractniochannel.java:334)
	at io.netty.channel.nio.nioeventloop.processselectedkey(nioeventloop.java:776)
	at io.netty.channel.nio.nioeventloop.processselectedkeysoptimized(nioeventloop.java:724)
	at io.netty.channel.nio.nioeventloop.processselectedkeys(nioeventloop.java:650)
	at io.netty.channel.nio.nioeventloop.run(nioeventloop.java:562)
	at io.netty.util.concurrent.singlethreadeventexecutor$4.run(singlethreadeventexecutor.java:997)
	at io.netty.util.internal.threadexecutormap$2.run(threadexecutormap.java:74)
	at io.netty.util.concurrent.fastthreadlocalrunnable.run(fastthreadlocalrunnable.java:30)
	at java.base/java.lang.thread.run(thread.java:833)

在升级springboot3.x后启动项目发现redis连接报错了,根据堆栈异常信息发现redis竟然去链接了本地服务,该项目使用了nacos配置也都在上,突然的异常感觉挺奇怪的,本来以为是升级后无法拉取到nacos的配置信息了后经验证使用@value注解或者其他配置类均未发生该问题,那就只能怀疑是spring对redis的配置支持改变了,所以直接点就去找了redis的自动配置类发现确实改变了配置前缀为spring.data.redis(原该项目springboot版本为2.7.4时redis配置前缀为spring.redis)贴一下版本属性内容对比图

3.x版本时:

@configurationproperties(prefix = "spring.data.redis")
public class redisproperties {

	/**
	 * database index used by the connection factory.
	 */
	private int database = 0;

	/**
	 * connection url. overrides host, port, and password. user is ignored. example:
	 * redis://user:password@example.com:6379
	 */
	private string url;

	/**
	 * redis server host.
	 */
	private string host = "localhost";

	/**
	 * login username of the redis server.
	 */
	private string username;

	/**
	 * login password of the redis server.
	 */
	private string password;

	/**
	 * redis server port.
	 */
	private int port = 6379;

	/**
	 * whether to enable ssl support.
	 */
	private boolean ssl;

	/**
	 * read timeout.
	 */
	private duration timeout;

	/**
	 * connection timeout.
	 */
	private duration connecttimeout;

	/**
	 * client name to be set on connections with client setname.
	 */
	private string clientname;

	/**
	 * type of client to use. by default, auto-detected according to the classpath.
	 */
	private clienttype clienttype;

	private sentinel sentinel;

	private cluster cluster;

	private final jedis jedis = new jedis();

	private final lettuce lettuce = new lettuce();

}

2.7.4版本时:

@configurationproperties(prefix = "spring.redis")
public class redisproperties {

	/**
	 * database index used by the connection factory.
	 */
	private int database = 0;

	/**
	 * connection url. overrides host, port, and password. user is ignored. example:
	 * redis://user:password@example.com:6379
	 */
	private string url;

	/**
	 * redis server host.
	 */
	private string host = "localhost";

	/**
	 * login username of the redis server.
	 */
	private string username;

	/**
	 * login password of the redis server.
	 */
	private string password;

	/**
	 * redis server port.
	 */
	private int port = 6379;

	/**
	 * whether to enable ssl support.
	 */
	private boolean ssl;

	/**
	 * read timeout.
	 */
	private duration timeout;

	/**
	 * connection timeout.
	 */
	private duration connecttimeout;

	/**
	 * client name to be set on connections with client setname.
	 */
	private string clientname;

	/**
	 * type of client to use. by default, auto-detected according to the classpath.
	 */
	private clienttype clienttype;

	private sentinel sentinel;

	private cluster cluster;

	private final jedis jedis = new jedis();

	private final lettuce lettuce = new lettuce();

}

至此问题解决。

到此这篇关于升级springboot3.x踩坑记录的文章就介绍到这了,更多相关升级springboot3.x 内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com