问题描述
最近公司把项目都开源至公司内部的gitlab上面,所有的单元测试都是通过gitlab中的CI脚本来运行的,可是在CI上面跑单元测试时产生如下图错误:
![redis_error](medhttps://raw.githubusercontent.com/smartlin/pic/main/_posts/redis/redis%E4%B8%8D%E8%83%BD%E8%A7%A3%E6%9E%90localhost%E5%9C%B0%E5%9D%80.md/redis_error.png
当时纳闷了,为什么本地环境没问题,代码在GitLab上的服务器就有问题了?
问题解决
仔细看了下错误信息,发现就是Jedis里面报错,查看源码也找到了报错的地方,如下代码:
简单的分析了下,此处报错就是为获取到服务器上localhost address
于是登陆CI服务器,查看hostname后,https://raw.githubusercontent.com/smartlin/pic/main/_posts/redis/redis%E4%B8%8D%E8%83%BD%E8%A7%A3%E6%9E%90localhost%E5%9C%B0%E5%9D%80.md/bug.png
在host文件中的localhost后添加hostname即可
配置完成后,神奇般的好了,不在报之前的错误,单元测试也OK了
刨根问底
那么问题来了,Jedis为什么要获取linux主机的hostname了?
终于让我在stackoverflow找到答案,详情请点击,居然是个bug,天呐!!!!使用2.9.x之后的版本即可解决此问题,截图如下:
end,感谢阅读!!!