在最近的開發過程中要根據一堆id值去刪除es中的資料,就寫了乙個指令碼介面,傳入了idlist。這裡選擇的是get方式的介面,將idlist以逗號分隔當做字串傳入當做引數,然後在介面中轉換成list型別再對es進行操作。
這個介面中的process是為了控制是否真正執行刷資料的邏輯,在一些刷資料的介面中加入這個引數,可以去在真正去刷資料之前,去看看撈出來的資料是否正確,然後再進行刷資料的邏輯。
(value =
"/es/fix/removenotconsumerdata"
)@responsebody
public
boolean
removenotconsumerdata
(@requestparam
(value =
"kdtidlist"
) string kdtidliststring,
@requestparam
(value =
"process"
, defaultvalue =
"false"
)boolean process)
", json.
tojsonstring
(kdtidlist));
if(!process)
setsuccessset = sets.
newhashset()
; set
failset = sets.
newhashset()
;for
(long kdtid : kdtidlist)
, msg:{}"
, kdtid, esresult.
getmessage()
);failset.
add(kdtid);}
else
}catch
(throwable e)
", kdtid, e)
; failset.
add(kdtid);}
}if(kdtidlist.
size()
!= successset.
size()
)", json.
tojsonstring
(failset));
return
false;}
else
}這裡在機器上進行跑的時候,先去跑了單個id資料,發現是沒有問題的。之後就想一把梭去將資料跑完,就把整個id集合資料放入了url要傳入的引數之中,這個時候發現出現了問題。
在資料的最後一條id值被截斷了,只是去截止到了42122,所以這個會被轉為42122存入要刷的id集合中。這個就可能去刷錯了資料(所以之前的process引數還是很有用的 = =)。
這裡有個比較穩的解決方案是要刷的資料可以把檔案放在resource目錄下,然後通過讀取這個檔案的內容直接去去刷資料,這樣就不會存在這個問題了。這裡去簡單記錄下這次引數被截斷的過程。
記一次線上問題排查
這次線上問題來的比較突然,影響也大,用部落格記錄下整個過程,也當作是對這次事故的一次總結歸納。day1 2018年06月21號上午10點,收到運營同事通知,http com api 訪問量劇增,日誌量達到80g 天,而且有上公升趨勢。運營同事讓我們排查,這種訪問是否正常。運營統計訪問量 收到通知後立...
記一次線上快取問題
今天上線專案時,檢視乙個軟體列表,我的介面裡是findall,可是軟體列表裡沒有type欄位沒有出現,後來檢查發現 是線下softmodel裡type欄位沒更新過來,清完線下表快取,並用gii重新生成了下softmodel,然後再次上線。再次檢視線上該軟體列表,還是沒有type欄位,估計第一次檢視的...
記一次mysql死鎖問題
場景 innodb下不同的事務進行更新和插入操作導致資料庫死鎖,如下,在批量插入之前,進行了邏輯刪除操作,這段 在併發情況下出現死鎖 堆疊異常 deadlock found when trying to get lock try restarting transaction 更新操作sql 批量插入...