1.前提介绍

redis: 5.0.0版本

jdk:1.8

之前还好着的,今天重新ci部署发现项目报错了

2.报错详细堆栈

Caused by: redis.clients.jedis.exceptions.JedisNoReachableClusterNodeException: No reachable node in cluster
	at redis.clients.jedis.JedisSlotBasedConnectionHandler.getConnection(JedisSlotBasedConnectionHandler.java:57)
	at redis.clients.jedis.JedisSlotBasedConnectionHandler.getConnectionFromSlot(JedisSlotBasedConnectionHandler.java:74)
	at redis.clients.jedis.JedisClusterCommand.runWithRetries(JedisClusterCommand.java:116)
	at redis.clients.jedis.JedisClusterCommand.run(JedisClusterCommand.java:31)
	at redis.clients.jedis.JedisCluster.hincrBy(JedisCluster.java:444)
	at MonitorAdvice$$anonfun$main$1$$anonfun$apply$5$$anonfun$apply$6.apply(MonitorAdvice.scala:96)
	at MonitorAdvice$$anonfun$main$1$$anonfun$apply$5$$anonfun$apply$6.apply(MonitorAdvice.scala:95)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at org.apache.spark.util.CompletionIterator.foreach(CompletionIterator.scala:26)
	at MonitorAdvice$$anonfun$main$1$$anonfun$apply$5.apply(MonitorAdvice.scala:95)
	at MonitorAdvice$$anonfun$main$1$$anonfun$apply$5.apply(MonitorAdvice.scala:93)
	at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:926)
	at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:926)
	at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2069)
	at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2069)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
	at org.apache.spark.scheduler.Task.run(Task.scala:108)

3.解决思路

3.1 查看集群是否正常
  • redis-cli 连接上集群
  • 输入cluster info命令
  • 我的集群状态是ok
3.2 查看最近代码提交

查看最近与redis相关的代码提交,发现了如下
伪代码:

JedisCluster jedisCluster = ......

.....do something .....

jedisCluster.close();   // 集群的连接不需要手动释放,集群自动释放

发现问题,注释掉jedisCluster.close()重启项目,解决问题。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐