Log異常Bug事件
今天的事件
發生在ELK的Log
API的參數沒有正常顯示
繞了半天
最後才發現答案就在眼前
後端的專案
因為沒有畫面可以呈現
所以大部分都會留下詳細的Log
包括Request和Response的資料
方便Debug
這次因為追查線上的Bug
Trace到一隻外部專案的API
奇怪的是那隻API
參數的log竟然是空陣列
回頭看一下專案程式碼
參數就是一個簡單的List<string>
把員工的Sn帶入做資料查詢
不知道為什麼Log卻顯示空陣列
找到負責這個專案的同事
查看他們系統的Log
在他們的ELK當中
參數的紀錄也是空的
我看ELK這麼久了
雖然有遇過跳脫字元不顯示的
但是整個參數不見
倒是頭一遭
馬上用postman打了一個request壓壓驚
結果參數竟然神奇
應該說是「正常」的顯示了
所以問題不在ELK
摸摸鼻子再把自家專案打開
查看這個服務的其他API log
參數都正常
唯獨這個用員工Sn查詢的方法有問題
但是實作也不複雜
就是把Request物件序列化為json
然後發送http請求
沒什麼特別的邏輯
但是當我再定睛一看
才發現一個驚為天人的Bug
就是list的初始值放在小括號
而不是放在大括號
用講的好像很抽象
看圖比較明顯
第一個寫法只是初始化list的Capacity
第二個寫法才會把將值塞入list
今天的bug就是因為第一種
即使C#在編譯時期
就會檢查一大堆錯誤
但今天遇到的這個問題
是編譯不會警告
肉眼也很難馬上發現的Bug
其實之前就聽同事分享過這個Bug
整組人盯著投影幕
看了半天也沒看出來
我那時候聽到笑了好久
沒想到自己遇到時
也是卡了快一個小時才發現
紀錄一下
下回預告
一模一樣的參數設定
最後卻跑出不同的結果
複製是不是在騙我?
下一回
複製失敗bug事件
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Frank's Talk!