【XXXX项目上线】 原来就有在生产上运行的项目
basic-cloud-basic-data 上线
dev 部署 正常 ,
test1部署大部分正常,
uat部署正常(出现过一次不正常,后来自己好了) 因为最后上线的当天才上uat测试
prod上线, 一次都不正常,
见鬼了 见鬼了,
解决问题顺利
1、jenkins 清理工作空间 重发 不正常
2、查看日志 ibatis.reflection.ReflectionException: Could not set property 'noChar' of 'class com.pica.cloud.foundation.basic.data.vo.ConstantsView' with value '' Cause: org.apache.ibatis.reflection.ReflectionException: There is no setter for property named 'noChar' in 'class com.pica.cloud.foundation.basic.data.vo.ConstantsView'
奇怪,看代码 这个ConstantsView 是有对应的属性noChar的,
并且本地运行没有问题!
3、把对应的jar拿到本地进行查看 没有问题 确定jar没有问题
4、见鬼了,, 把uat环境正常运行的pica-cloud-basic-data jar在prod运行 不正常
5、自己本机手动打包(不通过jenkins打包) 并且在本地正常运行, 拷贝至prod 运行 不正常 见鬼
6、重新查看日志 对比 ConstantsView.class 发现一点诡异的问题, 就是多了一个内部类似的
7、重新查看ConstantsView代码 代码诡异 但是不应该会影响发布不成功 ; 死马当活马看看
8、删除诡异代码 重新打包 运行 不正常。
9、在idea 中,在使用的地方点ConstantsView 发现链接到ConstantsView.class 里面不含有 noChar 终于发现问题点了, 有可能引用了两个重复的jar 版本不一样
10、查找pom.xml 发现有一个引用了一个很旧jar
<dependency>
<groupId>com.pica.cloud.foundation</groupId>
<artifactId>common</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
就是上面这个版本 久版本
同时还有一个版本 这个是新版本
<dependency>
<groupId>com.pica.cloud.foundation</groupId>
<artifactId>pica-cloud-basic-data-common</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
基本确定就是这个问题引起的 ,删掉旧版本jar 问题得到解决!
11、回过头细想:
a、一开始有问题,虽然概率很小,但是没有引起重视, 不够严谨! 技术是一个相对很确定的事情,没有什么可能概率,凡是有可能出错,就一定会出错。
b、请细看 仔细看日志,哪怕再熟悉不过的错误提示日志,也请细看,不要放过任何一个细微的单词。关联解决问题的灵感可能就这么一个细微的单词。
c、不要相信所谓线上、以往正常的事项,往往这里有坑的话就是巨坑。
d、要敢于尝试,敢于试错,推演不等于实践。
e、所谓的大坑,难点,解决后,其实就那么回事,就一两个点,一直没有绕过去而已。
细想其实就是正确的jar存在,但是没有生效而已,那为什么没有生效,其实就是可能被替换,怎么才能被替换?
他们包路径,类名字得一样吧? 这不就这然想到可能有两个jar么? 就像当时log4j2接入,内置变量sys:LOG_PATH 就差那么一点点而已。