記一次線上'事故'處理

記一次線上'事故'處理

今早十點(diǎn)左右(2019年12月23日 10:00), 項(xiàng)目運(yùn)營反饋新版 App 有閃退問題侮繁,我放下手中開發(fā)工作古戴,開始排查問題所在:經(jīng)過查看崩潰日志發(fā)現(xiàn)隘击,已經(jīng)開始大面積影響線上用戶了

15770939012210.jpg

通過報(bào)錯(cuò)信息宋下,我很快確定了問題所在: 新版 App 和舊版本之間本地緩存的兼容問題,由于新版本緩存數(shù)據(jù)中緩存的鍵值對(duì)新增贰剥,導(dǎo)致對(duì)新 key 存取值報(bào)錯(cuò)弹沽。

具體原因

項(xiàng)目中網(wǎng)約車模塊由之前的「首汽約車」和「紅旗智行」兩個(gè)獨(dú)立的子項(xiàng)目合并成獨(dú)立的一個(gè)項(xiàng)目畴嘶。由于平臺(tái)的融合脆荷,項(xiàng)目中管理約車平臺(tái)和用戶類型的類有較大改動(dòng)凝垛。由之前的單平臺(tái)邏輯修改為現(xiàn)在多平臺(tái)邏輯。新邏輯如下:

WX20191223-183759@2x.png

新版本邏輯中將平臺(tái)信息和用戶類型信息同時(shí)保存到了一個(gè)字典中简烘,屬于字典套字典類型苔严,工具類統(tǒng)一管理頂層字典定枷」屡欤可以實(shí)現(xiàn)的功能為:用戶在 App 中平臺(tái)信息隨時(shí)切換,用戶類型信息隨時(shí)切換欠窒。約車過程中平臺(tái)信息也會(huì)隨著約車狀態(tài)變化覆旭。

突然想到,這里和 Runloop 中的 Mode 設(shè)置的邏輯很像岖妄,每個(gè)平臺(tái)下的各個(gè)用戶類型互不影響型将。對(duì)應(yīng)不同 Mode 下的源互不影響

原因

新版本中只判斷了 App 中是否有緩存,遺漏了緩存中沒有「sqhq」平臺(tái)的情況的適配荐虐。
只是判斷了有沒有緩存文件七兜,有緩存但是沒有「sqhq」平臺(tái)的情況沒有處理導(dǎo)致后面崩潰。

影響

1. 網(wǎng)約車整個(gè)模塊
2. 用戶退出 App.退出 App 會(huì)整體對(duì)平臺(tái)置為最基本的「sqhq」類型

處理方案

對(duì)于用戶:   
        卸載 App 重裝福扬,徹底清理緩存

對(duì)于開發(fā):
        重寫緩存數(shù)據(jù)的處理腕铸,對(duì)于兼容問題引以為戒

下面是一些問題排查時(shí)候的記錄

設(shè)計(jì)原因

整個(gè)工具類,只提供了類方法處理平臺(tái)和用戶類型的存取铛碑。所以緩存文件也放到了類的初始化方法 + initialize 中狠裹。

關(guān)于 + initialize 和 + load 方法

load 方法
    在類或者分類添加到 OC runtime 時(shí)候調(diào)用,可在此方法中設(shè)置類相關(guān)的行為
    
    類的 load 方法在新類和新分類添加或鏈接的時(shí)候調(diào)用汽烦,其中的方法實(shí)現(xiàn)會(huì)根據(jù)最后一次的 load 而確定涛菠。類初始化順序如下
        1. 先初始化自己鏈接的庫文件
        2. 初始化自己類
        3. 初始化項(xiàng)目中 C++ 和 __attribute__(constructor) 
        4. 初始化動(dòng)態(tài)鏈接自己的 frameworks
        
        其中 load 方法的加載順序?yàn)椋簊uperClass -> subClass -> category.
        所以在 load 階段不要調(diào)用其他類的方法,此時(shí)其他類的 load 可能還沒加載。
        
        
initialize 方法
    即類的初始化方法俗冻,僅為類的初始化礁叔,執(zhí)行順序位于上面第三步。從方法在類的聲明周期內(nèi)只會(huì)執(zhí)行一次言疗,即分類和類本身只會(huì)執(zhí)行一次晴圾。如果做類或者分類的獨(dú)立處理,需要在 load 方法中噪奄。
    此方法調(diào)用順序 superClass -> subClass
    如果在子類調(diào)用中調(diào)用父類 initialize 可以通過 if (self == [ClassName self]) 來保護(hù)父類只執(zhí)行一次

經(jīng)驗(yàn)教訓(xùn)

  1. 對(duì)于向后兼容問題死姚,需要注意,在測試過程中需要引起注意
  2. 隨著用戶數(shù)增多勤篮,突然覺得自己的代碼變得更有意義了
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末都毒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碰缔,更是在濱河造成了極大的恐慌账劲,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件金抡,死亡現(xiàn)場離奇詭異瀑焦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)梗肝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門榛瓮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人巫击,你說我怎么就攤上這事禀晓。” “怎么了坝锰?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵粹懒,是天一觀的道長。 經(jīng)常有香客問我顷级,道長凫乖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任弓颈,我火速辦了婚禮帽芽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘恨豁。我一直安慰自己嚣镜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布橘蜜。 她就那樣靜靜地躺著菊匿,像睡著了一般付呕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上跌捆,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天徽职,我揣著相機(jī)與錄音,去河邊找鬼佩厚。 笑死姆钉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抄瓦。 我是一名探鬼主播潮瓶,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼钙姊!你這毒婦竟也來了毯辅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤煞额,失蹤者是張志新(化名)和其女友劉穎思恐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膊毁,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胀莹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了婚温。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片描焰。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖缭召,靈堂內(nèi)的尸體忽然破棺而出栈顷,到底是詐尸還是另有隱情逆日,我是刑警寧澤嵌巷,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站室抽,受9級(jí)特大地震影響搪哪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜坪圾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一晓折、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兽泄,春花似錦漓概、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽梁肿。三九已至,卻和暖如春觅彰,著一層夾襖步出監(jiān)牢的瞬間吩蔑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工填抬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烛芬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓飒责,卻偏偏與公主長得像赘娄,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宏蛉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容