【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 就差那麼一點點而已。