Skip to content

Enhance Codec's decoding options #279

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions