@@ -47,7 +47,7 @@ type DealData struct {
47
47
Close func ()
48
48
}
49
49
50
- func DealDataSDRPoRep (ctx context.Context , db * harmonydb.DB , sc * ffi.SealCalls , spId , sectorNumber int64 , spt abi.RegisteredSealProof ) (* DealData , error ) {
50
+ func DealDataSDRPoRep (ctx context.Context , db * harmonydb.DB , sc * ffi.SealCalls , spId , sectorNumber int64 , spt abi.RegisteredSealProof , commDOnly bool ) (* DealData , error ) {
51
51
var pieces []dealMetadata
52
52
err := db .Select (ctx , & pieces , `
53
53
SELECT piece_index, piece_cid, piece_size, data_url, data_headers, data_raw_size, data_delete_on_finalize
@@ -57,7 +57,7 @@ func DealDataSDRPoRep(ctx context.Context, db *harmonydb.DB, sc *ffi.SealCalls,
57
57
return nil , xerrors .Errorf ("getting pieces: %w" , err )
58
58
}
59
59
60
- return getDealMetadata (ctx , db , sc , spt , pieces )
60
+ return getDealMetadata (ctx , db , sc , spt , pieces , commDOnly )
61
61
}
62
62
63
63
func DealDataSnap (ctx context.Context , db * harmonydb.DB , sc * ffi.SealCalls , spId , sectorNumber int64 , spt abi.RegisteredSealProof ) (* DealData , error ) {
@@ -70,10 +70,10 @@ func DealDataSnap(ctx context.Context, db *harmonydb.DB, sc *ffi.SealCalls, spId
70
70
return nil , xerrors .Errorf ("getting pieces: %w" , err )
71
71
}
72
72
73
- return getDealMetadata (ctx , db , sc , spt , pieces )
73
+ return getDealMetadata (ctx , db , sc , spt , pieces , false )
74
74
}
75
75
76
- func getDealMetadata (ctx context.Context , db * harmonydb.DB , sc * ffi.SealCalls , spt abi.RegisteredSealProof , pieces []dealMetadata ) (* DealData , error ) {
76
+ func getDealMetadata (ctx context.Context , db * harmonydb.DB , sc * ffi.SealCalls , spt abi.RegisteredSealProof , pieces []dealMetadata , commDOnly bool ) (* DealData , error ) {
77
77
ssize , err := spt .SectorSize ()
78
78
if err != nil {
79
79
return nil , xerrors .Errorf ("getting sector size: %w" , err )
@@ -125,51 +125,53 @@ func getDealMetadata(ctx context.Context, db *harmonydb.DB, sc *ffi.SealCalls, s
125
125
offset += abi .PaddedPieceSize (p .PieceSize ).Unpadded ()
126
126
127
127
// make pieceReader
128
- if p .DataUrl != nil {
129
- dataUrl := * p .DataUrl
128
+ if ! commDOnly {
129
+ if p .DataUrl != nil {
130
+ dataUrl := * p .DataUrl
130
131
131
- goUrl , err := url .Parse (dataUrl )
132
- if err != nil {
133
- return nil , xerrors .Errorf ("parsing data URL: %w" , err )
134
- }
135
-
136
- if goUrl .Scheme == "pieceref" {
137
- // url is to a piece reference
138
-
139
- refNum , err := strconv .ParseInt (goUrl .Opaque , 10 , 64 )
132
+ goUrl , err := url .Parse (dataUrl )
140
133
if err != nil {
141
- return nil , xerrors .Errorf ("parsing piece reference number : %w" , err )
134
+ return nil , xerrors .Errorf ("parsing data URL : %w" , err )
142
135
}
143
136
144
- // get pieceID
145
- var pieceID []struct {
146
- PieceID storiface.PieceNumber `db:"piece_id"`
147
- }
148
- err = db .Select (ctx , & pieceID , `SELECT piece_id FROM parked_piece_refs WHERE ref_id = $1` , refNum )
149
- if err != nil {
150
- return nil , xerrors .Errorf ("getting pieceID: %w" , err )
137
+ if goUrl .Scheme == "pieceref" {
138
+ // url is to a piece reference
139
+
140
+ refNum , err := strconv .ParseInt (goUrl .Opaque , 10 , 64 )
141
+ if err != nil {
142
+ return nil , xerrors .Errorf ("parsing piece reference number: %w" , err )
143
+ }
144
+
145
+ // get pieceID
146
+ var pieceID []struct {
147
+ PieceID storiface.PieceNumber `db:"piece_id"`
148
+ }
149
+ err = db .Select (ctx , & pieceID , `SELECT piece_id FROM parked_piece_refs WHERE ref_id = $1` , refNum )
150
+ if err != nil {
151
+ return nil , xerrors .Errorf ("getting pieceID: %w" , err )
152
+ }
153
+
154
+ if len (pieceID ) != 1 {
155
+ return nil , xerrors .Errorf ("expected 1 pieceID, got %d" , len (pieceID ))
156
+ }
157
+
158
+ pr , err := sc .PieceReader (ctx , pieceID [0 ].PieceID )
159
+ if err != nil {
160
+ return nil , xerrors .Errorf ("getting piece reader: %w" , err )
161
+ }
162
+
163
+ closers = append (closers , pr )
164
+
165
+ reader , _ := padreader .New (pr , uint64 (* p .DataRawSize ))
166
+ pieceReaders = append (pieceReaders , reader )
167
+ } else {
168
+ reader , _ := padreader .New (NewUrlReader (dataUrl , * p .DataRawSize ), uint64 (* p .DataRawSize ))
169
+ pieceReaders = append (pieceReaders , reader )
151
170
}
152
171
153
- if len (pieceID ) != 1 {
154
- return nil , xerrors .Errorf ("expected 1 pieceID, got %d" , len (pieceID ))
155
- }
156
-
157
- pr , err := sc .PieceReader (ctx , pieceID [0 ].PieceID )
158
- if err != nil {
159
- return nil , xerrors .Errorf ("getting piece reader: %w" , err )
160
- }
161
-
162
- closers = append (closers , pr )
163
-
164
- reader , _ := padreader .New (pr , uint64 (* p .DataRawSize ))
165
- pieceReaders = append (pieceReaders , reader )
166
- } else {
167
- reader , _ := padreader .New (NewUrlReader (dataUrl , * p .DataRawSize ), uint64 (* p .DataRawSize ))
168
- pieceReaders = append (pieceReaders , reader )
172
+ } else { // padding piece (w/o fr32 padding, added in TreeD)
173
+ pieceReaders = append (pieceReaders , nullreader .NewNullReader (abi .PaddedPieceSize (p .PieceSize ).Unpadded ()))
169
174
}
170
-
171
- } else { // padding piece (w/o fr32 padding, added in TreeD)
172
- pieceReaders = append (pieceReaders , nullreader .NewNullReader (abi .PaddedPieceSize (p .PieceSize ).Unpadded ()))
173
175
}
174
176
175
177
if ! p .DataDelOnFinalize {
@@ -199,18 +201,22 @@ func getDealMetadata(ctx context.Context, db *harmonydb.DB, sc *ffi.SealCalls, s
199
201
out .IsUnpadded = true
200
202
} else {
201
203
out .CommD = zerocomm .ZeroPieceCommitment (abi .PaddedPieceSize (ssize ).Unpadded ())
202
- out .Data = nullreader .NewNullReader (abi .UnpaddedPieceSize (ssize ))
204
+ if ! commDOnly {
205
+ out .Data = nullreader .NewNullReader (abi .UnpaddedPieceSize (ssize ))
206
+ }
203
207
out .PieceInfos = []abi.PieceInfo {{
204
208
Size : abi .PaddedPieceSize (ssize ),
205
209
PieceCID : out .CommD ,
206
210
}}
207
211
out .IsUnpadded = false // nullreader includes fr32 zero bits
208
212
}
209
213
210
- out .Close = func () {
211
- for _ , c := range closers {
212
- if err := c .Close (); err != nil {
213
- log .Errorw ("error closing piece reader" , "error" , err )
214
+ if ! commDOnly {
215
+ out .Close = func () {
216
+ for _ , c := range closers {
217
+ if err := c .Close (); err != nil {
218
+ log .Errorw ("error closing piece reader" , "error" , err )
219
+ }
214
220
}
215
221
}
216
222
}
0 commit comments