Skip to content

Enhance Codec's decoding options #279

@Wondertan

Description

@Wondertan

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions