記一次Jenkins亂用分支打版引發(fā)的生產(chǎn)問題。

情況說明:Jenkins配置了多個分支構(gòu)建,dev、test、prod,每個分支有多個項目。

一天,突然用戶報了問題,后來檢查發(fā)現(xiàn)是由于數(shù)據(jù)庫字段字段不全導(dǎo)致的,然后看表記錄,發(fā)現(xiàn)5月31號及之前的記錄都是字段全的,發(fā)現(xiàn)問題那天是6月4號,為什么突然現(xiàn)在就不行了呢?那時候只知道6月1號某個應(yīng)用有重新發(fā)版生產(chǎn),也沒有具體繼續(xù)想。

這部分邏輯是這樣的:應(yīng)用A會向應(yīng)用B發(fā)送數(shù)據(jù),應(yīng)用B保存到數(shù)據(jù)庫。
現(xiàn)在少了字段,打開應(yīng)用B的日志,在生產(chǎn)重現(xiàn)問題,發(fā)現(xiàn)B接收到的數(shù)據(jù)就少了字段,說明問題出現(xiàn)在應(yīng)用A。

由于應(yīng)用A沒有打發(fā)送數(shù)據(jù)的日志,只能看代碼邏輯??戳撕镁茫碚f數(shù)據(jù)字段應(yīng)該是全的??戳撕镁?,看不出什么東西,決定本地連生產(chǎn)數(shù)據(jù)庫啟動DEBUG。為了不影響生產(chǎn)環(huán)境的數(shù)據(jù),所以關(guān)閉了定時任務(wù)。

開始用POSTMAN調(diào)本地啟動的服務(wù)器,一步步DEBUG了。DEBUG到發(fā)送數(shù)據(jù)前,發(fā)現(xiàn)確實是少了字段,于是繼續(xù)仔細看代碼邏輯。

看著看著,突然發(fā)現(xiàn)被發(fā)送的POJO就少了幾個字段。
代碼邏輯是這樣的:發(fā)送前,先把一個POJO(這里稱為POJO-A)的屬性COPY到另一個POJO(這里稱為POJO-B),再把POJO-B轉(zhuǎn)成JSON發(fā)送出去,POJO-A字段是全的,后面的POJO-B字段不全,所以就在COPY屬性的時候丟失了。

去生產(chǎn)服務(wù)器拿下來war包,發(fā)現(xiàn)POJO-B確實是少了字段。因為想到5月31號之前是沒問題的,然后又拿了5月31號之前的war包,發(fā)現(xiàn)字段是全的。

這些POJO定義在另一個工程里面的,這里稱為工程C,然后記得因為要改一點東西,在前一段時間在Jenkins用dev分支打過版,而dev分支的POJO-B恰恰是少了字段的。

最重要的一點,應(yīng)用A依賴有引用工程C。

所以問題就出現(xiàn)在這里了,先用工程C的dev分支打版,接著再打版應(yīng)用A的prod分支時,導(dǎo)致打出來的war包依賴工程C的代碼是dev分支的,所以就出現(xiàn)了問題~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 專業(yè)考題類型管理運行工作負責(zé)人一般作業(yè)考題內(nèi)容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 10,644評論 0 13
  • 一、編程規(guī)約 (一)命名規(guī)約 【強制】 代碼中的命名均不能以下劃線或美元符號開始,也不能以下劃線或美元符號結(jié)束。反...
    喝咖啡的螞蟻閱讀 1,611評論 0 2
  • 阿里巴巴 JAVA 開發(fā)手冊 1 / 32 Java 開發(fā)手冊 版本號 制定團隊 更新日期 備 注 1.0.0 阿...
    糖寶_閱讀 7,889評論 0 5
  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 14,324評論 0 15
  • 本文繼續(xù)講自控力,上一篇主要從大腦、心理、生理基本角度進行了自控力原則總結(jié)。講了自控力提升的幾個方法。 本文繼續(xù)講...
    吳海燕_YuBin閱讀 297評論 0 0

友情鏈接更多精彩內(nèi)容