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 new empty share slices will signal to Codec that they need to be reconstructed by the provided built, while nil 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
Problem
Currently,
Decodeallows 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 forCodecSolutions
Decodeslice share inputs to have three states: built, nil, and empty(zero-length). The newemptyshare slices will signal toCodecthat they need to be reconstructed by the providedbuilt, whilenilshares will be left untouched.DecodeSomemethod 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.Refs
Blocked on klauspost/reedsolomon#264