Merge branch 'filecoin-project:master' into master

This commit is contained in:
Lim Kin Sang 2022-05-24 17:41:32 +08:00 committed by GitHub
commit 3f0e5b3ff4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
40 changed files with 1796 additions and 1032 deletions

View File

@ -21,7 +21,7 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: testground run - name: testground run
uses: coryschwartz/testground-github-action@v1.1 uses: testground/testground-github-action@v1
with: with:
backend_addr: ${{ matrix.backend_addr }} backend_addr: ${{ matrix.backend_addr }}
backend_proto: ${{ matrix.backend_proto }} backend_proto: ${{ matrix.backend_proto }}

View File

@ -227,6 +227,9 @@ type StorageMiner interface {
// DagstoreGC runs garbage collection on the DAG store. // DagstoreGC runs garbage collection on the DAG store.
DagstoreGC(ctx context.Context) ([]DagstoreShardResult, error) //perm:admin DagstoreGC(ctx context.Context) ([]DagstoreShardResult, error) //perm:admin
// DagstoreRegisterShard registers a shard manually with dagstore with given pieceCID
DagstoreRegisterShard(ctx context.Context, key string) error //perm:admin
// IndexerAnnounceDeal informs indexer nodes that a new deal was received, // IndexerAnnounceDeal informs indexer nodes that a new deal was received,
// so they can download its index // so they can download its index
IndexerAnnounceDeal(ctx context.Context, proposalCid cid.Cid) error //perm:admin IndexerAnnounceDeal(ctx context.Context, proposalCid cid.Cid) error //perm:admin

View File

@ -26,25 +26,26 @@ func (t *PaymentInfo) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write([]byte{163}); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write([]byte{163}); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Channel (address.Address) (struct) // t.Channel (address.Address) (struct)
if len("Channel") > cbg.MaxLength { if len("Channel") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"Channel\" was too long") return xerrors.Errorf("Value in field \"Channel\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Channel"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Channel"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Channel")); err != nil { if _, err := io.WriteString(w, string("Channel")); err != nil {
return err return err
} }
if err := t.Channel.MarshalCBOR(w); err != nil { if err := t.Channel.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -53,14 +54,14 @@ func (t *PaymentInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"WaitSentinel\" was too long") return xerrors.Errorf("Value in field \"WaitSentinel\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("WaitSentinel"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("WaitSentinel"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("WaitSentinel")); err != nil { if _, err := io.WriteString(w, string("WaitSentinel")); err != nil {
return err return err
} }
if err := cbg.WriteCidBuf(scratch, w, t.WaitSentinel); err != nil { if err := cbg.WriteCid(cw, t.WaitSentinel); err != nil {
return xerrors.Errorf("failed to write cid field t.WaitSentinel: %w", err) return xerrors.Errorf("failed to write cid field t.WaitSentinel: %w", err)
} }
@ -69,7 +70,7 @@ func (t *PaymentInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Vouchers\" was too long") return xerrors.Errorf("Value in field \"Vouchers\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Vouchers"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Vouchers"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Vouchers")); err != nil { if _, err := io.WriteString(w, string("Vouchers")); err != nil {
@ -80,27 +81,32 @@ func (t *PaymentInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Slice value in field t.Vouchers was too long") return xerrors.Errorf("Slice value in field t.Vouchers was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.Vouchers))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Vouchers))); err != nil {
return err return err
} }
for _, v := range t.Vouchers { for _, v := range t.Vouchers {
if err := v.MarshalCBOR(w); err != nil { if err := v.MarshalCBOR(cw); err != nil {
return err return err
} }
} }
return nil return nil
} }
func (t *PaymentInfo) UnmarshalCBOR(r io.Reader) error { func (t *PaymentInfo) UnmarshalCBOR(r io.Reader) (err error) {
*t = PaymentInfo{} *t = PaymentInfo{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajMap { if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map") return fmt.Errorf("cbor input should be of type map")
} }
@ -115,7 +121,7 @@ func (t *PaymentInfo) UnmarshalCBOR(r io.Reader) error {
for i := uint64(0); i < n; i++ { for i := uint64(0); i < n; i++ {
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -129,7 +135,7 @@ func (t *PaymentInfo) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.Channel.UnmarshalCBOR(br); err != nil { if err := t.Channel.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Channel: %w", err) return xerrors.Errorf("unmarshaling t.Channel: %w", err)
} }
@ -139,7 +145,7 @@ func (t *PaymentInfo) UnmarshalCBOR(r io.Reader) error {
{ {
c, err := cbg.ReadCid(br) c, err := cbg.ReadCid(cr)
if err != nil { if err != nil {
return xerrors.Errorf("failed to read cid field t.WaitSentinel: %w", err) return xerrors.Errorf("failed to read cid field t.WaitSentinel: %w", err)
} }
@ -150,7 +156,7 @@ func (t *PaymentInfo) UnmarshalCBOR(r io.Reader) error {
// t.Vouchers ([]*paych.SignedVoucher) (slice) // t.Vouchers ([]*paych.SignedVoucher) (slice)
case "Vouchers": case "Vouchers":
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -170,7 +176,7 @@ func (t *PaymentInfo) UnmarshalCBOR(r io.Reader) error {
for i := 0; i < int(extra); i++ { for i := 0; i < int(extra); i++ {
var v paych.SignedVoucher var v paych.SignedVoucher
if err := v.UnmarshalCBOR(br); err != nil { if err := v.UnmarshalCBOR(cr); err != nil {
return err return err
} }
@ -190,25 +196,26 @@ func (t *SealedRef) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write([]byte{163}); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write([]byte{163}); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.SectorID (abi.SectorNumber) (uint64) // t.SectorID (abi.SectorNumber) (uint64)
if len("SectorID") > cbg.MaxLength { if len("SectorID") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"SectorID\" was too long") return xerrors.Errorf("Value in field \"SectorID\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("SectorID"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("SectorID"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("SectorID")); err != nil { if _, err := io.WriteString(w, string("SectorID")); err != nil {
return err return err
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.SectorID)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.SectorID)); err != nil {
return err return err
} }
@ -217,14 +224,14 @@ func (t *SealedRef) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Offset\" was too long") return xerrors.Errorf("Value in field \"Offset\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Offset"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Offset"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Offset")); err != nil { if _, err := io.WriteString(w, string("Offset")); err != nil {
return err return err
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.Offset)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Offset)); err != nil {
return err return err
} }
@ -233,30 +240,35 @@ func (t *SealedRef) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Size\" was too long") return xerrors.Errorf("Value in field \"Size\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Size"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Size"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Size")); err != nil { if _, err := io.WriteString(w, string("Size")); err != nil {
return err return err
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.Size)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Size)); err != nil {
return err return err
} }
return nil return nil
} }
func (t *SealedRef) UnmarshalCBOR(r io.Reader) error { func (t *SealedRef) UnmarshalCBOR(r io.Reader) (err error) {
*t = SealedRef{} *t = SealedRef{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajMap { if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map") return fmt.Errorf("cbor input should be of type map")
} }
@ -271,7 +283,7 @@ func (t *SealedRef) UnmarshalCBOR(r io.Reader) error {
for i := uint64(0); i < n; i++ { for i := uint64(0); i < n; i++ {
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -285,7 +297,7 @@ func (t *SealedRef) UnmarshalCBOR(r io.Reader) error {
{ {
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -300,7 +312,7 @@ func (t *SealedRef) UnmarshalCBOR(r io.Reader) error {
{ {
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -315,7 +327,7 @@ func (t *SealedRef) UnmarshalCBOR(r io.Reader) error {
{ {
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -339,18 +351,19 @@ func (t *SealedRefs) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write([]byte{161}); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write([]byte{161}); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Refs ([]api.SealedRef) (slice) // t.Refs ([]api.SealedRef) (slice)
if len("Refs") > cbg.MaxLength { if len("Refs") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"Refs\" was too long") return xerrors.Errorf("Value in field \"Refs\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Refs"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Refs"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Refs")); err != nil { if _, err := io.WriteString(w, string("Refs")); err != nil {
@ -361,27 +374,32 @@ func (t *SealedRefs) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Slice value in field t.Refs was too long") return xerrors.Errorf("Slice value in field t.Refs was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.Refs))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Refs))); err != nil {
return err return err
} }
for _, v := range t.Refs { for _, v := range t.Refs {
if err := v.MarshalCBOR(w); err != nil { if err := v.MarshalCBOR(cw); err != nil {
return err return err
} }
} }
return nil return nil
} }
func (t *SealedRefs) UnmarshalCBOR(r io.Reader) error { func (t *SealedRefs) UnmarshalCBOR(r io.Reader) (err error) {
*t = SealedRefs{} *t = SealedRefs{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajMap { if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map") return fmt.Errorf("cbor input should be of type map")
} }
@ -396,7 +414,7 @@ func (t *SealedRefs) UnmarshalCBOR(r io.Reader) error {
for i := uint64(0); i < n; i++ { for i := uint64(0); i < n; i++ {
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -408,7 +426,7 @@ func (t *SealedRefs) UnmarshalCBOR(r io.Reader) error {
// t.Refs ([]api.SealedRef) (slice) // t.Refs ([]api.SealedRef) (slice)
case "Refs": case "Refs":
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -428,7 +446,7 @@ func (t *SealedRefs) UnmarshalCBOR(r io.Reader) error {
for i := 0; i < int(extra); i++ { for i := 0; i < int(extra); i++ {
var v SealedRef var v SealedRef
if err := v.UnmarshalCBOR(br); err != nil { if err := v.UnmarshalCBOR(cr); err != nil {
return err return err
} }
@ -448,18 +466,19 @@ func (t *SealTicket) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write([]byte{162}); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write([]byte{162}); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Value (abi.SealRandomness) (slice) // t.Value (abi.SealRandomness) (slice)
if len("Value") > cbg.MaxLength { if len("Value") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"Value\" was too long") return xerrors.Errorf("Value in field \"Value\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Value"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Value"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Value")); err != nil { if _, err := io.WriteString(w, string("Value")); err != nil {
@ -470,11 +489,11 @@ func (t *SealTicket) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Byte array in field t.Value was too long") return xerrors.Errorf("Byte array in field t.Value was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajByteString, uint64(len(t.Value))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajByteString, uint64(len(t.Value))); err != nil {
return err return err
} }
if _, err := w.Write(t.Value[:]); err != nil { if _, err := cw.Write(t.Value[:]); err != nil {
return err return err
} }
@ -483,7 +502,7 @@ func (t *SealTicket) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Epoch\" was too long") return xerrors.Errorf("Value in field \"Epoch\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Epoch"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Epoch"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Epoch")); err != nil { if _, err := io.WriteString(w, string("Epoch")); err != nil {
@ -491,27 +510,32 @@ func (t *SealTicket) MarshalCBOR(w io.Writer) error {
} }
if t.Epoch >= 0 { if t.Epoch >= 0 {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.Epoch)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Epoch)); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.Epoch-1)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.Epoch-1)); err != nil {
return err return err
} }
} }
return nil return nil
} }
func (t *SealTicket) UnmarshalCBOR(r io.Reader) error { func (t *SealTicket) UnmarshalCBOR(r io.Reader) (err error) {
*t = SealTicket{} *t = SealTicket{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajMap { if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map") return fmt.Errorf("cbor input should be of type map")
} }
@ -526,7 +550,7 @@ func (t *SealTicket) UnmarshalCBOR(r io.Reader) error {
for i := uint64(0); i < n; i++ { for i := uint64(0); i < n; i++ {
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -538,7 +562,7 @@ func (t *SealTicket) UnmarshalCBOR(r io.Reader) error {
// t.Value (abi.SealRandomness) (slice) // t.Value (abi.SealRandomness) (slice)
case "Value": case "Value":
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -554,13 +578,13 @@ func (t *SealTicket) UnmarshalCBOR(r io.Reader) error {
t.Value = make([]uint8, extra) t.Value = make([]uint8, extra)
} }
if _, err := io.ReadFull(br, t.Value[:]); err != nil { if _, err := io.ReadFull(cr, t.Value[:]); err != nil {
return err return err
} }
// t.Epoch (abi.ChainEpoch) (int64) // t.Epoch (abi.ChainEpoch) (int64)
case "Epoch": case "Epoch":
{ {
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
var extraI int64 var extraI int64
if err != nil { if err != nil {
return err return err
@ -597,18 +621,19 @@ func (t *SealSeed) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write([]byte{162}); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write([]byte{162}); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Value (abi.InteractiveSealRandomness) (slice) // t.Value (abi.InteractiveSealRandomness) (slice)
if len("Value") > cbg.MaxLength { if len("Value") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"Value\" was too long") return xerrors.Errorf("Value in field \"Value\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Value"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Value"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Value")); err != nil { if _, err := io.WriteString(w, string("Value")); err != nil {
@ -619,11 +644,11 @@ func (t *SealSeed) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Byte array in field t.Value was too long") return xerrors.Errorf("Byte array in field t.Value was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajByteString, uint64(len(t.Value))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajByteString, uint64(len(t.Value))); err != nil {
return err return err
} }
if _, err := w.Write(t.Value[:]); err != nil { if _, err := cw.Write(t.Value[:]); err != nil {
return err return err
} }
@ -632,7 +657,7 @@ func (t *SealSeed) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Epoch\" was too long") return xerrors.Errorf("Value in field \"Epoch\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Epoch"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Epoch"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Epoch")); err != nil { if _, err := io.WriteString(w, string("Epoch")); err != nil {
@ -640,27 +665,32 @@ func (t *SealSeed) MarshalCBOR(w io.Writer) error {
} }
if t.Epoch >= 0 { if t.Epoch >= 0 {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.Epoch)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Epoch)); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.Epoch-1)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.Epoch-1)); err != nil {
return err return err
} }
} }
return nil return nil
} }
func (t *SealSeed) UnmarshalCBOR(r io.Reader) error { func (t *SealSeed) UnmarshalCBOR(r io.Reader) (err error) {
*t = SealSeed{} *t = SealSeed{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajMap { if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map") return fmt.Errorf("cbor input should be of type map")
} }
@ -675,7 +705,7 @@ func (t *SealSeed) UnmarshalCBOR(r io.Reader) error {
for i := uint64(0); i < n; i++ { for i := uint64(0); i < n; i++ {
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -687,7 +717,7 @@ func (t *SealSeed) UnmarshalCBOR(r io.Reader) error {
// t.Value (abi.InteractiveSealRandomness) (slice) // t.Value (abi.InteractiveSealRandomness) (slice)
case "Value": case "Value":
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -703,13 +733,13 @@ func (t *SealSeed) UnmarshalCBOR(r io.Reader) error {
t.Value = make([]uint8, extra) t.Value = make([]uint8, extra)
} }
if _, err := io.ReadFull(br, t.Value[:]); err != nil { if _, err := io.ReadFull(cr, t.Value[:]); err != nil {
return err return err
} }
// t.Epoch (abi.ChainEpoch) (int64) // t.Epoch (abi.ChainEpoch) (int64)
case "Epoch": case "Epoch":
{ {
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
var extraI int64 var extraI int64
if err != nil { if err != nil {
return err return err
@ -746,18 +776,19 @@ func (t *PieceDealInfo) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write([]byte{165}); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write([]byte{165}); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.PublishCid (cid.Cid) (struct) // t.PublishCid (cid.Cid) (struct)
if len("PublishCid") > cbg.MaxLength { if len("PublishCid") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"PublishCid\" was too long") return xerrors.Errorf("Value in field \"PublishCid\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("PublishCid"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("PublishCid"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("PublishCid")); err != nil { if _, err := io.WriteString(w, string("PublishCid")); err != nil {
@ -765,11 +796,11 @@ func (t *PieceDealInfo) MarshalCBOR(w io.Writer) error {
} }
if t.PublishCid == nil { if t.PublishCid == nil {
if _, err := w.Write(cbg.CborNull); err != nil { if _, err := cw.Write(cbg.CborNull); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteCidBuf(scratch, w, *t.PublishCid); err != nil { if err := cbg.WriteCid(cw, *t.PublishCid); err != nil {
return xerrors.Errorf("failed to write cid field t.PublishCid: %w", err) return xerrors.Errorf("failed to write cid field t.PublishCid: %w", err)
} }
} }
@ -779,14 +810,14 @@ func (t *PieceDealInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"DealID\" was too long") return xerrors.Errorf("Value in field \"DealID\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("DealID"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("DealID"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("DealID")); err != nil { if _, err := io.WriteString(w, string("DealID")); err != nil {
return err return err
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.DealID)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.DealID)); err != nil {
return err return err
} }
@ -795,14 +826,14 @@ func (t *PieceDealInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"DealProposal\" was too long") return xerrors.Errorf("Value in field \"DealProposal\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("DealProposal"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("DealProposal"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("DealProposal")); err != nil { if _, err := io.WriteString(w, string("DealProposal")); err != nil {
return err return err
} }
if err := t.DealProposal.MarshalCBOR(w); err != nil { if err := t.DealProposal.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -811,14 +842,14 @@ func (t *PieceDealInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"DealSchedule\" was too long") return xerrors.Errorf("Value in field \"DealSchedule\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("DealSchedule"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("DealSchedule"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("DealSchedule")); err != nil { if _, err := io.WriteString(w, string("DealSchedule")); err != nil {
return err return err
} }
if err := t.DealSchedule.MarshalCBOR(w); err != nil { if err := t.DealSchedule.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -827,7 +858,7 @@ func (t *PieceDealInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"KeepUnsealed\" was too long") return xerrors.Errorf("Value in field \"KeepUnsealed\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("KeepUnsealed"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("KeepUnsealed"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("KeepUnsealed")); err != nil { if _, err := io.WriteString(w, string("KeepUnsealed")); err != nil {
@ -840,16 +871,21 @@ func (t *PieceDealInfo) MarshalCBOR(w io.Writer) error {
return nil return nil
} }
func (t *PieceDealInfo) UnmarshalCBOR(r io.Reader) error { func (t *PieceDealInfo) UnmarshalCBOR(r io.Reader) (err error) {
*t = PieceDealInfo{} *t = PieceDealInfo{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajMap { if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map") return fmt.Errorf("cbor input should be of type map")
} }
@ -864,7 +900,7 @@ func (t *PieceDealInfo) UnmarshalCBOR(r io.Reader) error {
for i := uint64(0); i < n; i++ { for i := uint64(0); i < n; i++ {
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -878,16 +914,16 @@ func (t *PieceDealInfo) UnmarshalCBOR(r io.Reader) error {
{ {
b, err := br.ReadByte() b, err := cr.ReadByte()
if err != nil { if err != nil {
return err return err
} }
if b != cbg.CborNull[0] { if b != cbg.CborNull[0] {
if err := br.UnreadByte(); err != nil { if err := cr.UnreadByte(); err != nil {
return err return err
} }
c, err := cbg.ReadCid(br) c, err := cbg.ReadCid(cr)
if err != nil { if err != nil {
return xerrors.Errorf("failed to read cid field t.PublishCid: %w", err) return xerrors.Errorf("failed to read cid field t.PublishCid: %w", err)
} }
@ -901,7 +937,7 @@ func (t *PieceDealInfo) UnmarshalCBOR(r io.Reader) error {
{ {
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -916,16 +952,16 @@ func (t *PieceDealInfo) UnmarshalCBOR(r io.Reader) error {
{ {
b, err := br.ReadByte() b, err := cr.ReadByte()
if err != nil { if err != nil {
return err return err
} }
if b != cbg.CborNull[0] { if b != cbg.CborNull[0] {
if err := br.UnreadByte(); err != nil { if err := cr.UnreadByte(); err != nil {
return err return err
} }
t.DealProposal = new(market.DealProposal) t.DealProposal = new(market.DealProposal)
if err := t.DealProposal.UnmarshalCBOR(br); err != nil { if err := t.DealProposal.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.DealProposal pointer: %w", err) return xerrors.Errorf("unmarshaling t.DealProposal pointer: %w", err)
} }
} }
@ -936,7 +972,7 @@ func (t *PieceDealInfo) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.DealSchedule.UnmarshalCBOR(br); err != nil { if err := t.DealSchedule.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.DealSchedule: %w", err) return xerrors.Errorf("unmarshaling t.DealSchedule: %w", err)
} }
@ -944,7 +980,7 @@ func (t *PieceDealInfo) UnmarshalCBOR(r io.Reader) error {
// t.KeepUnsealed (bool) (bool) // t.KeepUnsealed (bool) (bool)
case "KeepUnsealed": case "KeepUnsealed":
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -973,18 +1009,19 @@ func (t *DealSchedule) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write([]byte{162}); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write([]byte{162}); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.StartEpoch (abi.ChainEpoch) (int64) // t.StartEpoch (abi.ChainEpoch) (int64)
if len("StartEpoch") > cbg.MaxLength { if len("StartEpoch") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"StartEpoch\" was too long") return xerrors.Errorf("Value in field \"StartEpoch\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("StartEpoch"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("StartEpoch"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("StartEpoch")); err != nil { if _, err := io.WriteString(w, string("StartEpoch")); err != nil {
@ -992,11 +1029,11 @@ func (t *DealSchedule) MarshalCBOR(w io.Writer) error {
} }
if t.StartEpoch >= 0 { if t.StartEpoch >= 0 {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.StartEpoch)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.StartEpoch)); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.StartEpoch-1)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.StartEpoch-1)); err != nil {
return err return err
} }
} }
@ -1006,7 +1043,7 @@ func (t *DealSchedule) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"EndEpoch\" was too long") return xerrors.Errorf("Value in field \"EndEpoch\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("EndEpoch"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("EndEpoch"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("EndEpoch")); err != nil { if _, err := io.WriteString(w, string("EndEpoch")); err != nil {
@ -1014,27 +1051,32 @@ func (t *DealSchedule) MarshalCBOR(w io.Writer) error {
} }
if t.EndEpoch >= 0 { if t.EndEpoch >= 0 {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.EndEpoch)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.EndEpoch)); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.EndEpoch-1)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.EndEpoch-1)); err != nil {
return err return err
} }
} }
return nil return nil
} }
func (t *DealSchedule) UnmarshalCBOR(r io.Reader) error { func (t *DealSchedule) UnmarshalCBOR(r io.Reader) (err error) {
*t = DealSchedule{} *t = DealSchedule{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajMap { if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map") return fmt.Errorf("cbor input should be of type map")
} }
@ -1049,7 +1091,7 @@ func (t *DealSchedule) UnmarshalCBOR(r io.Reader) error {
for i := uint64(0); i < n; i++ { for i := uint64(0); i < n; i++ {
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -1061,7 +1103,7 @@ func (t *DealSchedule) UnmarshalCBOR(r io.Reader) error {
// t.StartEpoch (abi.ChainEpoch) (int64) // t.StartEpoch (abi.ChainEpoch) (int64)
case "StartEpoch": case "StartEpoch":
{ {
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
var extraI int64 var extraI int64
if err != nil { if err != nil {
return err return err
@ -1087,7 +1129,7 @@ func (t *DealSchedule) UnmarshalCBOR(r io.Reader) error {
// t.EndEpoch (abi.ChainEpoch) (int64) // t.EndEpoch (abi.ChainEpoch) (int64)
case "EndEpoch": case "EndEpoch":
{ {
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
var extraI int64 var extraI int64
if err != nil { if err != nil {
return err return err

View File

@ -663,6 +663,8 @@ type StorageMinerStruct struct {
DagstoreRecoverShard func(p0 context.Context, p1 string) error `perm:"write"` DagstoreRecoverShard func(p0 context.Context, p1 string) error `perm:"write"`
DagstoreRegisterShard func(p0 context.Context, p1 string) error `perm:"admin"`
DealsConsiderOfflineRetrievalDeals func(p0 context.Context) (bool, error) `perm:"admin"` DealsConsiderOfflineRetrievalDeals func(p0 context.Context) (bool, error) `perm:"admin"`
DealsConsiderOfflineStorageDeals func(p0 context.Context) (bool, error) `perm:"admin"` DealsConsiderOfflineStorageDeals func(p0 context.Context) (bool, error) `perm:"admin"`
@ -3990,6 +3992,17 @@ func (s *StorageMinerStub) DagstoreRecoverShard(p0 context.Context, p1 string) e
return ErrNotSupported return ErrNotSupported
} }
func (s *StorageMinerStruct) DagstoreRegisterShard(p0 context.Context, p1 string) error {
if s.Internal.DagstoreRegisterShard == nil {
return ErrNotSupported
}
return s.Internal.DagstoreRegisterShard(p0, p1)
}
func (s *StorageMinerStub) DagstoreRegisterShard(p0 context.Context, p1 string) error {
return ErrNotSupported
}
func (s *StorageMinerStruct) DealsConsiderOfflineRetrievalDeals(p0 context.Context) (bool, error) { func (s *StorageMinerStruct) DealsConsiderOfflineRetrievalDeals(p0 context.Context) (bool, error) {
if s.Internal.DealsConsiderOfflineRetrievalDeals == nil { if s.Internal.DealsConsiderOfflineRetrievalDeals == nil {
return false, ErrNotSupported return false, ErrNotSupported

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -37,7 +37,7 @@ func BuildTypeString() string {
} }
// BuildVersion is the local build version // BuildVersion is the local build version
const BuildVersion = "1.15.3-dev" const BuildVersion = "1.15.4-dev"
func UserVersion() string { func UserVersion() string {
if os.Getenv("LOTUS_VERSION_IGNORE_COMMIT") == "1" { if os.Getenv("LOTUS_VERSION_IGNORE_COMMIT") == "1" {

View File

@ -26,51 +26,57 @@ func (t *Request) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufRequest); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufRequest); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Head ([]cid.Cid) (slice) // t.Head ([]cid.Cid) (slice)
if len(t.Head) > cbg.MaxLength { if len(t.Head) > cbg.MaxLength {
return xerrors.Errorf("Slice value in field t.Head was too long") return xerrors.Errorf("Slice value in field t.Head was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.Head))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Head))); err != nil {
return err return err
} }
for _, v := range t.Head { for _, v := range t.Head {
if err := cbg.WriteCidBuf(scratch, w, v); err != nil { if err := cbg.WriteCid(w, v); err != nil {
return xerrors.Errorf("failed writing cid field t.Head: %w", err) return xerrors.Errorf("failed writing cid field t.Head: %w", err)
} }
} }
// t.Length (uint64) (uint64) // t.Length (uint64) (uint64)
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.Length)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Length)); err != nil {
return err return err
} }
// t.Options (uint64) (uint64) // t.Options (uint64) (uint64)
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.Options)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Options)); err != nil {
return err return err
} }
return nil return nil
} }
func (t *Request) UnmarshalCBOR(r io.Reader) error { func (t *Request) UnmarshalCBOR(r io.Reader) (err error) {
*t = Request{} *t = Request{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -81,7 +87,7 @@ func (t *Request) UnmarshalCBOR(r io.Reader) error {
// t.Head ([]cid.Cid) (slice) // t.Head ([]cid.Cid) (slice)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -100,7 +106,7 @@ func (t *Request) UnmarshalCBOR(r io.Reader) error {
for i := 0; i < int(extra); i++ { for i := 0; i < int(extra); i++ {
c, err := cbg.ReadCid(br) c, err := cbg.ReadCid(cr)
if err != nil { if err != nil {
return xerrors.Errorf("reading cid field t.Head failed: %w", err) return xerrors.Errorf("reading cid field t.Head failed: %w", err)
} }
@ -111,7 +117,7 @@ func (t *Request) UnmarshalCBOR(r io.Reader) error {
{ {
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -125,7 +131,7 @@ func (t *Request) UnmarshalCBOR(r io.Reader) error {
{ {
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -145,15 +151,16 @@ func (t *Response) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufResponse); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufResponse); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Status (exchange.status) (uint64) // t.Status (exchange.status) (uint64)
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.Status)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Status)); err != nil {
return err return err
} }
@ -162,7 +169,7 @@ func (t *Response) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field t.ErrorMessage was too long") return xerrors.Errorf("Value in field t.ErrorMessage was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len(t.ErrorMessage))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.ErrorMessage))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string(t.ErrorMessage)); err != nil { if _, err := io.WriteString(w, string(t.ErrorMessage)); err != nil {
@ -174,27 +181,32 @@ func (t *Response) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Slice value in field t.Chain was too long") return xerrors.Errorf("Slice value in field t.Chain was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.Chain))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Chain))); err != nil {
return err return err
} }
for _, v := range t.Chain { for _, v := range t.Chain {
if err := v.MarshalCBOR(w); err != nil { if err := v.MarshalCBOR(cw); err != nil {
return err return err
} }
} }
return nil return nil
} }
func (t *Response) UnmarshalCBOR(r io.Reader) error { func (t *Response) UnmarshalCBOR(r io.Reader) (err error) {
*t = Response{} *t = Response{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -207,7 +219,7 @@ func (t *Response) UnmarshalCBOR(r io.Reader) error {
{ {
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -220,7 +232,7 @@ func (t *Response) UnmarshalCBOR(r io.Reader) error {
// t.ErrorMessage (string) (string) // t.ErrorMessage (string) (string)
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -229,7 +241,7 @@ func (t *Response) UnmarshalCBOR(r io.Reader) error {
} }
// t.Chain ([]*exchange.BSTipSet) (slice) // t.Chain ([]*exchange.BSTipSet) (slice)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -249,7 +261,7 @@ func (t *Response) UnmarshalCBOR(r io.Reader) error {
for i := 0; i < int(extra); i++ { for i := 0; i < int(extra); i++ {
var v BSTipSet var v BSTipSet
if err := v.UnmarshalCBOR(br); err != nil { if err := v.UnmarshalCBOR(cr); err != nil {
return err return err
} }
@ -266,22 +278,23 @@ func (t *CompactedMessages) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufCompactedMessages); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufCompactedMessages); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Bls ([]*types.Message) (slice) // t.Bls ([]*types.Message) (slice)
if len(t.Bls) > cbg.MaxLength { if len(t.Bls) > cbg.MaxLength {
return xerrors.Errorf("Slice value in field t.Bls was too long") return xerrors.Errorf("Slice value in field t.Bls was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.Bls))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Bls))); err != nil {
return err return err
} }
for _, v := range t.Bls { for _, v := range t.Bls {
if err := v.MarshalCBOR(w); err != nil { if err := v.MarshalCBOR(cw); err != nil {
return err return err
} }
} }
@ -291,7 +304,7 @@ func (t *CompactedMessages) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Slice value in field t.BlsIncludes was too long") return xerrors.Errorf("Slice value in field t.BlsIncludes was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.BlsIncludes))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.BlsIncludes))); err != nil {
return err return err
} }
for _, v := range t.BlsIncludes { for _, v := range t.BlsIncludes {
@ -299,11 +312,11 @@ func (t *CompactedMessages) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Slice value in field v was too long") return xerrors.Errorf("Slice value in field v was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(v))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(v))); err != nil {
return err return err
} }
for _, v := range v { for _, v := range v {
if err := cbg.CborWriteHeader(w, cbg.MajUnsignedInt, uint64(v)); err != nil { if err := cw.CborWriteHeader(cbg.MajUnsignedInt, uint64(v)); err != nil {
return err return err
} }
} }
@ -314,11 +327,11 @@ func (t *CompactedMessages) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Slice value in field t.Secpk was too long") return xerrors.Errorf("Slice value in field t.Secpk was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.Secpk))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Secpk))); err != nil {
return err return err
} }
for _, v := range t.Secpk { for _, v := range t.Secpk {
if err := v.MarshalCBOR(w); err != nil { if err := v.MarshalCBOR(cw); err != nil {
return err return err
} }
} }
@ -328,7 +341,7 @@ func (t *CompactedMessages) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Slice value in field t.SecpkIncludes was too long") return xerrors.Errorf("Slice value in field t.SecpkIncludes was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.SecpkIncludes))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.SecpkIncludes))); err != nil {
return err return err
} }
for _, v := range t.SecpkIncludes { for _, v := range t.SecpkIncludes {
@ -336,11 +349,11 @@ func (t *CompactedMessages) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Slice value in field v was too long") return xerrors.Errorf("Slice value in field v was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(v))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(v))); err != nil {
return err return err
} }
for _, v := range v { for _, v := range v {
if err := cbg.CborWriteHeader(w, cbg.MajUnsignedInt, uint64(v)); err != nil { if err := cw.CborWriteHeader(cbg.MajUnsignedInt, uint64(v)); err != nil {
return err return err
} }
} }
@ -348,16 +361,21 @@ func (t *CompactedMessages) MarshalCBOR(w io.Writer) error {
return nil return nil
} }
func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) error { func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) (err error) {
*t = CompactedMessages{} *t = CompactedMessages{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -368,7 +386,7 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) error {
// t.Bls ([]*types.Message) (slice) // t.Bls ([]*types.Message) (slice)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -388,7 +406,7 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) error {
for i := 0; i < int(extra); i++ { for i := 0; i < int(extra); i++ {
var v types.Message var v types.Message
if err := v.UnmarshalCBOR(br); err != nil { if err := v.UnmarshalCBOR(cr); err != nil {
return err return err
} }
@ -397,7 +415,7 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) error {
// t.BlsIncludes ([][]uint64) (slice) // t.BlsIncludes ([][]uint64) (slice)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -420,7 +438,7 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) error {
var extra uint64 var extra uint64
var err error var err error
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -439,7 +457,7 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) error {
for j := 0; j < int(extra); j++ { for j := 0; j < int(extra); j++ {
maj, val, err := cbg.CborReadHeaderBuf(br, scratch) maj, val, err := cr.ReadHeader()
if err != nil { if err != nil {
return xerrors.Errorf("failed to read uint64 for t.BlsIncludes[i] slice: %w", err) return xerrors.Errorf("failed to read uint64 for t.BlsIncludes[i] slice: %w", err)
} }
@ -456,7 +474,7 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) error {
// t.Secpk ([]*types.SignedMessage) (slice) // t.Secpk ([]*types.SignedMessage) (slice)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -476,7 +494,7 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) error {
for i := 0; i < int(extra); i++ { for i := 0; i < int(extra); i++ {
var v types.SignedMessage var v types.SignedMessage
if err := v.UnmarshalCBOR(br); err != nil { if err := v.UnmarshalCBOR(cr); err != nil {
return err return err
} }
@ -485,7 +503,7 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) error {
// t.SecpkIncludes ([][]uint64) (slice) // t.SecpkIncludes ([][]uint64) (slice)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -508,7 +526,7 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) error {
var extra uint64 var extra uint64
var err error var err error
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -527,7 +545,7 @@ func (t *CompactedMessages) UnmarshalCBOR(r io.Reader) error {
for j := 0; j < int(extra); j++ { for j := 0; j < int(extra); j++ {
maj, val, err := cbg.CborReadHeaderBuf(br, scratch) maj, val, err := cr.ReadHeader()
if err != nil { if err != nil {
return xerrors.Errorf("failed to read uint64 for t.SecpkIncludes[i] slice: %w", err) return xerrors.Errorf("failed to read uint64 for t.SecpkIncludes[i] slice: %w", err)
} }
@ -552,43 +570,49 @@ func (t *BSTipSet) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufBSTipSet); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufBSTipSet); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Blocks ([]*types.BlockHeader) (slice) // t.Blocks ([]*types.BlockHeader) (slice)
if len(t.Blocks) > cbg.MaxLength { if len(t.Blocks) > cbg.MaxLength {
return xerrors.Errorf("Slice value in field t.Blocks was too long") return xerrors.Errorf("Slice value in field t.Blocks was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.Blocks))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Blocks))); err != nil {
return err return err
} }
for _, v := range t.Blocks { for _, v := range t.Blocks {
if err := v.MarshalCBOR(w); err != nil { if err := v.MarshalCBOR(cw); err != nil {
return err return err
} }
} }
// t.Messages (exchange.CompactedMessages) (struct) // t.Messages (exchange.CompactedMessages) (struct)
if err := t.Messages.MarshalCBOR(w); err != nil { if err := t.Messages.MarshalCBOR(cw); err != nil {
return err return err
} }
return nil return nil
} }
func (t *BSTipSet) UnmarshalCBOR(r io.Reader) error { func (t *BSTipSet) UnmarshalCBOR(r io.Reader) (err error) {
*t = BSTipSet{} *t = BSTipSet{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -599,7 +623,7 @@ func (t *BSTipSet) UnmarshalCBOR(r io.Reader) error {
// t.Blocks ([]*types.BlockHeader) (slice) // t.Blocks ([]*types.BlockHeader) (slice)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -619,7 +643,7 @@ func (t *BSTipSet) UnmarshalCBOR(r io.Reader) error {
for i := 0; i < int(extra); i++ { for i := 0; i < int(extra); i++ {
var v types.BlockHeader var v types.BlockHeader
if err := v.UnmarshalCBOR(br); err != nil { if err := v.UnmarshalCBOR(cr); err != nil {
return err return err
} }
@ -630,16 +654,16 @@ func (t *BSTipSet) UnmarshalCBOR(r io.Reader) error {
{ {
b, err := br.ReadByte() b, err := cr.ReadByte()
if err != nil { if err != nil {
return err return err
} }
if b != cbg.CborNull[0] { if b != cbg.CborNull[0] {
if err := br.UnreadByte(); err != nil { if err := cr.UnreadByte(); err != nil {
return err return err
} }
t.Messages = new(CompactedMessages) t.Messages = new(CompactedMessages)
if err := t.Messages.UnmarshalCBOR(br); err != nil { if err := t.Messages.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Messages pointer: %w", err) return xerrors.Errorf("unmarshaling t.Messages pointer: %w", err)
} }
} }

View File

@ -25,30 +25,31 @@ func (t *FundedAddressState) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufFundedAddressState); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufFundedAddressState); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Addr (address.Address) (struct) // t.Addr (address.Address) (struct)
if err := t.Addr.MarshalCBOR(w); err != nil { if err := t.Addr.MarshalCBOR(cw); err != nil {
return err return err
} }
// t.AmtReserved (big.Int) (struct) // t.AmtReserved (big.Int) (struct)
if err := t.AmtReserved.MarshalCBOR(w); err != nil { if err := t.AmtReserved.MarshalCBOR(cw); err != nil {
return err return err
} }
// t.MsgCid (cid.Cid) (struct) // t.MsgCid (cid.Cid) (struct)
if t.MsgCid == nil { if t.MsgCid == nil {
if _, err := w.Write(cbg.CborNull); err != nil { if _, err := cw.Write(cbg.CborNull); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteCidBuf(scratch, w, *t.MsgCid); err != nil { if err := cbg.WriteCid(cw, *t.MsgCid); err != nil {
return xerrors.Errorf("failed to write cid field t.MsgCid: %w", err) return xerrors.Errorf("failed to write cid field t.MsgCid: %w", err)
} }
} }
@ -56,16 +57,21 @@ func (t *FundedAddressState) MarshalCBOR(w io.Writer) error {
return nil return nil
} }
func (t *FundedAddressState) UnmarshalCBOR(r io.Reader) error { func (t *FundedAddressState) UnmarshalCBOR(r io.Reader) (err error) {
*t = FundedAddressState{} *t = FundedAddressState{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -78,7 +84,7 @@ func (t *FundedAddressState) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.Addr.UnmarshalCBOR(br); err != nil { if err := t.Addr.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Addr: %w", err) return xerrors.Errorf("unmarshaling t.Addr: %w", err)
} }
@ -87,7 +93,7 @@ func (t *FundedAddressState) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.AmtReserved.UnmarshalCBOR(br); err != nil { if err := t.AmtReserved.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.AmtReserved: %w", err) return xerrors.Errorf("unmarshaling t.AmtReserved: %w", err)
} }
@ -96,16 +102,16 @@ func (t *FundedAddressState) UnmarshalCBOR(r io.Reader) error {
{ {
b, err := br.ReadByte() b, err := cr.ReadByte()
if err != nil { if err != nil {
return err return err
} }
if b != cbg.CborNull[0] { if b != cbg.CborNull[0] {
if err := br.UnreadByte(); err != nil { if err := cr.UnreadByte(); err != nil {
return err return err
} }
c, err := cbg.ReadCid(br) c, err := cbg.ReadCid(cr)
if err != nil { if err != nil {
return xerrors.Errorf("failed to read cid field t.MsgCid: %w", err) return xerrors.Errorf("failed to read cid field t.MsgCid: %w", err)
} }

View File

@ -8,6 +8,7 @@ import (
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
"github.com/ipld/go-car" "github.com/ipld/go-car"
carutil "github.com/ipld/go-car/util" carutil "github.com/ipld/go-car/util"
mh "github.com/multiformats/go-multihash"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
@ -142,7 +143,18 @@ func (cs *ChainStore) WalkSnapshot(ctx context.Context, ts *types.TipSet, inclRe
for _, c := range out { for _, c := range out {
if seen.Visit(c) { if seen.Visit(c) {
if c.Prefix().Codec != cid.DagCBOR { prefix := c.Prefix()
// Don't include identity CIDs.
if prefix.MhType == mh.IDENTITY {
continue
}
// We only include raw and dagcbor, for now.
// Raw for "code" CIDs.
switch prefix.Codec {
case cid.Raw, cid.DagCBOR:
default:
continue continue
} }

File diff suppressed because it is too large Load Diff

View File

@ -26,19 +26,20 @@ func (t *FvmExecutionTrace) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufFvmExecutionTrace); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufFvmExecutionTrace); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Msg (types.Message) (struct) // t.Msg (types.Message) (struct)
if err := t.Msg.MarshalCBOR(w); err != nil { if err := t.Msg.MarshalCBOR(cw); err != nil {
return err return err
} }
// t.MsgRct (types.MessageReceipt) (struct) // t.MsgRct (types.MessageReceipt) (struct)
if err := t.MsgRct.MarshalCBOR(w); err != nil { if err := t.MsgRct.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -47,7 +48,7 @@ func (t *FvmExecutionTrace) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field t.Error was too long") return xerrors.Errorf("Value in field t.Error was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len(t.Error))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Error))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string(t.Error)); err != nil { if _, err := io.WriteString(w, string(t.Error)); err != nil {
@ -59,27 +60,32 @@ func (t *FvmExecutionTrace) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Slice value in field t.Subcalls was too long") return xerrors.Errorf("Slice value in field t.Subcalls was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.Subcalls))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Subcalls))); err != nil {
return err return err
} }
for _, v := range t.Subcalls { for _, v := range t.Subcalls {
if err := v.MarshalCBOR(w); err != nil { if err := v.MarshalCBOR(cw); err != nil {
return err return err
} }
} }
return nil return nil
} }
func (t *FvmExecutionTrace) UnmarshalCBOR(r io.Reader) error { func (t *FvmExecutionTrace) UnmarshalCBOR(r io.Reader) (err error) {
*t = FvmExecutionTrace{} *t = FvmExecutionTrace{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -92,16 +98,16 @@ func (t *FvmExecutionTrace) UnmarshalCBOR(r io.Reader) error {
{ {
b, err := br.ReadByte() b, err := cr.ReadByte()
if err != nil { if err != nil {
return err return err
} }
if b != cbg.CborNull[0] { if b != cbg.CborNull[0] {
if err := br.UnreadByte(); err != nil { if err := cr.UnreadByte(); err != nil {
return err return err
} }
t.Msg = new(types.Message) t.Msg = new(types.Message)
if err := t.Msg.UnmarshalCBOR(br); err != nil { if err := t.Msg.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Msg pointer: %w", err) return xerrors.Errorf("unmarshaling t.Msg pointer: %w", err)
} }
} }
@ -111,16 +117,16 @@ func (t *FvmExecutionTrace) UnmarshalCBOR(r io.Reader) error {
{ {
b, err := br.ReadByte() b, err := cr.ReadByte()
if err != nil { if err != nil {
return err return err
} }
if b != cbg.CborNull[0] { if b != cbg.CborNull[0] {
if err := br.UnreadByte(); err != nil { if err := cr.UnreadByte(); err != nil {
return err return err
} }
t.MsgRct = new(types.MessageReceipt) t.MsgRct = new(types.MessageReceipt)
if err := t.MsgRct.UnmarshalCBOR(br); err != nil { if err := t.MsgRct.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.MsgRct pointer: %w", err) return xerrors.Errorf("unmarshaling t.MsgRct pointer: %w", err)
} }
} }
@ -129,7 +135,7 @@ func (t *FvmExecutionTrace) UnmarshalCBOR(r io.Reader) error {
// t.Error (string) (string) // t.Error (string) (string)
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -138,7 +144,7 @@ func (t *FvmExecutionTrace) UnmarshalCBOR(r io.Reader) error {
} }
// t.Subcalls ([]vm.FvmExecutionTrace) (slice) // t.Subcalls ([]vm.FvmExecutionTrace) (slice)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -158,7 +164,7 @@ func (t *FvmExecutionTrace) UnmarshalCBOR(r io.Reader) error {
for i := 0; i < int(extra); i++ { for i := 0; i < int(extra); i++ {
var v FvmExecutionTrace var v FvmExecutionTrace
if err := v.UnmarshalCBOR(br); err != nil { if err := v.UnmarshalCBOR(cr); err != nil {
return err return err
} }

View File

@ -19,6 +19,7 @@ var dagstoreCmd = &cli.Command{
Usage: "Manage the dagstore on the markets subsystem", Usage: "Manage the dagstore on the markets subsystem",
Subcommands: []*cli.Command{ Subcommands: []*cli.Command{
dagstoreListShardsCmd, dagstoreListShardsCmd,
dagstoreRegisterShardCmd,
dagstoreInitializeShardCmd, dagstoreInitializeShardCmd,
dagstoreRecoverShardCmd, dagstoreRecoverShardCmd,
dagstoreInitializeAllCmd, dagstoreInitializeAllCmd,
@ -59,6 +60,45 @@ var dagstoreListShardsCmd = &cli.Command{
}, },
} }
var dagstoreRegisterShardCmd = &cli.Command{
Name: "register-shard",
ArgsUsage: "[key]",
Usage: "Register a shard",
Flags: []cli.Flag{
&cli.BoolFlag{
Name: "color",
Usage: "use color in display output",
DefaultText: "depends on output being a TTY",
},
},
Action: func(cctx *cli.Context) error {
if cctx.IsSet("color") {
color.NoColor = !cctx.Bool("color")
}
if cctx.NArg() != 1 {
return fmt.Errorf("must provide a single shard key")
}
marketsAPI, closer, err := lcli.GetMarketsAPI(cctx)
if err != nil {
return err
}
defer closer()
ctx := lcli.ReqContext(cctx)
shardKey := cctx.Args().First()
err = marketsAPI.DagstoreRegisterShard(ctx, shardKey)
if err != nil {
return err
}
fmt.Println("Registered shard " + shardKey)
return nil
},
}
var dagstoreInitializeShardCmd = &cli.Command{ var dagstoreInitializeShardCmd = &cli.Command{
Name: "initialize-shard", Name: "initialize-shard",
ArgsUsage: "[key]", ArgsUsage: "[key]",

View File

@ -0,0 +1,54 @@
package main
import (
"fmt"
"sort"
"github.com/filecoin-project/lotus/blockstore"
"github.com/filecoin-project/lotus/chain/actors/builtin/miner"
"github.com/filecoin-project/lotus/chain/types"
lcli "github.com/filecoin-project/lotus/cli"
"github.com/filecoin-project/specs-actors/v7/actors/util/adt"
cbor "github.com/ipfs/go-ipld-cbor"
"github.com/urfave/cli/v2"
)
var sectorPreCommitsCmd = &cli.Command{
Name: "precommits",
Usage: "Print on-chain precommit info",
Action: func(cctx *cli.Context) error {
ctx := lcli.ReqContext(cctx)
mapi, closer, err := lcli.GetFullNodeAPI(cctx)
if err != nil {
return err
}
defer closer()
maddr, err := getActorAddress(ctx, cctx)
if err != nil {
return err
}
mact, err := mapi.StateGetActor(ctx, maddr, types.EmptyTSK)
if err != nil {
return err
}
store := adt.WrapStore(ctx, cbor.NewCborStore(blockstore.NewAPIBlockstore(mapi)))
mst, err := miner.Load(store, mact)
if err != nil {
return err
}
preCommitSector := make([]miner.SectorPreCommitOnChainInfo, 0)
err = mst.ForEachPrecommittedSector(func(info miner.SectorPreCommitOnChainInfo) error {
preCommitSector = append(preCommitSector, info)
return err
})
less := func(i, j int) bool {
return preCommitSector[i].Info.SectorNumber <= preCommitSector[j].Info.SectorNumber
}
sort.Slice(preCommitSector, less)
for _, info := range preCommitSector {
fmt.Printf("%s: %s\n", info.Info.SectorNumber, info.PreCommitEpoch)
}
return nil
},
}

View File

@ -45,6 +45,7 @@ var sectorsCmd = &cli.Command{
sectorsRefsCmd, sectorsRefsCmd,
sectorsUpdateCmd, sectorsUpdateCmd,
sectorsPledgeCmd, sectorsPledgeCmd,
sectorPreCommitsCmd,
sectorsCheckExpireCmd, sectorsCheckExpireCmd,
sectorsExpiredCmd, sectorsExpiredCmd,
sectorsRenewCmd, sectorsRenewCmd,
@ -58,6 +59,7 @@ var sectorsCmd = &cli.Command{
sectorsCapacityCollateralCmd, sectorsCapacityCollateralCmd,
sectorsBatching, sectorsBatching,
sectorsRefreshPieceMatchingCmd, sectorsRefreshPieceMatchingCmd,
sectorsCompactPartitionsCmd,
}, },
} }
@ -2088,3 +2090,89 @@ func yesno(b bool) string {
} }
return color.RedString("NO") return color.RedString("NO")
} }
var sectorsCompactPartitionsCmd = &cli.Command{
Name: "compact-partitions",
Usage: "removes dead sectors from partitions and reduces the number of partitions used if possible",
Flags: []cli.Flag{
&cli.Uint64Flag{
Name: "deadline",
Usage: "the deadline to compact the partitions in",
Required: true,
},
&cli.Int64SliceFlag{
Name: "partitions",
Usage: "list of partitions to compact sectors in",
Required: true,
},
&cli.BoolFlag{
Name: "really-do-it",
Usage: "Actually send transaction performing the action",
Value: false,
},
},
Action: func(cctx *cli.Context) error {
if !cctx.Bool("really-do-it") {
fmt.Println("Pass --really-do-it to actually execute this action")
return nil
}
api, acloser, err := lcli.GetFullNodeAPI(cctx)
if err != nil {
return err
}
defer acloser()
ctx := lcli.ReqContext(cctx)
maddr, err := getActorAddress(ctx, cctx)
if err != nil {
return err
}
minfo, err := api.StateMinerInfo(ctx, maddr, types.EmptyTSK)
if err != nil {
return err
}
deadline := cctx.Uint64("deadline")
if err != nil {
return err
}
parts := cctx.Int64Slice("partitions")
if len(parts) <= 0 {
return fmt.Errorf("must include at least one partition to compact")
}
partitions := bitfield.BitField{}
for _, partition := range parts {
partitions.Set(uint64(partition))
}
params := miner5.CompactPartitionsParams{
Deadline: deadline,
Partitions: partitions,
}
sp, err := actors.SerializeParams(&params)
if err != nil {
return xerrors.Errorf("serializing params: %w", err)
}
smsg, err := api.MpoolPushMessage(ctx, &types.Message{
From: minfo.Worker,
To: maddr,
Method: miner.Methods.CompactPartitions,
Value: big.Zero(),
Params: sp,
}, nil)
if err != nil {
return xerrors.Errorf("mpool push: %w", err)
}
fmt.Println("Message CID:", smsg.Cid())
return nil
},
}

View File

@ -23,18 +23,19 @@ func (t *CarbNode) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write([]byte{161}); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write([]byte{161}); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Sub ([]cid.Cid) (slice) // t.Sub ([]cid.Cid) (slice)
if len("Sub") > cbg.MaxLength { if len("Sub") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"Sub\" was too long") return xerrors.Errorf("Value in field \"Sub\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Sub"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Sub"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Sub")); err != nil { if _, err := io.WriteString(w, string("Sub")); err != nil {
@ -45,27 +46,32 @@ func (t *CarbNode) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Slice value in field t.Sub was too long") return xerrors.Errorf("Slice value in field t.Sub was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.Sub))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Sub))); err != nil {
return err return err
} }
for _, v := range t.Sub { for _, v := range t.Sub {
if err := cbg.WriteCidBuf(scratch, w, v); err != nil { if err := cbg.WriteCid(w, v); err != nil {
return xerrors.Errorf("failed writing cid field t.Sub: %w", err) return xerrors.Errorf("failed writing cid field t.Sub: %w", err)
} }
} }
return nil return nil
} }
func (t *CarbNode) UnmarshalCBOR(r io.Reader) error { func (t *CarbNode) UnmarshalCBOR(r io.Reader) (err error) {
*t = CarbNode{} *t = CarbNode{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajMap { if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map") return fmt.Errorf("cbor input should be of type map")
} }
@ -80,7 +86,7 @@ func (t *CarbNode) UnmarshalCBOR(r io.Reader) error {
for i := uint64(0); i < n; i++ { for i := uint64(0); i < n; i++ {
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -92,7 +98,7 @@ func (t *CarbNode) UnmarshalCBOR(r io.Reader) error {
// t.Sub ([]cid.Cid) (slice) // t.Sub ([]cid.Cid) (slice)
case "Sub": case "Sub":
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -111,7 +117,7 @@ func (t *CarbNode) UnmarshalCBOR(r io.Reader) error {
for i := 0; i < int(extra); i++ { for i := 0; i < int(extra); i++ {
c, err := cbg.ReadCid(br) c, err := cbg.ReadCid(cr)
if err != nil { if err != nil {
return xerrors.Errorf("reading cid field t.Sub failed: %w", err) return xerrors.Errorf("reading cid field t.Sub failed: %w", err)
} }

View File

@ -193,7 +193,7 @@ var verifRegVerifyClientCmd = &cli.Command{
}, },
}, },
Action: func(cctx *cli.Context) error { Action: func(cctx *cli.Context) error {
fmt.Println("DEPRECATED: This behavior is being moved to `lotus verifreg`") fmt.Println("DEPRECATED: This behavior is being moved to `lotus filplus`")
froms := cctx.String("from") froms := cctx.String("from")
if froms == "" { if froms == "" {
return fmt.Errorf("must specify from address with --from") return fmt.Errorf("must specify from address with --from")
@ -262,7 +262,7 @@ var verifRegListVerifiersCmd = &cli.Command{
Usage: "list all verifiers", Usage: "list all verifiers",
Hidden: true, Hidden: true,
Action: func(cctx *cli.Context) error { Action: func(cctx *cli.Context) error {
fmt.Println("DEPRECATED: This behavior is being moved to `lotus verifreg`") fmt.Println("DEPRECATED: This behavior is being moved to `lotus filplus`")
api, closer, err := lcli.GetFullNodeAPI(cctx) api, closer, err := lcli.GetFullNodeAPI(cctx)
if err != nil { if err != nil {
return err return err
@ -294,7 +294,7 @@ var verifRegListClientsCmd = &cli.Command{
Usage: "list all verified clients", Usage: "list all verified clients",
Hidden: true, Hidden: true,
Action: func(cctx *cli.Context) error { Action: func(cctx *cli.Context) error {
fmt.Println("DEPRECATED: This behavior is being moved to `lotus verifreg`") fmt.Println("DEPRECATED: This behavior is being moved to `lotus filplus`")
api, closer, err := lcli.GetFullNodeAPI(cctx) api, closer, err := lcli.GetFullNodeAPI(cctx)
if err != nil { if err != nil {
return err return err
@ -326,7 +326,7 @@ var verifRegCheckClientCmd = &cli.Command{
Usage: "check verified client remaining bytes", Usage: "check verified client remaining bytes",
Hidden: true, Hidden: true,
Action: func(cctx *cli.Context) error { Action: func(cctx *cli.Context) error {
fmt.Println("DEPRECATED: This behavior is being moved to `lotus verifreg`") fmt.Println("DEPRECATED: This behavior is being moved to `lotus filplus`")
if !cctx.Args().Present() { if !cctx.Args().Present() {
return fmt.Errorf("must specify client address to check") return fmt.Errorf("must specify client address to check")
} }
@ -362,7 +362,7 @@ var verifRegCheckVerifierCmd = &cli.Command{
Usage: "check verifiers remaining bytes", Usage: "check verifiers remaining bytes",
Hidden: true, Hidden: true,
Action: func(cctx *cli.Context) error { Action: func(cctx *cli.Context) error {
fmt.Println("DEPRECATED: This behavior is being moved to `lotus verifreg`") fmt.Println("DEPRECATED: This behavior is being moved to `lotus filplus`")
if !cctx.Args().Present() { if !cctx.Args().Present() {
return fmt.Errorf("must specify verifier address to check") return fmt.Errorf("must specify verifier address to check")
} }

View File

@ -182,12 +182,16 @@ var runCmd = &cli.Command{
Usage: "enable window post", Usage: "enable window post",
Value: false, Value: false,
}, },
&cli.BoolFlag{ &cli.BoolFlag{
Name: "winningpost", Name: "winningpost",
Usage: "enable winning post", Usage: "enable winning post",
Value: false, Value: false,
}, },
&cli.BoolFlag{
Name: "no-default",
Usage: "disable all default compute tasks, use the worker for storage/fetching only",
Value: false,
},
&cli.IntFlag{ &cli.IntFlag{
Name: "parallel-fetch-limit", Name: "parallel-fetch-limit",
Usage: "maximum fetch operations to run in parallel", Usage: "maximum fetch operations to run in parallel",
@ -308,8 +312,11 @@ var runCmd = &cli.Command{
} }
if workerType == "" { if workerType == "" {
workerType = sealtasks.WorkerSealing
taskTypes = append(taskTypes, sealtasks.TTFetch, sealtasks.TTCommit1, sealtasks.TTProveReplicaUpdate1, sealtasks.TTFinalize, sealtasks.TTFinalizeReplicaUpdate) taskTypes = append(taskTypes, sealtasks.TTFetch, sealtasks.TTCommit1, sealtasks.TTProveReplicaUpdate1, sealtasks.TTFinalize, sealtasks.TTFinalizeReplicaUpdate)
if !cctx.Bool("no-default") {
workerType = sealtasks.WorkerSealing
}
} }
if (workerType == sealtasks.WorkerSealing || cctx.IsSet("addpiece")) && cctx.Bool("addpiece") { if (workerType == sealtasks.WorkerSealing || cctx.IsSet("addpiece")) && cctx.Bool("addpiece") {
@ -337,6 +344,10 @@ var runCmd = &cli.Command{
taskTypes = append(taskTypes, sealtasks.TTRegenSectorKey) taskTypes = append(taskTypes, sealtasks.TTRegenSectorKey)
} }
if cctx.Bool("no-default") && workerType == "" {
workerType = sealtasks.WorkerSealing
}
if len(taskTypes) == 0 { if len(taskTypes) == 0 {
return xerrors.Errorf("no task types specified") return xerrors.Errorf("no task types specified")
} }

View File

@ -28,18 +28,19 @@ func (t *State) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufState); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufState); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Value (string) (string) // t.Value (string) (string)
if len(t.Value) > cbg.MaxLength { if len(t.Value) > cbg.MaxLength {
return xerrors.Errorf("Value in field t.Value was too long") return xerrors.Errorf("Value in field t.Value was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len(t.Value))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Value))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string(t.Value)); err != nil { if _, err := io.WriteString(w, string(t.Value)); err != nil {
@ -51,27 +52,32 @@ func (t *State) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Slice value in field t.Unmarshallable was too long") return xerrors.Errorf("Slice value in field t.Unmarshallable was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.Unmarshallable))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Unmarshallable))); err != nil {
return err return err
} }
for _, v := range t.Unmarshallable { for _, v := range t.Unmarshallable {
if err := v.MarshalCBOR(w); err != nil { if err := v.MarshalCBOR(cw); err != nil {
return err return err
} }
} }
return nil return nil
} }
func (t *State) UnmarshalCBOR(r io.Reader) error { func (t *State) UnmarshalCBOR(r io.Reader) (err error) {
*t = State{} *t = State{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -83,7 +89,7 @@ func (t *State) UnmarshalCBOR(r io.Reader) error {
// t.Value (string) (string) // t.Value (string) (string)
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -92,7 +98,7 @@ func (t *State) UnmarshalCBOR(r io.Reader) error {
} }
// t.Unmarshallable ([]*chaos.UnmarshallableCBOR) (slice) // t.Unmarshallable ([]*chaos.UnmarshallableCBOR) (slice)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -112,7 +118,7 @@ func (t *State) UnmarshalCBOR(r io.Reader) error {
for i := 0; i < int(extra); i++ { for i := 0; i < int(extra); i++ {
var v UnmarshallableCBOR var v UnmarshallableCBOR
if err := v.UnmarshalCBOR(br); err != nil { if err := v.UnmarshalCBOR(cr); err != nil {
return err return err
} }
@ -129,19 +135,20 @@ func (t *CallerValidationArgs) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufCallerValidationArgs); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufCallerValidationArgs); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Branch (chaos.CallerValidationBranch) (int64) // t.Branch (chaos.CallerValidationBranch) (int64)
if t.Branch >= 0 { if t.Branch >= 0 {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.Branch)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Branch)); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.Branch-1)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.Branch-1)); err != nil {
return err return err
} }
} }
@ -151,11 +158,11 @@ func (t *CallerValidationArgs) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Slice value in field t.Addrs was too long") return xerrors.Errorf("Slice value in field t.Addrs was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.Addrs))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Addrs))); err != nil {
return err return err
} }
for _, v := range t.Addrs { for _, v := range t.Addrs {
if err := v.MarshalCBOR(w); err != nil { if err := v.MarshalCBOR(cw); err != nil {
return err return err
} }
} }
@ -165,27 +172,32 @@ func (t *CallerValidationArgs) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Slice value in field t.Types was too long") return xerrors.Errorf("Slice value in field t.Types was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.Types))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Types))); err != nil {
return err return err
} }
for _, v := range t.Types { for _, v := range t.Types {
if err := cbg.WriteCidBuf(scratch, w, v); err != nil { if err := cbg.WriteCid(w, v); err != nil {
return xerrors.Errorf("failed writing cid field t.Types: %w", err) return xerrors.Errorf("failed writing cid field t.Types: %w", err)
} }
} }
return nil return nil
} }
func (t *CallerValidationArgs) UnmarshalCBOR(r io.Reader) error { func (t *CallerValidationArgs) UnmarshalCBOR(r io.Reader) (err error) {
*t = CallerValidationArgs{} *t = CallerValidationArgs{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -196,7 +208,7 @@ func (t *CallerValidationArgs) UnmarshalCBOR(r io.Reader) error {
// t.Branch (chaos.CallerValidationBranch) (int64) // t.Branch (chaos.CallerValidationBranch) (int64)
{ {
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
var extraI int64 var extraI int64
if err != nil { if err != nil {
return err return err
@ -221,7 +233,7 @@ func (t *CallerValidationArgs) UnmarshalCBOR(r io.Reader) error {
} }
// t.Addrs ([]address.Address) (slice) // t.Addrs ([]address.Address) (slice)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -241,7 +253,7 @@ func (t *CallerValidationArgs) UnmarshalCBOR(r io.Reader) error {
for i := 0; i < int(extra); i++ { for i := 0; i < int(extra); i++ {
var v address.Address var v address.Address
if err := v.UnmarshalCBOR(br); err != nil { if err := v.UnmarshalCBOR(cr); err != nil {
return err return err
} }
@ -250,7 +262,7 @@ func (t *CallerValidationArgs) UnmarshalCBOR(r io.Reader) error {
// t.Types ([]cid.Cid) (slice) // t.Types ([]cid.Cid) (slice)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -269,7 +281,7 @@ func (t *CallerValidationArgs) UnmarshalCBOR(r io.Reader) error {
for i := 0; i < int(extra); i++ { for i := 0; i < int(extra); i++ {
c, err := cbg.ReadCid(br) c, err := cbg.ReadCid(cr)
if err != nil { if err != nil {
return xerrors.Errorf("reading cid field t.Types failed: %w", err) return xerrors.Errorf("reading cid field t.Types failed: %w", err)
} }
@ -286,12 +298,13 @@ func (t *CreateActorArgs) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufCreateActorArgs); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufCreateActorArgs); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.UndefActorCID (bool) (bool) // t.UndefActorCID (bool) (bool)
if err := cbg.WriteBool(w, t.UndefActorCID); err != nil { if err := cbg.WriteBool(w, t.UndefActorCID); err != nil {
return err return err
@ -299,7 +312,7 @@ func (t *CreateActorArgs) MarshalCBOR(w io.Writer) error {
// t.ActorCID (cid.Cid) (struct) // t.ActorCID (cid.Cid) (struct)
if err := cbg.WriteCidBuf(scratch, w, t.ActorCID); err != nil { if err := cbg.WriteCid(cw, t.ActorCID); err != nil {
return xerrors.Errorf("failed to write cid field t.ActorCID: %w", err) return xerrors.Errorf("failed to write cid field t.ActorCID: %w", err)
} }
@ -309,22 +322,27 @@ func (t *CreateActorArgs) MarshalCBOR(w io.Writer) error {
} }
// t.Address (address.Address) (struct) // t.Address (address.Address) (struct)
if err := t.Address.MarshalCBOR(w); err != nil { if err := t.Address.MarshalCBOR(cw); err != nil {
return err return err
} }
return nil return nil
} }
func (t *CreateActorArgs) UnmarshalCBOR(r io.Reader) error { func (t *CreateActorArgs) UnmarshalCBOR(r io.Reader) (err error) {
*t = CreateActorArgs{} *t = CreateActorArgs{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -335,7 +353,7 @@ func (t *CreateActorArgs) UnmarshalCBOR(r io.Reader) error {
// t.UndefActorCID (bool) (bool) // t.UndefActorCID (bool) (bool)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -354,7 +372,7 @@ func (t *CreateActorArgs) UnmarshalCBOR(r io.Reader) error {
{ {
c, err := cbg.ReadCid(br) c, err := cbg.ReadCid(cr)
if err != nil { if err != nil {
return xerrors.Errorf("failed to read cid field t.ActorCID: %w", err) return xerrors.Errorf("failed to read cid field t.ActorCID: %w", err)
} }
@ -364,7 +382,7 @@ func (t *CreateActorArgs) UnmarshalCBOR(r io.Reader) error {
} }
// t.UndefAddress (bool) (bool) // t.UndefAddress (bool) (bool)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -383,7 +401,7 @@ func (t *CreateActorArgs) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.Address.UnmarshalCBOR(br); err != nil { if err := t.Address.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Address: %w", err) return xerrors.Errorf("unmarshaling t.Address: %w", err)
} }
@ -398,12 +416,15 @@ func (t *ResolveAddressResponse) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufResolveAddressResponse); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufResolveAddressResponse); err != nil {
return err return err
} }
// t.Address (address.Address) (struct) // t.Address (address.Address) (struct)
if err := t.Address.MarshalCBOR(w); err != nil { if err := t.Address.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -414,16 +435,21 @@ func (t *ResolveAddressResponse) MarshalCBOR(w io.Writer) error {
return nil return nil
} }
func (t *ResolveAddressResponse) UnmarshalCBOR(r io.Reader) error { func (t *ResolveAddressResponse) UnmarshalCBOR(r io.Reader) (err error) {
*t = ResolveAddressResponse{} *t = ResolveAddressResponse{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -436,14 +462,14 @@ func (t *ResolveAddressResponse) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.Address.UnmarshalCBOR(br); err != nil { if err := t.Address.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Address: %w", err) return xerrors.Errorf("unmarshaling t.Address: %w", err)
} }
} }
// t.Success (bool) (bool) // t.Success (bool) (bool)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -468,25 +494,26 @@ func (t *SendArgs) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufSendArgs); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufSendArgs); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.To (address.Address) (struct) // t.To (address.Address) (struct)
if err := t.To.MarshalCBOR(w); err != nil { if err := t.To.MarshalCBOR(cw); err != nil {
return err return err
} }
// t.Value (big.Int) (struct) // t.Value (big.Int) (struct)
if err := t.Value.MarshalCBOR(w); err != nil { if err := t.Value.MarshalCBOR(cw); err != nil {
return err return err
} }
// t.Method (abi.MethodNum) (uint64) // t.Method (abi.MethodNum) (uint64)
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.Method)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Method)); err != nil {
return err return err
} }
@ -495,26 +522,31 @@ func (t *SendArgs) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Byte array in field t.Params was too long") return xerrors.Errorf("Byte array in field t.Params was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajByteString, uint64(len(t.Params))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajByteString, uint64(len(t.Params))); err != nil {
return err return err
} }
if _, err := w.Write(t.Params[:]); err != nil { if _, err := cw.Write(t.Params[:]); err != nil {
return err return err
} }
return nil return nil
} }
func (t *SendArgs) UnmarshalCBOR(r io.Reader) error { func (t *SendArgs) UnmarshalCBOR(r io.Reader) (err error) {
*t = SendArgs{} *t = SendArgs{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -527,7 +559,7 @@ func (t *SendArgs) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.To.UnmarshalCBOR(br); err != nil { if err := t.To.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.To: %w", err) return xerrors.Errorf("unmarshaling t.To: %w", err)
} }
@ -536,7 +568,7 @@ func (t *SendArgs) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.Value.UnmarshalCBOR(br); err != nil { if err := t.Value.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Value: %w", err) return xerrors.Errorf("unmarshaling t.Value: %w", err)
} }
@ -545,7 +577,7 @@ func (t *SendArgs) UnmarshalCBOR(r io.Reader) error {
{ {
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -557,7 +589,7 @@ func (t *SendArgs) UnmarshalCBOR(r io.Reader) error {
} }
// t.Params ([]uint8) (slice) // t.Params ([]uint8) (slice)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -573,7 +605,7 @@ func (t *SendArgs) UnmarshalCBOR(r io.Reader) error {
t.Params = make([]uint8, extra) t.Params = make([]uint8, extra)
} }
if _, err := io.ReadFull(br, t.Params[:]); err != nil { if _, err := io.ReadFull(cr, t.Params[:]); err != nil {
return err return err
} }
return nil return nil
@ -586,48 +618,54 @@ func (t *SendReturn) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufSendReturn); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufSendReturn); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Return (builtin.CBORBytes) (slice) // t.Return (builtin.CBORBytes) (slice)
if len(t.Return) > cbg.ByteArrayMaxLen { if len(t.Return) > cbg.ByteArrayMaxLen {
return xerrors.Errorf("Byte array in field t.Return was too long") return xerrors.Errorf("Byte array in field t.Return was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajByteString, uint64(len(t.Return))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajByteString, uint64(len(t.Return))); err != nil {
return err return err
} }
if _, err := w.Write(t.Return[:]); err != nil { if _, err := cw.Write(t.Return[:]); err != nil {
return err return err
} }
// t.Code (exitcode.ExitCode) (int64) // t.Code (exitcode.ExitCode) (int64)
if t.Code >= 0 { if t.Code >= 0 {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.Code)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Code)); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.Code-1)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.Code-1)); err != nil {
return err return err
} }
} }
return nil return nil
} }
func (t *SendReturn) UnmarshalCBOR(r io.Reader) error { func (t *SendReturn) UnmarshalCBOR(r io.Reader) (err error) {
*t = SendReturn{} *t = SendReturn{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -638,7 +676,7 @@ func (t *SendReturn) UnmarshalCBOR(r io.Reader) error {
// t.Return (builtin.CBORBytes) (slice) // t.Return (builtin.CBORBytes) (slice)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -654,12 +692,12 @@ func (t *SendReturn) UnmarshalCBOR(r io.Reader) error {
t.Return = make([]uint8, extra) t.Return = make([]uint8, extra)
} }
if _, err := io.ReadFull(br, t.Return[:]); err != nil { if _, err := io.ReadFull(cr, t.Return[:]); err != nil {
return err return err
} }
// t.Code (exitcode.ExitCode) (int64) // t.Code (exitcode.ExitCode) (int64)
{ {
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
var extraI int64 var extraI int64
if err != nil { if err != nil {
return err return err
@ -692,18 +730,19 @@ func (t *MutateStateArgs) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufMutateStateArgs); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufMutateStateArgs); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Value (string) (string) // t.Value (string) (string)
if len(t.Value) > cbg.MaxLength { if len(t.Value) > cbg.MaxLength {
return xerrors.Errorf("Value in field t.Value was too long") return xerrors.Errorf("Value in field t.Value was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len(t.Value))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Value))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string(t.Value)); err != nil { if _, err := io.WriteString(w, string(t.Value)); err != nil {
@ -712,27 +751,32 @@ func (t *MutateStateArgs) MarshalCBOR(w io.Writer) error {
// t.Branch (chaos.MutateStateBranch) (int64) // t.Branch (chaos.MutateStateBranch) (int64)
if t.Branch >= 0 { if t.Branch >= 0 {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.Branch)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Branch)); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.Branch-1)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.Branch-1)); err != nil {
return err return err
} }
} }
return nil return nil
} }
func (t *MutateStateArgs) UnmarshalCBOR(r io.Reader) error { func (t *MutateStateArgs) UnmarshalCBOR(r io.Reader) (err error) {
*t = MutateStateArgs{} *t = MutateStateArgs{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -744,7 +788,7 @@ func (t *MutateStateArgs) UnmarshalCBOR(r io.Reader) error {
// t.Value (string) (string) // t.Value (string) (string)
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -753,7 +797,7 @@ func (t *MutateStateArgs) UnmarshalCBOR(r io.Reader) error {
} }
// t.Branch (chaos.MutateStateBranch) (int64) // t.Branch (chaos.MutateStateBranch) (int64)
{ {
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
var extraI int64 var extraI int64
if err != nil { if err != nil {
return err return err
@ -786,19 +830,20 @@ func (t *AbortWithArgs) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufAbortWithArgs); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufAbortWithArgs); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Code (exitcode.ExitCode) (int64) // t.Code (exitcode.ExitCode) (int64)
if t.Code >= 0 { if t.Code >= 0 {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.Code)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Code)); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.Code-1)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.Code-1)); err != nil {
return err return err
} }
} }
@ -808,7 +853,7 @@ func (t *AbortWithArgs) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field t.Message was too long") return xerrors.Errorf("Value in field t.Message was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len(t.Message))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Message))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string(t.Message)); err != nil { if _, err := io.WriteString(w, string(t.Message)); err != nil {
@ -822,16 +867,21 @@ func (t *AbortWithArgs) MarshalCBOR(w io.Writer) error {
return nil return nil
} }
func (t *AbortWithArgs) UnmarshalCBOR(r io.Reader) error { func (t *AbortWithArgs) UnmarshalCBOR(r io.Reader) (err error) {
*t = AbortWithArgs{} *t = AbortWithArgs{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -842,7 +892,7 @@ func (t *AbortWithArgs) UnmarshalCBOR(r io.Reader) error {
// t.Code (exitcode.ExitCode) (int64) // t.Code (exitcode.ExitCode) (int64)
{ {
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
var extraI int64 var extraI int64
if err != nil { if err != nil {
return err return err
@ -868,7 +918,7 @@ func (t *AbortWithArgs) UnmarshalCBOR(r io.Reader) error {
// t.Message (string) (string) // t.Message (string) (string)
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -877,7 +927,7 @@ func (t *AbortWithArgs) UnmarshalCBOR(r io.Reader) error {
} }
// t.Uncontrolled (bool) (bool) // t.Uncontrolled (bool) (bool)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -902,60 +952,66 @@ func (t *InspectRuntimeReturn) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufInspectRuntimeReturn); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufInspectRuntimeReturn); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Caller (address.Address) (struct) // t.Caller (address.Address) (struct)
if err := t.Caller.MarshalCBOR(w); err != nil { if err := t.Caller.MarshalCBOR(cw); err != nil {
return err return err
} }
// t.Receiver (address.Address) (struct) // t.Receiver (address.Address) (struct)
if err := t.Receiver.MarshalCBOR(w); err != nil { if err := t.Receiver.MarshalCBOR(cw); err != nil {
return err return err
} }
// t.ValueReceived (big.Int) (struct) // t.ValueReceived (big.Int) (struct)
if err := t.ValueReceived.MarshalCBOR(w); err != nil { if err := t.ValueReceived.MarshalCBOR(cw); err != nil {
return err return err
} }
// t.CurrEpoch (abi.ChainEpoch) (int64) // t.CurrEpoch (abi.ChainEpoch) (int64)
if t.CurrEpoch >= 0 { if t.CurrEpoch >= 0 {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.CurrEpoch)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.CurrEpoch)); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.CurrEpoch-1)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.CurrEpoch-1)); err != nil {
return err return err
} }
} }
// t.CurrentBalance (big.Int) (struct) // t.CurrentBalance (big.Int) (struct)
if err := t.CurrentBalance.MarshalCBOR(w); err != nil { if err := t.CurrentBalance.MarshalCBOR(cw); err != nil {
return err return err
} }
// t.State (chaos.State) (struct) // t.State (chaos.State) (struct)
if err := t.State.MarshalCBOR(w); err != nil { if err := t.State.MarshalCBOR(cw); err != nil {
return err return err
} }
return nil return nil
} }
func (t *InspectRuntimeReturn) UnmarshalCBOR(r io.Reader) error { func (t *InspectRuntimeReturn) UnmarshalCBOR(r io.Reader) (err error) {
*t = InspectRuntimeReturn{} *t = InspectRuntimeReturn{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -968,7 +1024,7 @@ func (t *InspectRuntimeReturn) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.Caller.UnmarshalCBOR(br); err != nil { if err := t.Caller.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Caller: %w", err) return xerrors.Errorf("unmarshaling t.Caller: %w", err)
} }
@ -977,7 +1033,7 @@ func (t *InspectRuntimeReturn) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.Receiver.UnmarshalCBOR(br); err != nil { if err := t.Receiver.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Receiver: %w", err) return xerrors.Errorf("unmarshaling t.Receiver: %w", err)
} }
@ -986,14 +1042,14 @@ func (t *InspectRuntimeReturn) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.ValueReceived.UnmarshalCBOR(br); err != nil { if err := t.ValueReceived.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.ValueReceived: %w", err) return xerrors.Errorf("unmarshaling t.ValueReceived: %w", err)
} }
} }
// t.CurrEpoch (abi.ChainEpoch) (int64) // t.CurrEpoch (abi.ChainEpoch) (int64)
{ {
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
var extraI int64 var extraI int64
if err != nil { if err != nil {
return err return err
@ -1020,7 +1076,7 @@ func (t *InspectRuntimeReturn) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.CurrentBalance.UnmarshalCBOR(br); err != nil { if err := t.CurrentBalance.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.CurrentBalance: %w", err) return xerrors.Errorf("unmarshaling t.CurrentBalance: %w", err)
} }
@ -1029,7 +1085,7 @@ func (t *InspectRuntimeReturn) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.State.UnmarshalCBOR(br); err != nil { if err := t.State.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.State: %w", err) return xerrors.Errorf("unmarshaling t.State: %w", err)
} }

View File

@ -27,6 +27,7 @@
* [DagstoreListShards](#DagstoreListShards) * [DagstoreListShards](#DagstoreListShards)
* [DagstoreLookupPieces](#DagstoreLookupPieces) * [DagstoreLookupPieces](#DagstoreLookupPieces)
* [DagstoreRecoverShard](#DagstoreRecoverShard) * [DagstoreRecoverShard](#DagstoreRecoverShard)
* [DagstoreRegisterShard](#DagstoreRegisterShard)
* [Deals](#Deals) * [Deals](#Deals)
* [DealsConsiderOfflineRetrievalDeals](#DealsConsiderOfflineRetrievalDeals) * [DealsConsiderOfflineRetrievalDeals](#DealsConsiderOfflineRetrievalDeals)
* [DealsConsiderOfflineStorageDeals](#DealsConsiderOfflineStorageDeals) * [DealsConsiderOfflineStorageDeals](#DealsConsiderOfflineStorageDeals)
@ -639,6 +640,21 @@ Inputs:
Response: `{}` Response: `{}`
### DagstoreRegisterShard
DagstoreRegisterShard registers a shard manually with dagstore with given pieceCID
Perms: admin
Inputs:
```json
[
"string value"
]
```
Response: `{}`
## Deals ## Deals

View File

@ -7,7 +7,7 @@ USAGE:
lotus-miner [global options] command [command options] [arguments...] lotus-miner [global options] command [command options] [arguments...]
VERSION: VERSION:
1.15.3-dev 1.15.4-dev
COMMANDS: COMMANDS:
init Initialize a lotus miner repo init Initialize a lotus miner repo
@ -1035,6 +1035,7 @@ USAGE:
COMMANDS: COMMANDS:
list-shards List all shards known to the dagstore, with their current status list-shards List all shards known to the dagstore, with their current status
register-shard Register a shard
initialize-shard Initialize the specified shard initialize-shard Initialize the specified shard
recover-shard Attempt to recover a shard in errored state recover-shard Attempt to recover a shard in errored state
initialize-all Initialize all uninitialized shards, streaming results as they're produced; only shards for unsealed pieces are initialized by default initialize-all Initialize all uninitialized shards, streaming results as they're produced; only shards for unsealed pieces are initialized by default
@ -1061,6 +1062,20 @@ OPTIONS:
``` ```
### lotus-miner dagstore register-shard
```
NAME:
lotus-miner dagstore register-shard - Register a shard
USAGE:
lotus-miner dagstore register-shard [command options] [key]
OPTIONS:
--color use color in display output (default: depends on output being a TTY)
--help, -h show help (default: false)
```
### lotus-miner dagstore initialize-shard ### lotus-miner dagstore initialize-shard
``` ```
NAME: NAME:
@ -1652,6 +1667,7 @@ COMMANDS:
refs List References to sectors refs List References to sectors
update-state ADVANCED: manually update the state of a sector, this may aid in error recovery update-state ADVANCED: manually update the state of a sector, this may aid in error recovery
pledge store random data in a sector pledge store random data in a sector
precommits Print on-chain precommit info
check-expire Inspect expiring sectors check-expire Inspect expiring sectors
expired Get or cleanup expired sectors expired Get or cleanup expired sectors
renew Renew expiring sectors while not exceeding each sector's max life renew Renew expiring sectors while not exceeding each sector's max life
@ -1665,6 +1681,7 @@ COMMANDS:
get-cc-collateral Get the collateral required to pledge a committed capacity sector get-cc-collateral Get the collateral required to pledge a committed capacity sector
batching manage batch sector operations batching manage batch sector operations
match-pending-pieces force a refreshed match of pending pieces to open sectors without manually waiting for more deals match-pending-pieces force a refreshed match of pending pieces to open sectors without manually waiting for more deals
compact-partitions removes dead sectors from partitions and reduces the number of partitions used if possible
help, h Shows a list of commands or help for one command help, h Shows a list of commands or help for one command
OPTIONS: OPTIONS:
@ -1750,6 +1767,19 @@ OPTIONS:
``` ```
### lotus-miner sectors precommits
```
NAME:
lotus-miner sectors precommits - Print on-chain precommit info
USAGE:
lotus-miner sectors precommits [command options] [arguments...]
OPTIONS:
--help, -h show help (default: false)
```
### lotus-miner sectors check-expire ### lotus-miner sectors check-expire
``` ```
NAME: NAME:
@ -2006,6 +2036,22 @@ OPTIONS:
``` ```
### lotus-miner sectors compact-partitions
```
NAME:
lotus-miner sectors compact-partitions - removes dead sectors from partitions and reduces the number of partitions used if possible
USAGE:
lotus-miner sectors compact-partitions [command options] [arguments...]
OPTIONS:
--deadline value the deadline to compact the partitions in (default: 0)
--partitions value list of partitions to compact sectors in
--really-do-it Actually send transaction performing the action (default: false)
--help, -h show help (default: false)
```
## lotus-miner proving ## lotus-miner proving
``` ```
NAME: NAME:

View File

@ -7,7 +7,7 @@ USAGE:
lotus-worker [global options] command [command options] [arguments...] lotus-worker [global options] command [command options] [arguments...]
VERSION: VERSION:
1.15.3-dev 1.15.4-dev
COMMANDS: COMMANDS:
run Start lotus worker run Start lotus worker
@ -49,6 +49,7 @@ OPTIONS:
--regen-sector-key enable regen sector key (default: true) --regen-sector-key enable regen sector key (default: true)
--windowpost enable window post (default: false) --windowpost enable window post (default: false)
--winningpost enable winning post (default: false) --winningpost enable winning post (default: false)
--no-default disable all default compute tasks, use the worker for storage/fetching only (default: false)
--parallel-fetch-limit value maximum fetch operations to run in parallel (default: 5) --parallel-fetch-limit value maximum fetch operations to run in parallel (default: 5)
--post-parallel-reads value maximum number of parallel challenge reads (0 = no limit) (default: 128) --post-parallel-reads value maximum number of parallel challenge reads (0 = no limit) (default: 128)
--post-read-timeout value time limit for reading PoSt challenges (0 = no limit) (default: 0s) --post-read-timeout value time limit for reading PoSt challenges (0 = no limit) (default: 0s)

View File

@ -7,7 +7,7 @@ USAGE:
lotus [global options] command [command options] [arguments...] lotus [global options] command [command options] [arguments...]
VERSION: VERSION:
1.15.3-dev 1.15.4-dev
COMMANDS: COMMANDS:
daemon Start a lotus daemon process daemon Start a lotus daemon process

View File

@ -444,12 +444,14 @@
# env var: LOTUS_SEALING_AGGREGATECOMMITS # env var: LOTUS_SEALING_AGGREGATECOMMITS
#AggregateCommits = true #AggregateCommits = true
# maximum batched commit size - batches will be sent immediately above this size # minimum batched commit size - batches above this size will eventually be sent on a timeout
# #
# type: int # type: int
# env var: LOTUS_SEALING_MINCOMMITBATCH # env var: LOTUS_SEALING_MINCOMMITBATCH
#MinCommitBatch = 4 #MinCommitBatch = 4
# maximum batched commit size - batches will be sent immediately above this size
#
# type: int # type: int
# env var: LOTUS_SEALING_MAXCOMMITBATCH # env var: LOTUS_SEALING_MAXCOMMITBATCH
#MaxCommitBatch = 819 #MaxCommitBatch = 819

View File

@ -24,25 +24,26 @@ func (t *Call) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write([]byte{164}); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write([]byte{164}); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.ID (storiface.CallID) (struct) // t.ID (storiface.CallID) (struct)
if len("ID") > cbg.MaxLength { if len("ID") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"ID\" was too long") return xerrors.Errorf("Value in field \"ID\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("ID"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("ID"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("ID")); err != nil { if _, err := io.WriteString(w, string("ID")); err != nil {
return err return err
} }
if err := t.ID.MarshalCBOR(w); err != nil { if err := t.ID.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -51,7 +52,7 @@ func (t *Call) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"RetType\" was too long") return xerrors.Errorf("Value in field \"RetType\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("RetType"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("RetType"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("RetType")); err != nil { if _, err := io.WriteString(w, string("RetType")); err != nil {
@ -62,7 +63,7 @@ func (t *Call) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field t.RetType was too long") return xerrors.Errorf("Value in field t.RetType was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len(t.RetType))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.RetType))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string(t.RetType)); err != nil { if _, err := io.WriteString(w, string(t.RetType)); err != nil {
@ -74,14 +75,14 @@ func (t *Call) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"State\" was too long") return xerrors.Errorf("Value in field \"State\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("State"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("State"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("State")); err != nil { if _, err := io.WriteString(w, string("State")); err != nil {
return err return err
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.State)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.State)); err != nil {
return err return err
} }
@ -90,29 +91,34 @@ func (t *Call) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Result\" was too long") return xerrors.Errorf("Value in field \"Result\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Result"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Result"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Result")); err != nil { if _, err := io.WriteString(w, string("Result")); err != nil {
return err return err
} }
if err := t.Result.MarshalCBOR(w); err != nil { if err := t.Result.MarshalCBOR(cw); err != nil {
return err return err
} }
return nil return nil
} }
func (t *Call) UnmarshalCBOR(r io.Reader) error { func (t *Call) UnmarshalCBOR(r io.Reader) (err error) {
*t = Call{} *t = Call{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajMap { if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map") return fmt.Errorf("cbor input should be of type map")
} }
@ -127,7 +133,7 @@ func (t *Call) UnmarshalCBOR(r io.Reader) error {
for i := uint64(0); i < n; i++ { for i := uint64(0); i < n; i++ {
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -141,7 +147,7 @@ func (t *Call) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.ID.UnmarshalCBOR(br); err != nil { if err := t.ID.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.ID: %w", err) return xerrors.Errorf("unmarshaling t.ID: %w", err)
} }
@ -150,7 +156,7 @@ func (t *Call) UnmarshalCBOR(r io.Reader) error {
case "RetType": case "RetType":
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -162,7 +168,7 @@ func (t *Call) UnmarshalCBOR(r io.Reader) error {
{ {
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -177,16 +183,16 @@ func (t *Call) UnmarshalCBOR(r io.Reader) error {
{ {
b, err := br.ReadByte() b, err := cr.ReadByte()
if err != nil { if err != nil {
return err return err
} }
if b != cbg.CborNull[0] { if b != cbg.CborNull[0] {
if err := br.UnreadByte(); err != nil { if err := cr.UnreadByte(); err != nil {
return err return err
} }
t.Result = new(ManyBytes) t.Result = new(ManyBytes)
if err := t.Result.UnmarshalCBOR(br); err != nil { if err := t.Result.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Result pointer: %w", err) return xerrors.Errorf("unmarshaling t.Result pointer: %w", err)
} }
} }
@ -206,25 +212,26 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write([]byte{166}); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write([]byte{166}); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.ID (sectorstorage.WorkID) (struct) // t.ID (sectorstorage.WorkID) (struct)
if len("ID") > cbg.MaxLength { if len("ID") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"ID\" was too long") return xerrors.Errorf("Value in field \"ID\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("ID"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("ID"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("ID")); err != nil { if _, err := io.WriteString(w, string("ID")); err != nil {
return err return err
} }
if err := t.ID.MarshalCBOR(w); err != nil { if err := t.ID.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -233,7 +240,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Status\" was too long") return xerrors.Errorf("Value in field \"Status\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Status"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Status"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Status")); err != nil { if _, err := io.WriteString(w, string("Status")); err != nil {
@ -244,7 +251,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field t.Status was too long") return xerrors.Errorf("Value in field t.Status was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len(t.Status))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Status))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string(t.Status)); err != nil { if _, err := io.WriteString(w, string(t.Status)); err != nil {
@ -256,14 +263,14 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"WorkerCall\" was too long") return xerrors.Errorf("Value in field \"WorkerCall\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("WorkerCall"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("WorkerCall"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("WorkerCall")); err != nil { if _, err := io.WriteString(w, string("WorkerCall")); err != nil {
return err return err
} }
if err := t.WorkerCall.MarshalCBOR(w); err != nil { if err := t.WorkerCall.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -272,7 +279,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"WorkError\" was too long") return xerrors.Errorf("Value in field \"WorkError\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("WorkError"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("WorkError"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("WorkError")); err != nil { if _, err := io.WriteString(w, string("WorkError")); err != nil {
@ -283,7 +290,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field t.WorkError was too long") return xerrors.Errorf("Value in field t.WorkError was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len(t.WorkError))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.WorkError))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string(t.WorkError)); err != nil { if _, err := io.WriteString(w, string(t.WorkError)); err != nil {
@ -295,7 +302,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"WorkerHostname\" was too long") return xerrors.Errorf("Value in field \"WorkerHostname\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("WorkerHostname"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("WorkerHostname"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("WorkerHostname")); err != nil { if _, err := io.WriteString(w, string("WorkerHostname")); err != nil {
@ -306,7 +313,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field t.WorkerHostname was too long") return xerrors.Errorf("Value in field t.WorkerHostname was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len(t.WorkerHostname))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.WorkerHostname))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string(t.WorkerHostname)); err != nil { if _, err := io.WriteString(w, string(t.WorkerHostname)); err != nil {
@ -318,7 +325,7 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"StartTime\" was too long") return xerrors.Errorf("Value in field \"StartTime\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("StartTime"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("StartTime"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("StartTime")); err != nil { if _, err := io.WriteString(w, string("StartTime")); err != nil {
@ -326,27 +333,32 @@ func (t *WorkState) MarshalCBOR(w io.Writer) error {
} }
if t.StartTime >= 0 { if t.StartTime >= 0 {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.StartTime)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.StartTime)); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.StartTime-1)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.StartTime-1)); err != nil {
return err return err
} }
} }
return nil return nil
} }
func (t *WorkState) UnmarshalCBOR(r io.Reader) error { func (t *WorkState) UnmarshalCBOR(r io.Reader) (err error) {
*t = WorkState{} *t = WorkState{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajMap { if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map") return fmt.Errorf("cbor input should be of type map")
} }
@ -361,7 +373,7 @@ func (t *WorkState) UnmarshalCBOR(r io.Reader) error {
for i := uint64(0); i < n; i++ { for i := uint64(0); i < n; i++ {
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -375,7 +387,7 @@ func (t *WorkState) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.ID.UnmarshalCBOR(br); err != nil { if err := t.ID.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.ID: %w", err) return xerrors.Errorf("unmarshaling t.ID: %w", err)
} }
@ -384,7 +396,7 @@ func (t *WorkState) UnmarshalCBOR(r io.Reader) error {
case "Status": case "Status":
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -396,7 +408,7 @@ func (t *WorkState) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.WorkerCall.UnmarshalCBOR(br); err != nil { if err := t.WorkerCall.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.WorkerCall: %w", err) return xerrors.Errorf("unmarshaling t.WorkerCall: %w", err)
} }
@ -405,7 +417,7 @@ func (t *WorkState) UnmarshalCBOR(r io.Reader) error {
case "WorkError": case "WorkError":
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -416,7 +428,7 @@ func (t *WorkState) UnmarshalCBOR(r io.Reader) error {
case "WorkerHostname": case "WorkerHostname":
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -426,7 +438,7 @@ func (t *WorkState) UnmarshalCBOR(r io.Reader) error {
// t.StartTime (int64) (int64) // t.StartTime (int64) (int64)
case "StartTime": case "StartTime":
{ {
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
var extraI int64 var extraI int64
if err != nil { if err != nil {
return err return err
@ -463,18 +475,19 @@ func (t *WorkID) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write([]byte{162}); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write([]byte{162}); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Method (sealtasks.TaskType) (string) // t.Method (sealtasks.TaskType) (string)
if len("Method") > cbg.MaxLength { if len("Method") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"Method\" was too long") return xerrors.Errorf("Value in field \"Method\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Method"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Method"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Method")); err != nil { if _, err := io.WriteString(w, string("Method")); err != nil {
@ -485,7 +498,7 @@ func (t *WorkID) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field t.Method was too long") return xerrors.Errorf("Value in field t.Method was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len(t.Method))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Method))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string(t.Method)); err != nil { if _, err := io.WriteString(w, string(t.Method)); err != nil {
@ -497,7 +510,7 @@ func (t *WorkID) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Params\" was too long") return xerrors.Errorf("Value in field \"Params\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Params"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Params"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Params")); err != nil { if _, err := io.WriteString(w, string("Params")); err != nil {
@ -508,7 +521,7 @@ func (t *WorkID) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field t.Params was too long") return xerrors.Errorf("Value in field t.Params was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len(t.Params))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Params))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string(t.Params)); err != nil { if _, err := io.WriteString(w, string(t.Params)); err != nil {
@ -517,16 +530,21 @@ func (t *WorkID) MarshalCBOR(w io.Writer) error {
return nil return nil
} }
func (t *WorkID) UnmarshalCBOR(r io.Reader) error { func (t *WorkID) UnmarshalCBOR(r io.Reader) (err error) {
*t = WorkID{} *t = WorkID{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajMap { if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map") return fmt.Errorf("cbor input should be of type map")
} }
@ -541,7 +559,7 @@ func (t *WorkID) UnmarshalCBOR(r io.Reader) error {
for i := uint64(0); i < n; i++ { for i := uint64(0); i < n; i++ {
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -554,7 +572,7 @@ func (t *WorkID) UnmarshalCBOR(r io.Reader) error {
case "Method": case "Method":
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -565,7 +583,7 @@ func (t *WorkID) UnmarshalCBOR(r io.Reader) error {
case "Params": case "Params":
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }

View File

@ -4,6 +4,7 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"syscall" "syscall"
"time"
"golang.org/x/xerrors" "golang.org/x/xerrors"
) )
@ -15,6 +16,8 @@ type SizeInfo struct {
// FileSize returns bytes used by a file or directory on disk // FileSize returns bytes used by a file or directory on disk
// NOTE: We care about the allocated bytes, not file or directory size // NOTE: We care about the allocated bytes, not file or directory size
func FileSize(path string) (SizeInfo, error) { func FileSize(path string) (SizeInfo, error) {
start := time.Now()
var size int64 var size int64
err := filepath.Walk(path, func(_ string, info os.FileInfo, err error) error { err := filepath.Walk(path, func(_ string, info os.FileInfo, err error) error {
if err != nil { if err != nil {
@ -32,6 +35,11 @@ func FileSize(path string) (SizeInfo, error) {
} }
return err return err
}) })
if time.Now().Sub(start) >= 3*time.Second {
log.Warnw("very slow file size check", "took", time.Now().Sub(start), "path", path)
}
if err != nil { if err != nil {
if os.IsNotExist(err) { if os.IsNotExist(err) {
return SizeInfo{}, os.ErrNotExist return SizeInfo{}, os.ErrNotExist

View File

@ -88,6 +88,8 @@ type path struct {
} }
func (p *path) stat(ls LocalStorage) (fsutil.FsStat, error) { func (p *path) stat(ls LocalStorage) (fsutil.FsStat, error) {
start := time.Now()
stat, err := ls.Stat(p.local) stat, err := ls.Stat(p.local)
if err != nil { if err != nil {
return fsutil.FsStat{}, xerrors.Errorf("stat %s: %w", p.local, err) return fsutil.FsStat{}, xerrors.Errorf("stat %s: %w", p.local, err)
@ -155,6 +157,8 @@ func (p *path) stat(ls LocalStorage) (fsutil.FsStat, error) {
} }
} }
log.Infow("storage stat", "took", time.Now().Sub(start), "reservations", len(p.reservations))
return stat, err return stat, err
} }
@ -166,7 +170,7 @@ type URLs []string
func NewLocal(ctx context.Context, ls LocalStorage, index SectorIndex, urls []string) (*Local, error) { func NewLocal(ctx context.Context, ls LocalStorage, index SectorIndex, urls []string) (*Local, error) {
l := &Local{ l := &Local{
localStorage: ls, localStorage: newCachedLocalStorage(ls),
index: index, index: index,
urls: urls, urls: urls,

View File

@ -0,0 +1,131 @@
package stores
import (
"sync"
"time"
lru "github.com/hashicorp/golang-lru"
"github.com/filecoin-project/lotus/extern/sector-storage/fsutil"
)
var StatTimeout = 5 * time.Second
var MaxDiskUsageDuration = time.Second
type cachedLocalStorage struct {
base LocalStorage
statLk sync.Mutex
stats *lru.Cache // path -> statEntry
pathDUs *lru.Cache // path -> *diskUsageEntry
}
func newCachedLocalStorage(ls LocalStorage) *cachedLocalStorage {
statCache, _ := lru.New(1024)
duCache, _ := lru.New(1024)
return &cachedLocalStorage{
base: ls,
stats: statCache,
pathDUs: duCache,
}
}
type statEntry struct {
stat fsutil.FsStat
time time.Time
}
type diskUsageEntry struct {
last diskUsageResult
usagePromise <-chan diskUsageResult
}
type diskUsageResult struct {
usage int64
time time.Time
}
func (c *cachedLocalStorage) GetStorage() (StorageConfig, error) {
return c.base.GetStorage()
}
func (c *cachedLocalStorage) SetStorage(f func(*StorageConfig)) error {
return c.base.SetStorage(f)
}
func (c *cachedLocalStorage) Stat(path string) (fsutil.FsStat, error) {
c.statLk.Lock()
defer c.statLk.Unlock()
if v, ok := c.stats.Get(path); ok && time.Now().Sub(v.(statEntry).time) < StatTimeout {
return v.(statEntry).stat, nil
}
// if we don't, get the stat
st, err := c.base.Stat(path)
if err == nil {
c.stats.Add(path, statEntry{
stat: st,
time: time.Now(),
})
}
return st, err
}
func (c *cachedLocalStorage) DiskUsage(path string) (int64, error) {
c.statLk.Lock()
defer c.statLk.Unlock()
var entry *diskUsageEntry
if v, ok := c.pathDUs.Get(path); ok {
entry = v.(*diskUsageEntry)
// if we have recent cached entry, use that
if time.Now().Sub(entry.last.time) < StatTimeout {
return entry.last.usage, nil
}
} else {
entry = new(diskUsageEntry)
c.pathDUs.Add(path, entry)
}
// start a new disk usage request; this can take a while so start a
// goroutine, and if it doesn't return quickly, return either the
// previous value, or zero - that's better than potentially blocking
// here for a long time.
if entry.usagePromise == nil {
resCh := make(chan diskUsageResult, 1)
go func() {
du, err := c.base.DiskUsage(path)
if err != nil {
log.Errorw("error getting disk usage", "path", path, "error", err)
}
resCh <- diskUsageResult{
usage: du,
time: time.Now(),
}
}()
entry.usagePromise = resCh
}
// wait for the disk usage result; if it doesn't come, fallback on
// previous usage
select {
case du := <-entry.usagePromise:
entry.usagePromise = nil
entry.last = du
case <-time.After(MaxDiskUsageDuration):
log.Warnw("getting usage is slow, falling back to previous usage",
"path", path,
"fallback", entry.last.usage,
"age", time.Now().Sub(entry.last.time))
}
return entry.last.usage, nil
}
var _ LocalStorage = &cachedLocalStorage{}

View File

@ -95,6 +95,8 @@ func (r *Remote) AcquireSector(ctx context.Context, s storage.SectorRef, existin
return storiface.SectorPaths{}, storiface.SectorPaths{}, xerrors.New("can't both find and allocate a sector") return storiface.SectorPaths{}, storiface.SectorPaths{}, xerrors.New("can't both find and allocate a sector")
} }
// First make sure that no other goroutines are trying to fetch this sector;
// wait if there are any.
for { for {
r.fetchLk.Lock() r.fetchLk.Lock()
@ -122,6 +124,7 @@ func (r *Remote) AcquireSector(ctx context.Context, s storage.SectorRef, existin
r.fetchLk.Unlock() r.fetchLk.Unlock()
}() }()
// Try to get the sector from local storage
paths, stores, err := r.local.AcquireSector(ctx, s, existing, allocate, pathType, op) paths, stores, err := r.local.AcquireSector(ctx, s, existing, allocate, pathType, op)
if err != nil { if err != nil {
return storiface.SectorPaths{}, storiface.SectorPaths{}, xerrors.Errorf("local acquire error: %w", err) return storiface.SectorPaths{}, storiface.SectorPaths{}, xerrors.Errorf("local acquire error: %w", err)
@ -148,6 +151,9 @@ func (r *Remote) AcquireSector(ctx context.Context, s storage.SectorRef, existin
odt = storiface.FsOverheadFinalized odt = storiface.FsOverheadFinalized
} }
// If any path types weren't found in local storage, try fetching them
// First reserve storage
releaseStorage, err := r.local.Reserve(ctx, s, toFetch, ids, odt) releaseStorage, err := r.local.Reserve(ctx, s, toFetch, ids, odt)
if err != nil { if err != nil {
return storiface.SectorPaths{}, storiface.SectorPaths{}, xerrors.Errorf("reserving storage space: %w", err) return storiface.SectorPaths{}, storiface.SectorPaths{}, xerrors.Errorf("reserving storage space: %w", err)

View File

@ -23,25 +23,26 @@ func (t *CallID) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write([]byte{162}); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write([]byte{162}); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Sector (abi.SectorID) (struct) // t.Sector (abi.SectorID) (struct)
if len("Sector") > cbg.MaxLength { if len("Sector") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"Sector\" was too long") return xerrors.Errorf("Value in field \"Sector\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Sector"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Sector"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Sector")); err != nil { if _, err := io.WriteString(w, string("Sector")); err != nil {
return err return err
} }
if err := t.Sector.MarshalCBOR(w); err != nil { if err := t.Sector.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -50,7 +51,7 @@ func (t *CallID) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"ID\" was too long") return xerrors.Errorf("Value in field \"ID\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("ID"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("ID"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("ID")); err != nil { if _, err := io.WriteString(w, string("ID")); err != nil {
@ -61,26 +62,31 @@ func (t *CallID) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Byte array in field t.ID was too long") return xerrors.Errorf("Byte array in field t.ID was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajByteString, uint64(len(t.ID))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajByteString, uint64(len(t.ID))); err != nil {
return err return err
} }
if _, err := w.Write(t.ID[:]); err != nil { if _, err := cw.Write(t.ID[:]); err != nil {
return err return err
} }
return nil return nil
} }
func (t *CallID) UnmarshalCBOR(r io.Reader) error { func (t *CallID) UnmarshalCBOR(r io.Reader) (err error) {
*t = CallID{} *t = CallID{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajMap { if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map") return fmt.Errorf("cbor input should be of type map")
} }
@ -95,7 +101,7 @@ func (t *CallID) UnmarshalCBOR(r io.Reader) error {
for i := uint64(0); i < n; i++ { for i := uint64(0); i < n; i++ {
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -109,7 +115,7 @@ func (t *CallID) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.Sector.UnmarshalCBOR(br); err != nil { if err := t.Sector.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Sector: %w", err) return xerrors.Errorf("unmarshaling t.Sector: %w", err)
} }
@ -117,7 +123,7 @@ func (t *CallID) UnmarshalCBOR(r io.Reader) error {
// t.ID (uuid.UUID) (array) // t.ID (uuid.UUID) (array)
case "ID": case "ID":
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -135,7 +141,7 @@ func (t *CallID) UnmarshalCBOR(r io.Reader) error {
t.ID = [16]uint8{} t.ID = [16]uint8{}
if _, err := io.ReadFull(br, t.ID[:]); err != nil { if _, err := io.ReadFull(cr, t.ID[:]); err != nil {
return err return err
} }

File diff suppressed because it is too large Load Diff

8
go.mod
View File

@ -41,7 +41,7 @@ require (
github.com/filecoin-project/go-legs v0.3.7 github.com/filecoin-project/go-legs v0.3.7
github.com/filecoin-project/go-padreader v0.0.1 github.com/filecoin-project/go-padreader v0.0.1
github.com/filecoin-project/go-paramfetch v0.0.4 github.com/filecoin-project/go-paramfetch v0.0.4
github.com/filecoin-project/go-state-types v0.1.3 github.com/filecoin-project/go-state-types v0.1.4
github.com/filecoin-project/go-statemachine v1.0.2 github.com/filecoin-project/go-statemachine v1.0.2
github.com/filecoin-project/go-statestore v0.2.0 github.com/filecoin-project/go-statestore v0.2.0
github.com/filecoin-project/go-storedcounter v0.1.0 github.com/filecoin-project/go-storedcounter v0.1.0
@ -109,7 +109,7 @@ require (
github.com/koalacxr/quantile v0.0.1 github.com/koalacxr/quantile v0.0.1
github.com/libp2p/go-buffer-pool v0.0.2 github.com/libp2p/go-buffer-pool v0.0.2
github.com/libp2p/go-eventbus v0.2.1 github.com/libp2p/go-eventbus v0.2.1
github.com/libp2p/go-libp2p v0.19.0 github.com/libp2p/go-libp2p v0.19.3
github.com/libp2p/go-libp2p-connmgr v0.3.1 github.com/libp2p/go-libp2p-connmgr v0.3.1
github.com/libp2p/go-libp2p-core v0.15.1 github.com/libp2p/go-libp2p-core v0.15.1
github.com/libp2p/go-libp2p-discovery v0.6.0 github.com/libp2p/go-libp2p-discovery v0.6.0
@ -145,7 +145,7 @@ require (
github.com/syndtr/goleveldb v1.0.0 github.com/syndtr/goleveldb v1.0.0
github.com/urfave/cli/v2 v2.3.0 github.com/urfave/cli/v2 v2.3.0
github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba
github.com/whyrusleeping/cbor-gen v0.0.0-20220302191723-37c43cae8e14 github.com/whyrusleeping/cbor-gen v0.0.0-20220323183124-98fa8256a799
github.com/whyrusleeping/ledger-filecoin-go v0.9.1-0.20201010031517-c3dcc1bddce4 github.com/whyrusleeping/ledger-filecoin-go v0.9.1-0.20201010031517-c3dcc1bddce4
github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7
github.com/xorcare/golden v0.6.1-0.20191112154924-b87f686d7542 github.com/xorcare/golden v0.6.1-0.20191112154924-b87f686d7542
@ -277,7 +277,7 @@ require (
github.com/libp2p/go-tcp-transport v0.5.1 // indirect github.com/libp2p/go-tcp-transport v0.5.1 // indirect
github.com/libp2p/go-ws-transport v0.6.0 // indirect github.com/libp2p/go-ws-transport v0.6.0 // indirect
github.com/libp2p/go-yamux/v3 v3.1.1 // indirect github.com/libp2p/go-yamux/v3 v3.1.1 // indirect
github.com/lucas-clemente/quic-go v0.27.0 // indirect github.com/lucas-clemente/quic-go v0.27.1 // indirect
github.com/lucasb-eyer/go-colorful v1.0.3 // indirect github.com/lucasb-eyer/go-colorful v1.0.3 // indirect
github.com/magefile/mage v1.9.0 // indirect github.com/magefile/mage v1.9.0 // indirect
github.com/mailru/easyjson v0.7.6 // indirect github.com/mailru/easyjson v0.7.6 // indirect

13
go.sum
View File

@ -368,8 +368,9 @@ github.com/filecoin-project/go-state-types v0.0.0-20201102161440-c8033295a1fc/go
github.com/filecoin-project/go-state-types v0.1.0/go.mod h1:ezYnPf0bNkTsDibL/psSz5dy4B5awOJ/E7P2Saeep8g= github.com/filecoin-project/go-state-types v0.1.0/go.mod h1:ezYnPf0bNkTsDibL/psSz5dy4B5awOJ/E7P2Saeep8g=
github.com/filecoin-project/go-state-types v0.1.1-0.20210810190654-139e0e79e69e/go.mod h1:ezYnPf0bNkTsDibL/psSz5dy4B5awOJ/E7P2Saeep8g= github.com/filecoin-project/go-state-types v0.1.1-0.20210810190654-139e0e79e69e/go.mod h1:ezYnPf0bNkTsDibL/psSz5dy4B5awOJ/E7P2Saeep8g=
github.com/filecoin-project/go-state-types v0.1.1/go.mod h1:ezYnPf0bNkTsDibL/psSz5dy4B5awOJ/E7P2Saeep8g= github.com/filecoin-project/go-state-types v0.1.1/go.mod h1:ezYnPf0bNkTsDibL/psSz5dy4B5awOJ/E7P2Saeep8g=
github.com/filecoin-project/go-state-types v0.1.3 h1:rzIJyQo5HO2ptc8Jcu8P0qTutnI7NWwTle54eAHoNO0=
github.com/filecoin-project/go-state-types v0.1.3/go.mod h1:ezYnPf0bNkTsDibL/psSz5dy4B5awOJ/E7P2Saeep8g= github.com/filecoin-project/go-state-types v0.1.3/go.mod h1:ezYnPf0bNkTsDibL/psSz5dy4B5awOJ/E7P2Saeep8g=
github.com/filecoin-project/go-state-types v0.1.4 h1:NU0veVNxtDiLD/eRyKHV9lv3njSzfTh/sJGxxvcYcpg=
github.com/filecoin-project/go-state-types v0.1.4/go.mod h1:xCA/WfKlC2zcn3fUmDv4IrzznwS98X5XW/irUP3Lhxg=
github.com/filecoin-project/go-statemachine v0.0.0-20200925024713-05bd7c71fbfe/go.mod h1:FGwQgZAt2Gh5mjlwJUlVB62JeYdo+if0xWxSEfBD9ig= github.com/filecoin-project/go-statemachine v0.0.0-20200925024713-05bd7c71fbfe/go.mod h1:FGwQgZAt2Gh5mjlwJUlVB62JeYdo+if0xWxSEfBD9ig=
github.com/filecoin-project/go-statemachine v1.0.1/go.mod h1:jZdXXiHa61n4NmgWFG4w8tnqgvZVHYbJ3yW7+y8bF54= github.com/filecoin-project/go-statemachine v1.0.1/go.mod h1:jZdXXiHa61n4NmgWFG4w8tnqgvZVHYbJ3yW7+y8bF54=
github.com/filecoin-project/go-statemachine v1.0.2-0.20220322104818-27f8fbb86dfd/go.mod h1:jZdXXiHa61n4NmgWFG4w8tnqgvZVHYbJ3yW7+y8bF54= github.com/filecoin-project/go-statemachine v1.0.2-0.20220322104818-27f8fbb86dfd/go.mod h1:jZdXXiHa61n4NmgWFG4w8tnqgvZVHYbJ3yW7+y8bF54=
@ -1086,8 +1087,8 @@ github.com/libp2p/go-libp2p v0.16.0/go.mod h1:ump42BsirwAWxKzsCiFnTtN1Yc+DuPu76f
github.com/libp2p/go-libp2p v0.17.0/go.mod h1:Fkin50rsGdv5mm5BshBUtPRZknt9esfmYXBOYcwOTgw= github.com/libp2p/go-libp2p v0.17.0/go.mod h1:Fkin50rsGdv5mm5BshBUtPRZknt9esfmYXBOYcwOTgw=
github.com/libp2p/go-libp2p v0.18.0-rc1/go.mod h1:RgYlH7IIWHXREimC92bw5Lg1V2R5XmSzuLHb5fTnr+8= github.com/libp2p/go-libp2p v0.18.0-rc1/go.mod h1:RgYlH7IIWHXREimC92bw5Lg1V2R5XmSzuLHb5fTnr+8=
github.com/libp2p/go-libp2p v0.18.0-rc3/go.mod h1:WYL+Xw1iuwi6rdfzw5VIEpD+HqzYucHZ6fcUuumbI3M= github.com/libp2p/go-libp2p v0.18.0-rc3/go.mod h1:WYL+Xw1iuwi6rdfzw5VIEpD+HqzYucHZ6fcUuumbI3M=
github.com/libp2p/go-libp2p v0.19.0 h1:zosskMbaobL7UDCVLEe1m5CGs1TaFNFoN/M5XLiKg0U= github.com/libp2p/go-libp2p v0.19.3 h1:LqjvuBWdyYSqvkH4VVYxA78Fkphzg2Pq86VMnilqgkw=
github.com/libp2p/go-libp2p v0.19.0/go.mod h1:Ki9jJXLO2YqrTIFxofV7Twyd3INWPT97+r8hGt7XPjI= github.com/libp2p/go-libp2p v0.19.3/go.mod h1:AGlPVLjh0+6jvEtf+a2gZEux7yHJrYXnG9IC7wcQ2NY=
github.com/libp2p/go-libp2p-asn-util v0.0.0-20200825225859-85005c6cf052/go.mod h1:nRMRTab+kZuk0LnKZpxhOVH/ndsdr2Nr//Zltc/vwgo= github.com/libp2p/go-libp2p-asn-util v0.0.0-20200825225859-85005c6cf052/go.mod h1:nRMRTab+kZuk0LnKZpxhOVH/ndsdr2Nr//Zltc/vwgo=
github.com/libp2p/go-libp2p-asn-util v0.1.0 h1:rABPCO77SjdbJ/eJ/ynIo8vWICy1VEnL5JAxJbQLo1E= github.com/libp2p/go-libp2p-asn-util v0.1.0 h1:rABPCO77SjdbJ/eJ/ynIo8vWICy1VEnL5JAxJbQLo1E=
github.com/libp2p/go-libp2p-asn-util v0.1.0/go.mod h1:wu+AnM9Ii2KgO5jMmS1rz9dvzTdj8BXqsPR9HR0XB7I= github.com/libp2p/go-libp2p-asn-util v0.1.0/go.mod h1:wu+AnM9Ii2KgO5jMmS1rz9dvzTdj8BXqsPR9HR0XB7I=
@ -1457,8 +1458,9 @@ github.com/lucas-clemente/quic-go v0.21.2/go.mod h1:vF5M1XqhBAHgbjKcJOXY3JZz3GP0
github.com/lucas-clemente/quic-go v0.23.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0= github.com/lucas-clemente/quic-go v0.23.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0=
github.com/lucas-clemente/quic-go v0.24.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0= github.com/lucas-clemente/quic-go v0.24.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0=
github.com/lucas-clemente/quic-go v0.25.0/go.mod h1:YtzP8bxRVCBlO77yRanE264+fY/T2U9ZlW1AaHOsMOg= github.com/lucas-clemente/quic-go v0.25.0/go.mod h1:YtzP8bxRVCBlO77yRanE264+fY/T2U9ZlW1AaHOsMOg=
github.com/lucas-clemente/quic-go v0.27.0 h1:v6WY87q9zD4dKASbG8hy/LpzAVNzEQzw8sEIeloJsc4=
github.com/lucas-clemente/quic-go v0.27.0/go.mod h1:AzgQoPda7N+3IqMMMkywBKggIFo2KT6pfnlrQ2QieeI= github.com/lucas-clemente/quic-go v0.27.0/go.mod h1:AzgQoPda7N+3IqMMMkywBKggIFo2KT6pfnlrQ2QieeI=
github.com/lucas-clemente/quic-go v0.27.1 h1:sOw+4kFSVrdWOYmUjufQ9GBVPqZ+tu+jMtXxXNmRJyk=
github.com/lucas-clemente/quic-go v0.27.1/go.mod h1:AzgQoPda7N+3IqMMMkywBKggIFo2KT6pfnlrQ2QieeI=
github.com/lucasb-eyer/go-colorful v1.0.3 h1:QIbQXiugsb+q10B+MI+7DI1oQLdmnep86tWFlaaUAac= github.com/lucasb-eyer/go-colorful v1.0.3 h1:QIbQXiugsb+q10B+MI+7DI1oQLdmnep86tWFlaaUAac=
github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/lufia/iostat v1.1.0/go.mod h1:rEPNA0xXgjHQjuI5Cy05sLlS2oRcSlWHRLrvh/AQ+Pg= github.com/lufia/iostat v1.1.0/go.mod h1:rEPNA0xXgjHQjuI5Cy05sLlS2oRcSlWHRLrvh/AQ+Pg=
@ -1981,8 +1983,9 @@ github.com/whyrusleeping/cbor-gen v0.0.0-20210219115102-f37d292932f2/go.mod h1:f
github.com/whyrusleeping/cbor-gen v0.0.0-20210303213153-67a261a1d291/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/cbor-gen v0.0.0-20210303213153-67a261a1d291/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ=
github.com/whyrusleeping/cbor-gen v0.0.0-20210713220151-be142a5ae1a8/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/cbor-gen v0.0.0-20210713220151-be142a5ae1a8/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ=
github.com/whyrusleeping/cbor-gen v0.0.0-20220224212727-7a699437a831/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/cbor-gen v0.0.0-20220224212727-7a699437a831/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ=
github.com/whyrusleeping/cbor-gen v0.0.0-20220302191723-37c43cae8e14 h1:vo2wkP2ceHyGyZwFFtAabpot03EeSxxwAe57pOI9E/4=
github.com/whyrusleeping/cbor-gen v0.0.0-20220302191723-37c43cae8e14/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= github.com/whyrusleeping/cbor-gen v0.0.0-20220302191723-37c43cae8e14/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ=
github.com/whyrusleeping/cbor-gen v0.0.0-20220323183124-98fa8256a799 h1:DOOT2B85S0tHoLGTzV+FakaSSihgRCVwZkjqKQP5L/w=
github.com/whyrusleeping/cbor-gen v0.0.0-20220323183124-98fa8256a799/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ=
github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E=
github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8=
github.com/whyrusleeping/go-ctrlnet v0.0.0-20180313164037-f564fbbdaa95/go.mod h1:SJqKCCPXRfBFCwXjfNT/skfsceF7+MBFLI2OrvuRA7g= github.com/whyrusleeping/go-ctrlnet v0.0.0-20180313164037-f564fbbdaa95/go.mod h1:SJqKCCPXRfBFCwXjfNT/skfsceF7+MBFLI2OrvuRA7g=

View File

@ -897,13 +897,13 @@ This is useful for forcing all deals to be assigned as snap deals to sectors mar
Name: "MinCommitBatch", Name: "MinCommitBatch",
Type: "int", Type: "int",
Comment: `maximum batched commit size - batches will be sent immediately above this size`, Comment: `minimum batched commit size - batches above this size will eventually be sent on a timeout`,
}, },
{ {
Name: "MaxCommitBatch", Name: "MaxCommitBatch",
Type: "int", Type: "int",
Comment: ``, Comment: `maximum batched commit size - batches will be sent immediately above this size`,
}, },
{ {
Name: "CommitBatchWait", Name: "CommitBatchWait",

View File

@ -290,8 +290,9 @@ type SealingConfig struct {
// enable / disable commit aggregation (takes effect after nv13) // enable / disable commit aggregation (takes effect after nv13)
AggregateCommits bool AggregateCommits bool
// maximum batched commit size - batches will be sent immediately above this size // minimum batched commit size - batches above this size will eventually be sent on a timeout
MinCommitBatch int MinCommitBatch int
// maximum batched commit size - batches will be sent immediately above this size
MaxCommitBatch int MaxCommitBatch int
// how long to wait before submitting a batch after crossing the minimum batch size // how long to wait before submitting a batch after crossing the minimum batch size
CommitBatchWait Duration CommitBatchWait Duration

View File

@ -26,61 +26,67 @@ func (t *HelloMessage) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufHelloMessage); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufHelloMessage); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.HeaviestTipSet ([]cid.Cid) (slice) // t.HeaviestTipSet ([]cid.Cid) (slice)
if len(t.HeaviestTipSet) > cbg.MaxLength { if len(t.HeaviestTipSet) > cbg.MaxLength {
return xerrors.Errorf("Slice value in field t.HeaviestTipSet was too long") return xerrors.Errorf("Slice value in field t.HeaviestTipSet was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.HeaviestTipSet))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.HeaviestTipSet))); err != nil {
return err return err
} }
for _, v := range t.HeaviestTipSet { for _, v := range t.HeaviestTipSet {
if err := cbg.WriteCidBuf(scratch, w, v); err != nil { if err := cbg.WriteCid(w, v); err != nil {
return xerrors.Errorf("failed writing cid field t.HeaviestTipSet: %w", err) return xerrors.Errorf("failed writing cid field t.HeaviestTipSet: %w", err)
} }
} }
// t.HeaviestTipSetHeight (abi.ChainEpoch) (int64) // t.HeaviestTipSetHeight (abi.ChainEpoch) (int64)
if t.HeaviestTipSetHeight >= 0 { if t.HeaviestTipSetHeight >= 0 {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.HeaviestTipSetHeight)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.HeaviestTipSetHeight)); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.HeaviestTipSetHeight-1)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.HeaviestTipSetHeight-1)); err != nil {
return err return err
} }
} }
// t.HeaviestTipSetWeight (big.Int) (struct) // t.HeaviestTipSetWeight (big.Int) (struct)
if err := t.HeaviestTipSetWeight.MarshalCBOR(w); err != nil { if err := t.HeaviestTipSetWeight.MarshalCBOR(cw); err != nil {
return err return err
} }
// t.GenesisHash (cid.Cid) (struct) // t.GenesisHash (cid.Cid) (struct)
if err := cbg.WriteCidBuf(scratch, w, t.GenesisHash); err != nil { if err := cbg.WriteCid(cw, t.GenesisHash); err != nil {
return xerrors.Errorf("failed to write cid field t.GenesisHash: %w", err) return xerrors.Errorf("failed to write cid field t.GenesisHash: %w", err)
} }
return nil return nil
} }
func (t *HelloMessage) UnmarshalCBOR(r io.Reader) error { func (t *HelloMessage) UnmarshalCBOR(r io.Reader) (err error) {
*t = HelloMessage{} *t = HelloMessage{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -91,7 +97,7 @@ func (t *HelloMessage) UnmarshalCBOR(r io.Reader) error {
// t.HeaviestTipSet ([]cid.Cid) (slice) // t.HeaviestTipSet ([]cid.Cid) (slice)
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -110,7 +116,7 @@ func (t *HelloMessage) UnmarshalCBOR(r io.Reader) error {
for i := 0; i < int(extra); i++ { for i := 0; i < int(extra); i++ {
c, err := cbg.ReadCid(br) c, err := cbg.ReadCid(cr)
if err != nil { if err != nil {
return xerrors.Errorf("reading cid field t.HeaviestTipSet failed: %w", err) return xerrors.Errorf("reading cid field t.HeaviestTipSet failed: %w", err)
} }
@ -119,7 +125,7 @@ func (t *HelloMessage) UnmarshalCBOR(r io.Reader) error {
// t.HeaviestTipSetHeight (abi.ChainEpoch) (int64) // t.HeaviestTipSetHeight (abi.ChainEpoch) (int64)
{ {
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
var extraI int64 var extraI int64
if err != nil { if err != nil {
return err return err
@ -146,7 +152,7 @@ func (t *HelloMessage) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.HeaviestTipSetWeight.UnmarshalCBOR(br); err != nil { if err := t.HeaviestTipSetWeight.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.HeaviestTipSetWeight: %w", err) return xerrors.Errorf("unmarshaling t.HeaviestTipSetWeight: %w", err)
} }
@ -155,7 +161,7 @@ func (t *HelloMessage) UnmarshalCBOR(r io.Reader) error {
{ {
c, err := cbg.ReadCid(br) c, err := cbg.ReadCid(cr)
if err != nil { if err != nil {
return xerrors.Errorf("failed to read cid field t.GenesisHash: %w", err) return xerrors.Errorf("failed to read cid field t.GenesisHash: %w", err)
} }
@ -173,46 +179,52 @@ func (t *LatencyMessage) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write(lengthBufLatencyMessage); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write(lengthBufLatencyMessage); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.TArrival (int64) (int64) // t.TArrival (int64) (int64)
if t.TArrival >= 0 { if t.TArrival >= 0 {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.TArrival)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.TArrival)); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.TArrival-1)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.TArrival-1)); err != nil {
return err return err
} }
} }
// t.TSent (int64) (int64) // t.TSent (int64) (int64)
if t.TSent >= 0 { if t.TSent >= 0 {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.TSent)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.TSent)); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.TSent-1)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.TSent-1)); err != nil {
return err return err
} }
} }
return nil return nil
} }
func (t *LatencyMessage) UnmarshalCBOR(r io.Reader) error { func (t *LatencyMessage) UnmarshalCBOR(r io.Reader) (err error) {
*t = LatencyMessage{} *t = LatencyMessage{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajArray { if maj != cbg.MajArray {
return fmt.Errorf("cbor input should be of type array") return fmt.Errorf("cbor input should be of type array")
} }
@ -223,7 +235,7 @@ func (t *LatencyMessage) UnmarshalCBOR(r io.Reader) error {
// t.TArrival (int64) (int64) // t.TArrival (int64) (int64)
{ {
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
var extraI int64 var extraI int64
if err != nil { if err != nil {
return err return err
@ -248,7 +260,7 @@ func (t *LatencyMessage) UnmarshalCBOR(r io.Reader) error {
} }
// t.TSent (int64) (int64) // t.TSent (int64) (int64)
{ {
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
var extraI int64 var extraI int64
if err != nil { if err != nil {
return err return err

View File

@ -37,8 +37,10 @@ import (
"github.com/filecoin-project/go-fil-markets/piecestore" "github.com/filecoin-project/go-fil-markets/piecestore"
"github.com/filecoin-project/go-fil-markets/retrievalmarket" "github.com/filecoin-project/go-fil-markets/retrievalmarket"
"github.com/filecoin-project/go-fil-markets/storagemarket" "github.com/filecoin-project/go-fil-markets/storagemarket"
filmktsstore "github.com/filecoin-project/go-fil-markets/stores"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/go-state-types/network" "github.com/filecoin-project/go-state-types/network"
mktsdagstore "github.com/filecoin-project/lotus/markets/dagstore"
sectorstorage "github.com/filecoin-project/lotus/extern/sector-storage" sectorstorage "github.com/filecoin-project/lotus/extern/sector-storage"
"github.com/filecoin-project/lotus/extern/sector-storage/fsutil" "github.com/filecoin-project/lotus/extern/sector-storage/fsutil"
@ -83,6 +85,7 @@ type StorageMinerAPI struct {
SectorBlocks *sectorblocks.SectorBlocks `optional:"true"` SectorBlocks *sectorblocks.SectorBlocks `optional:"true"`
Host host.Host `optional:"true"` Host host.Host `optional:"true"`
DAGStore *dagstore.DAGStore `optional:"true"` DAGStore *dagstore.DAGStore `optional:"true"`
DAGStoreWrapper *mktsdagstore.Wrapper `optional:"true"`
// Miner / storage // Miner / storage
Miner *storage.Miner `optional:"true"` Miner *storage.Miner `optional:"true"`
@ -792,6 +795,35 @@ func (sm *StorageMinerAPI) DagstoreListShards(ctx context.Context) ([]api.Dagsto
return ret, nil return ret, nil
} }
func (sm *StorageMinerAPI) DagstoreRegisterShard(ctx context.Context, key string) error {
if sm.DAGStore == nil {
return fmt.Errorf("dagstore not available on this node")
}
// First check if the shard has already been registered
k := shard.KeyFromString(key)
_, err := sm.DAGStore.GetShardInfo(k)
if err == nil {
// Shard already registered, nothing further to do
return nil
}
// If the shard is not registered we would expect ErrShardUnknown
if !errors.Is(err, dagstore.ErrShardUnknown) {
return fmt.Errorf("getting shard info from DAG store: %w", err)
}
pieceCid, err := cid.Parse(key)
if err != nil {
return fmt.Errorf("parsing shard key as piece cid: %w", err)
}
if err = filmktsstore.RegisterShardSync(ctx, sm.DAGStoreWrapper, pieceCid, "", true); err != nil {
return fmt.Errorf("failed to register shard: %w", err)
}
return nil
}
func (sm *StorageMinerAPI) DagstoreInitializeShard(ctx context.Context, key string) error { func (sm *StorageMinerAPI) DagstoreInitializeShard(ctx context.Context, key string) error {
if sm.DAGStore == nil { if sm.DAGStore == nil {
return fmt.Errorf("dagstore not available on this node") return fmt.Errorf("dagstore not available on this node")

View File

@ -25,25 +25,26 @@ func (t *VoucherInfo) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write([]byte{163}); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write([]byte{163}); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.Voucher (paych.SignedVoucher) (struct) // t.Voucher (paych.SignedVoucher) (struct)
if len("Voucher") > cbg.MaxLength { if len("Voucher") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"Voucher\" was too long") return xerrors.Errorf("Value in field \"Voucher\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Voucher"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Voucher"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Voucher")); err != nil { if _, err := io.WriteString(w, string("Voucher")); err != nil {
return err return err
} }
if err := t.Voucher.MarshalCBOR(w); err != nil { if err := t.Voucher.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -52,7 +53,7 @@ func (t *VoucherInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Proof\" was too long") return xerrors.Errorf("Value in field \"Proof\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Proof"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Proof"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Proof")); err != nil { if _, err := io.WriteString(w, string("Proof")); err != nil {
@ -63,11 +64,11 @@ func (t *VoucherInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Byte array in field t.Proof was too long") return xerrors.Errorf("Byte array in field t.Proof was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajByteString, uint64(len(t.Proof))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajByteString, uint64(len(t.Proof))); err != nil {
return err return err
} }
if _, err := w.Write(t.Proof[:]); err != nil { if _, err := cw.Write(t.Proof[:]); err != nil {
return err return err
} }
@ -76,7 +77,7 @@ func (t *VoucherInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Submitted\" was too long") return xerrors.Errorf("Value in field \"Submitted\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Submitted"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Submitted"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Submitted")); err != nil { if _, err := io.WriteString(w, string("Submitted")); err != nil {
@ -89,16 +90,21 @@ func (t *VoucherInfo) MarshalCBOR(w io.Writer) error {
return nil return nil
} }
func (t *VoucherInfo) UnmarshalCBOR(r io.Reader) error { func (t *VoucherInfo) UnmarshalCBOR(r io.Reader) (err error) {
*t = VoucherInfo{} *t = VoucherInfo{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajMap { if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map") return fmt.Errorf("cbor input should be of type map")
} }
@ -113,7 +119,7 @@ func (t *VoucherInfo) UnmarshalCBOR(r io.Reader) error {
for i := uint64(0); i < n; i++ { for i := uint64(0); i < n; i++ {
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -127,16 +133,16 @@ func (t *VoucherInfo) UnmarshalCBOR(r io.Reader) error {
{ {
b, err := br.ReadByte() b, err := cr.ReadByte()
if err != nil { if err != nil {
return err return err
} }
if b != cbg.CborNull[0] { if b != cbg.CborNull[0] {
if err := br.UnreadByte(); err != nil { if err := cr.UnreadByte(); err != nil {
return err return err
} }
t.Voucher = new(paych.SignedVoucher) t.Voucher = new(paych.SignedVoucher)
if err := t.Voucher.UnmarshalCBOR(br); err != nil { if err := t.Voucher.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Voucher pointer: %w", err) return xerrors.Errorf("unmarshaling t.Voucher pointer: %w", err)
} }
} }
@ -145,7 +151,7 @@ func (t *VoucherInfo) UnmarshalCBOR(r io.Reader) error {
// t.Proof ([]uint8) (slice) // t.Proof ([]uint8) (slice)
case "Proof": case "Proof":
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -161,13 +167,13 @@ func (t *VoucherInfo) UnmarshalCBOR(r io.Reader) error {
t.Proof = make([]uint8, extra) t.Proof = make([]uint8, extra)
} }
if _, err := io.ReadFull(br, t.Proof[:]); err != nil { if _, err := io.ReadFull(cr, t.Proof[:]); err != nil {
return err return err
} }
// t.Submitted (bool) (bool) // t.Submitted (bool) (bool)
case "Submitted": case "Submitted":
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -196,18 +202,19 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write([]byte{174}); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write([]byte{174}); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.ChannelID (string) (string) // t.ChannelID (string) (string)
if len("ChannelID") > cbg.MaxLength { if len("ChannelID") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"ChannelID\" was too long") return xerrors.Errorf("Value in field \"ChannelID\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("ChannelID"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("ChannelID"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("ChannelID")); err != nil { if _, err := io.WriteString(w, string("ChannelID")); err != nil {
@ -218,7 +225,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field t.ChannelID was too long") return xerrors.Errorf("Value in field t.ChannelID was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len(t.ChannelID))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.ChannelID))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string(t.ChannelID)); err != nil { if _, err := io.WriteString(w, string(t.ChannelID)); err != nil {
@ -230,14 +237,14 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Channel\" was too long") return xerrors.Errorf("Value in field \"Channel\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Channel"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Channel"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Channel")); err != nil { if _, err := io.WriteString(w, string("Channel")); err != nil {
return err return err
} }
if err := t.Channel.MarshalCBOR(w); err != nil { if err := t.Channel.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -246,14 +253,14 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Control\" was too long") return xerrors.Errorf("Value in field \"Control\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Control"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Control"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Control")); err != nil { if _, err := io.WriteString(w, string("Control")); err != nil {
return err return err
} }
if err := t.Control.MarshalCBOR(w); err != nil { if err := t.Control.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -262,14 +269,14 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Target\" was too long") return xerrors.Errorf("Value in field \"Target\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Target"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Target"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Target")); err != nil { if _, err := io.WriteString(w, string("Target")); err != nil {
return err return err
} }
if err := t.Target.MarshalCBOR(w); err != nil { if err := t.Target.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -278,14 +285,14 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Direction\" was too long") return xerrors.Errorf("Value in field \"Direction\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Direction"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Direction"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Direction")); err != nil { if _, err := io.WriteString(w, string("Direction")); err != nil {
return err return err
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.Direction)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Direction)); err != nil {
return err return err
} }
@ -294,7 +301,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Vouchers\" was too long") return xerrors.Errorf("Value in field \"Vouchers\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Vouchers"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Vouchers"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Vouchers")); err != nil { if _, err := io.WriteString(w, string("Vouchers")); err != nil {
@ -305,11 +312,11 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Slice value in field t.Vouchers was too long") return xerrors.Errorf("Slice value in field t.Vouchers was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajArray, uint64(len(t.Vouchers))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Vouchers))); err != nil {
return err return err
} }
for _, v := range t.Vouchers { for _, v := range t.Vouchers {
if err := v.MarshalCBOR(w); err != nil { if err := v.MarshalCBOR(cw); err != nil {
return err return err
} }
} }
@ -319,14 +326,14 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"NextLane\" was too long") return xerrors.Errorf("Value in field \"NextLane\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("NextLane"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("NextLane"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("NextLane")); err != nil { if _, err := io.WriteString(w, string("NextLane")); err != nil {
return err return err
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.NextLane)); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.NextLane)); err != nil {
return err return err
} }
@ -335,14 +342,14 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Amount\" was too long") return xerrors.Errorf("Value in field \"Amount\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Amount"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Amount"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Amount")); err != nil { if _, err := io.WriteString(w, string("Amount")); err != nil {
return err return err
} }
if err := t.Amount.MarshalCBOR(w); err != nil { if err := t.Amount.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -351,14 +358,14 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"AvailableAmount\" was too long") return xerrors.Errorf("Value in field \"AvailableAmount\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("AvailableAmount"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("AvailableAmount"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("AvailableAmount")); err != nil { if _, err := io.WriteString(w, string("AvailableAmount")); err != nil {
return err return err
} }
if err := t.AvailableAmount.MarshalCBOR(w); err != nil { if err := t.AvailableAmount.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -367,14 +374,14 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"PendingAvailableAmount\" was too long") return xerrors.Errorf("Value in field \"PendingAvailableAmount\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("PendingAvailableAmount"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("PendingAvailableAmount"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("PendingAvailableAmount")); err != nil { if _, err := io.WriteString(w, string("PendingAvailableAmount")); err != nil {
return err return err
} }
if err := t.PendingAvailableAmount.MarshalCBOR(w); err != nil { if err := t.PendingAvailableAmount.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -383,14 +390,14 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"PendingAmount\" was too long") return xerrors.Errorf("Value in field \"PendingAmount\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("PendingAmount"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("PendingAmount"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("PendingAmount")); err != nil { if _, err := io.WriteString(w, string("PendingAmount")); err != nil {
return err return err
} }
if err := t.PendingAmount.MarshalCBOR(w); err != nil { if err := t.PendingAmount.MarshalCBOR(cw); err != nil {
return err return err
} }
@ -399,7 +406,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"CreateMsg\" was too long") return xerrors.Errorf("Value in field \"CreateMsg\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("CreateMsg"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("CreateMsg"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("CreateMsg")); err != nil { if _, err := io.WriteString(w, string("CreateMsg")); err != nil {
@ -407,11 +414,11 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
} }
if t.CreateMsg == nil { if t.CreateMsg == nil {
if _, err := w.Write(cbg.CborNull); err != nil { if _, err := cw.Write(cbg.CborNull); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteCidBuf(scratch, w, *t.CreateMsg); err != nil { if err := cbg.WriteCid(cw, *t.CreateMsg); err != nil {
return xerrors.Errorf("failed to write cid field t.CreateMsg: %w", err) return xerrors.Errorf("failed to write cid field t.CreateMsg: %w", err)
} }
} }
@ -421,7 +428,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"AddFundsMsg\" was too long") return xerrors.Errorf("Value in field \"AddFundsMsg\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("AddFundsMsg"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("AddFundsMsg"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("AddFundsMsg")); err != nil { if _, err := io.WriteString(w, string("AddFundsMsg")); err != nil {
@ -429,11 +436,11 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
} }
if t.AddFundsMsg == nil { if t.AddFundsMsg == nil {
if _, err := w.Write(cbg.CborNull); err != nil { if _, err := cw.Write(cbg.CborNull); err != nil {
return err return err
} }
} else { } else {
if err := cbg.WriteCidBuf(scratch, w, *t.AddFundsMsg); err != nil { if err := cbg.WriteCid(cw, *t.AddFundsMsg); err != nil {
return xerrors.Errorf("failed to write cid field t.AddFundsMsg: %w", err) return xerrors.Errorf("failed to write cid field t.AddFundsMsg: %w", err)
} }
} }
@ -443,7 +450,7 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Settling\" was too long") return xerrors.Errorf("Value in field \"Settling\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Settling"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Settling"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Settling")); err != nil { if _, err := io.WriteString(w, string("Settling")); err != nil {
@ -456,16 +463,21 @@ func (t *ChannelInfo) MarshalCBOR(w io.Writer) error {
return nil return nil
} }
func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error { func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) (err error) {
*t = ChannelInfo{} *t = ChannelInfo{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajMap { if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map") return fmt.Errorf("cbor input should be of type map")
} }
@ -480,7 +492,7 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
for i := uint64(0); i < n; i++ { for i := uint64(0); i < n; i++ {
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -493,7 +505,7 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
case "ChannelID": case "ChannelID":
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -505,16 +517,16 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
{ {
b, err := br.ReadByte() b, err := cr.ReadByte()
if err != nil { if err != nil {
return err return err
} }
if b != cbg.CborNull[0] { if b != cbg.CborNull[0] {
if err := br.UnreadByte(); err != nil { if err := cr.UnreadByte(); err != nil {
return err return err
} }
t.Channel = new(address.Address) t.Channel = new(address.Address)
if err := t.Channel.UnmarshalCBOR(br); err != nil { if err := t.Channel.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Channel pointer: %w", err) return xerrors.Errorf("unmarshaling t.Channel pointer: %w", err)
} }
} }
@ -525,7 +537,7 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.Control.UnmarshalCBOR(br); err != nil { if err := t.Control.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Control: %w", err) return xerrors.Errorf("unmarshaling t.Control: %w", err)
} }
@ -535,7 +547,7 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.Target.UnmarshalCBOR(br); err != nil { if err := t.Target.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Target: %w", err) return xerrors.Errorf("unmarshaling t.Target: %w", err)
} }
@ -545,7 +557,7 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
{ {
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -558,7 +570,7 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
// t.Vouchers ([]*paychmgr.VoucherInfo) (slice) // t.Vouchers ([]*paychmgr.VoucherInfo) (slice)
case "Vouchers": case "Vouchers":
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -578,7 +590,7 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
for i := 0; i < int(extra); i++ { for i := 0; i < int(extra); i++ {
var v VoucherInfo var v VoucherInfo
if err := v.UnmarshalCBOR(br); err != nil { if err := v.UnmarshalCBOR(cr); err != nil {
return err return err
} }
@ -590,7 +602,7 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
{ {
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -605,7 +617,7 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.Amount.UnmarshalCBOR(br); err != nil { if err := t.Amount.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.Amount: %w", err) return xerrors.Errorf("unmarshaling t.Amount: %w", err)
} }
@ -615,7 +627,7 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.AvailableAmount.UnmarshalCBOR(br); err != nil { if err := t.AvailableAmount.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.AvailableAmount: %w", err) return xerrors.Errorf("unmarshaling t.AvailableAmount: %w", err)
} }
@ -625,7 +637,7 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.PendingAvailableAmount.UnmarshalCBOR(br); err != nil { if err := t.PendingAvailableAmount.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.PendingAvailableAmount: %w", err) return xerrors.Errorf("unmarshaling t.PendingAvailableAmount: %w", err)
} }
@ -635,7 +647,7 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
{ {
if err := t.PendingAmount.UnmarshalCBOR(br); err != nil { if err := t.PendingAmount.UnmarshalCBOR(cr); err != nil {
return xerrors.Errorf("unmarshaling t.PendingAmount: %w", err) return xerrors.Errorf("unmarshaling t.PendingAmount: %w", err)
} }
@ -645,16 +657,16 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
{ {
b, err := br.ReadByte() b, err := cr.ReadByte()
if err != nil { if err != nil {
return err return err
} }
if b != cbg.CborNull[0] { if b != cbg.CborNull[0] {
if err := br.UnreadByte(); err != nil { if err := cr.UnreadByte(); err != nil {
return err return err
} }
c, err := cbg.ReadCid(br) c, err := cbg.ReadCid(cr)
if err != nil { if err != nil {
return xerrors.Errorf("failed to read cid field t.CreateMsg: %w", err) return xerrors.Errorf("failed to read cid field t.CreateMsg: %w", err)
} }
@ -668,16 +680,16 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
{ {
b, err := br.ReadByte() b, err := cr.ReadByte()
if err != nil { if err != nil {
return err return err
} }
if b != cbg.CborNull[0] { if b != cbg.CborNull[0] {
if err := br.UnreadByte(); err != nil { if err := cr.UnreadByte(); err != nil {
return err return err
} }
c, err := cbg.ReadCid(br) c, err := cbg.ReadCid(cr)
if err != nil { if err != nil {
return xerrors.Errorf("failed to read cid field t.AddFundsMsg: %w", err) return xerrors.Errorf("failed to read cid field t.AddFundsMsg: %w", err)
} }
@ -689,7 +701,7 @@ func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error {
// t.Settling (bool) (bool) // t.Settling (bool) (bool)
case "Settling": case "Settling":
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -718,18 +730,19 @@ func (t *MsgInfo) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborNull) _, err := w.Write(cbg.CborNull)
return err return err
} }
if _, err := w.Write([]byte{164}); err != nil {
cw := cbg.NewCborWriter(w)
if _, err := cw.Write([]byte{164}); err != nil {
return err return err
} }
scratch := make([]byte, 9)
// t.ChannelID (string) (string) // t.ChannelID (string) (string)
if len("ChannelID") > cbg.MaxLength { if len("ChannelID") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"ChannelID\" was too long") return xerrors.Errorf("Value in field \"ChannelID\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("ChannelID"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("ChannelID"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("ChannelID")); err != nil { if _, err := io.WriteString(w, string("ChannelID")); err != nil {
@ -740,7 +753,7 @@ func (t *MsgInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field t.ChannelID was too long") return xerrors.Errorf("Value in field t.ChannelID was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len(t.ChannelID))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.ChannelID))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string(t.ChannelID)); err != nil { if _, err := io.WriteString(w, string(t.ChannelID)); err != nil {
@ -752,14 +765,14 @@ func (t *MsgInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"MsgCid\" was too long") return xerrors.Errorf("Value in field \"MsgCid\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("MsgCid"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("MsgCid"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("MsgCid")); err != nil { if _, err := io.WriteString(w, string("MsgCid")); err != nil {
return err return err
} }
if err := cbg.WriteCidBuf(scratch, w, t.MsgCid); err != nil { if err := cbg.WriteCid(cw, t.MsgCid); err != nil {
return xerrors.Errorf("failed to write cid field t.MsgCid: %w", err) return xerrors.Errorf("failed to write cid field t.MsgCid: %w", err)
} }
@ -768,7 +781,7 @@ func (t *MsgInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Received\" was too long") return xerrors.Errorf("Value in field \"Received\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Received"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Received"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Received")); err != nil { if _, err := io.WriteString(w, string("Received")); err != nil {
@ -784,7 +797,7 @@ func (t *MsgInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field \"Err\" was too long") return xerrors.Errorf("Value in field \"Err\" was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("Err"))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("Err"))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string("Err")); err != nil { if _, err := io.WriteString(w, string("Err")); err != nil {
@ -795,7 +808,7 @@ func (t *MsgInfo) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("Value in field t.Err was too long") return xerrors.Errorf("Value in field t.Err was too long")
} }
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len(t.Err))); err != nil { if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Err))); err != nil {
return err return err
} }
if _, err := io.WriteString(w, string(t.Err)); err != nil { if _, err := io.WriteString(w, string(t.Err)); err != nil {
@ -804,16 +817,21 @@ func (t *MsgInfo) MarshalCBOR(w io.Writer) error {
return nil return nil
} }
func (t *MsgInfo) UnmarshalCBOR(r io.Reader) error { func (t *MsgInfo) UnmarshalCBOR(r io.Reader) (err error) {
*t = MsgInfo{} *t = MsgInfo{}
br := cbg.GetPeeker(r) cr := cbg.NewCborReader(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch) maj, extra, err := cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
defer func() {
if err == io.EOF {
err = io.ErrUnexpectedEOF
}
}()
if maj != cbg.MajMap { if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map") return fmt.Errorf("cbor input should be of type map")
} }
@ -828,7 +846,7 @@ func (t *MsgInfo) UnmarshalCBOR(r io.Reader) error {
for i := uint64(0); i < n; i++ { for i := uint64(0); i < n; i++ {
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -841,7 +859,7 @@ func (t *MsgInfo) UnmarshalCBOR(r io.Reader) error {
case "ChannelID": case "ChannelID":
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }
@ -853,7 +871,7 @@ func (t *MsgInfo) UnmarshalCBOR(r io.Reader) error {
{ {
c, err := cbg.ReadCid(br) c, err := cbg.ReadCid(cr)
if err != nil { if err != nil {
return xerrors.Errorf("failed to read cid field t.MsgCid: %w", err) return xerrors.Errorf("failed to read cid field t.MsgCid: %w", err)
} }
@ -864,7 +882,7 @@ func (t *MsgInfo) UnmarshalCBOR(r io.Reader) error {
// t.Received (bool) (bool) // t.Received (bool) (bool)
case "Received": case "Received":
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch) maj, extra, err = cr.ReadHeader()
if err != nil { if err != nil {
return err return err
} }
@ -883,7 +901,7 @@ func (t *MsgInfo) UnmarshalCBOR(r io.Reader) error {
case "Err": case "Err":
{ {
sval, err := cbg.ReadStringBuf(br, scratch) sval, err := cbg.ReadString(cr)
if err != nil { if err != nil {
return err return err
} }