一、動機
DecodingValidator是在HDFS-15759中引入的一個用于校驗EC數據重構正確性的組件。
先說下引入DecodingValidator的動機,據很多已知的ISSUE(如HDFS-14768, HDFS-15186, HDFS-15240,這些目前都已經fix了)反饋,
EC在重構的時候可能會有各種各樣的問題,導致數據錯誤,造成block corrupt。
直接拋異常的問題還好處理,重試或者bugfix就好了,最致命的是不報錯,正常重構,但是數據內容不正確。這就很嚴重了。
這就是做DecodingValidator的動機。
二、基本原理及示例
基本原理:
第一步:使用解碼后的輸出作為新的輸入再進行解碼
第二步:將解碼得到的結果與原始輸入進行比較
示例說明:
以RS-6-3為例,假設原始數據塊是 [d0, d1, d2, d3, d4, d5],校驗塊是 [p0, p1, p2]。
假設我們丟失了 d1 和 p1,使用 [d0, d2, d3, d4, d5, p0] 作為輸入,解碼得到了 [d1, p1] 作為輸出。