模擬Elasticsearch寫入異常思路

場景問題:

開發中常需要模擬各種異常來印證自己代碼邏輯處理沒有問題。最近接到一個需求,就是模擬Elasticsearch查詢正常,但寫入異常情景。有點同學會說這個不是很好模擬嗎?在你需要處理邏輯的地方手工拋出需要的指定異常,當程序中捕獲,是否按照預想的邏輯實現不就搞定了?這是研發自測的場景,但是如果要協助測試呢?這個怎麼拋?

解決方案:

  • 一.使索引只有只讀權限

在講之前先說下索引的一個設置“read_only_allow_delete”,當read_only_allow_delete=true時說明該索引只有只讀權限但允許刪除,當read_only_allow_delete=false時說明該索引具有讀寫所有權限。當服務器磁盤空間不夠時,es爲了保護數據會自動將read_only_allow_delete改爲true,返回寫入異常給服務處理,且這個參數不會自動轉爲false,需得手工轉換。
根據這個思路可以通過修改該值模擬出讀正常,寫異常的情形。

一.讓某索引只讀指令
PUT 索引名/_settings
    {
    "index": {
    "blocks": {
    "read_only_allow_delete": "true"
    }
    }
    }
二.讓某索引可讀可寫指令
PUT 索引名/_settings
    {
    "index": {
    "blocks": {
    "read_only_allow_delete": "false"
    }
    }
    }
  • 二.修改ES物理存儲目錄讀寫權限

注:這種方式比較簡單粗暴,會將所有索引改爲只讀方式,導致集羣異常,會觸發reassign,不建議使用,只是一種思路
查看elasticsearch.yml中物理存儲路徑:
存儲路徑示意圖
使用chmod指令使改目錄只有只讀權限:

chmod 444 目錄名

當測試完畢記得改會權限值!

We are in the fight of our lives 我們都在生命中奮鬥着!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章