Enhance `Codec`'s decoding options
Wondertan opened this issue · 1 comments
Wondertan commented
Problem
Currently, Decode
allows decoding only the entire axis. It requires a 2D bytes slice as input and reconstructs nil shares via non-nil ones. However, we now need an additional use case where we want to reconstruct only particular nil shares and not all of them. This optimization is a part of lazy-extend effort and avoids unnecessary share reconstruction for Codec
Solutions
- change the
Decode
slice share inputs to have three states: built, nil, and empty(zero-length). The newempty
share slices will signal toCodec
that they need to be reconstructed by the providedbuilt
, whilenil
shares will be left untouched.- Less explicit and needs to be properly documented
- add a new
DecodeSome
method that takes the same shares slice as input + an additional slice of bools with the same line as the shares slice, following klauspost's ReconstructSome method.- Allocates additional slice
- Two code paths for lazy and non-lazy decoding that can be single.
Refs
Blocked on klauspost/reedsolomon#264
rootulp commented
I prefer the second proposed solution because it is API additive.