Skip to content

Commit 5c3f546

Browse files
committed
separate pdp task config
1 parent 7280b3c commit 5c3f546

File tree

7 files changed

+39
-13
lines changed

7 files changed

+39
-13
lines changed

cmd/curio/tasks/tasks.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package tasks
33

44
import (
55
"context"
6+
"github.com/filecoin-project/curio/tasks/pdp"
67
"sort"
78
"strings"
89
"sync"
@@ -242,6 +243,11 @@ func StartTasks(ctx context.Context, dependencies *deps.Deps) (*harmonytask.Task
242243
}
243244
}
244245

246+
if cfg.Subsystems.EnablePDP {
247+
pdpNotifTask := pdp.NewPDPNotifyTask(db)
248+
activeTasks = append(activeTasks, pdpNotifTask)
249+
}
250+
245251
indexingTask := indexing.NewIndexingTask(db, sc, iStore, pp, cfg)
246252
ipniTask := indexing.NewIPNITask(db, sc, iStore, pp, cfg)
247253
activeTasks = append(activeTasks, indexingTask, ipniTask)
@@ -361,7 +367,7 @@ func addSealingTasks(
361367
moveStorageTask := seal.NewMoveStorageTask(sp, slr, db, cfg.Subsystems.MoveStorageMaxTasks)
362368
moveStorageSnapTask := snap.NewMoveStorageTask(slr, db, cfg.Subsystems.MoveStorageMaxTasks)
363369

364-
storePieceTask, err := piece2.NewStorePieceTask(db, must.One(slrLazy.Val()), cfg.Subsystems.MoveStorageMaxTasks)
370+
storePieceTask, err := piece2.NewStorePieceTask(db, must.One(slrLazy.Val()), stor, cfg.Subsystems.MoveStorageMaxTasks)
365371
if err != nil {
366372
return nil, err
367373
}

deps/config/types.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,11 @@ type CurioSubsystemsConfig struct {
304304
// EnableDealMarket enabled the deal market on the node. This would also enable libp2p on the node, if configured.
305305
EnableDealMarket bool
306306

307+
// Enable handling for PDP (proof-of-data possession) deals / proving on this node.
308+
// PDP deals allow the node to directly store and prove unsealed data with "PDP Services" like Storacha.
309+
// This feature is BETA and should only be enabled on nodes which are part of a PDP network.
310+
EnablePDP bool
311+
307312
// EnableCommP enables the commP task on te node. CommP is calculated before sending PublishDealMessage for a Mk12 deal
308313
// Must have EnableDealMarket = True
309314
EnableCommP bool

lib/dealdata/dealdata.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ func getDealMetadata(ctx context.Context, db *harmonydb.DB, sc *ffi.SealCalls, s
218218
reader, _ := padreader.New(pr, uint64(*p.DataRawSize))
219219
pieceReaders = append(pieceReaders, reader)
220220
} else {
221-
reader, _ := padreader.New(NewUrlReader(dataUrl, hdrs, *p.DataRawSize), uint64(*p.DataRawSize))
221+
reader, _ := padreader.New(NewUrlReader(nil, dataUrl, hdrs, *p.DataRawSize), uint64(*p.DataRawSize))
222222
pieceReaders = append(pieceReaders, reader)
223223
}
224224

lib/dealdata/urlpiecereader.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,20 @@ type UrlPieceReader struct {
1919
Headers http.Header
2020
RawSize int64 // the exact number of bytes read, if we read more or less that's an error
2121

22-
RemoteEndpointReader paths.Remote // Only used for .ReadRemote which issues http requests for internal /remote endpoints
22+
RemoteEndpointReader *paths.Remote // Only used for .ReadRemote which issues http requests for internal /remote endpoints
2323

2424
readSoFar int64
2525
closed bool
2626
active io.ReadCloser // auto-closed on EOF
2727
}
2828

29-
func NewUrlReader(p string, h http.Header, rs int64) *UrlPieceReader {
29+
func NewUrlReader(rmt *paths.Remote, p string, h http.Header, rs int64) *UrlPieceReader {
3030
return &UrlPieceReader{
3131
Url: p,
3232
RawSize: rs,
3333
Headers: h,
34+
35+
RemoteEndpointReader: rmt,
3436
}
3537
}
3638

@@ -51,6 +53,10 @@ func (u *UrlPieceReader) initiateRequest() error {
5153
}
5254

5355
if goUrl.Scheme == CustoreScheme {
56+
if u.RemoteEndpointReader == nil {
57+
return xerrors.New("RemoteEndpoint is nil")
58+
}
59+
5460
goUrl.Scheme = "http"
5561
u.active, err = u.RemoteEndpointReader.ReadRemote(context.Background(), goUrl.String(), 0, 0)
5662
if err != nil {
@@ -138,6 +144,9 @@ func (u *UrlPieceReader) Read(p []byte) (n int, err error) {
138144
func (u *UrlPieceReader) Close() error {
139145
if !u.closed {
140146
u.closed = true
147+
if u.active == nil {
148+
return nil
149+
}
141150
return u.active.Close()
142151
}
143152

lib/paths/local_stash.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,12 @@ func (st *Local) ServeAndRemove(ctx context.Context, id uuid.UUID) (io.ReadClose
129129
continue
130130
}
131131

132-
st.localLk.RUnlock()
133-
134132
stashDir := filepath.Join(p.local, StashDirName)
135133
stashFilePath := filepath.Join(stashDir, fileName)
136134
f, err := os.Open(stashFilePath)
137135
if err == nil {
136+
st.localLk.RUnlock()
137+
138138
// Wrap the file in a custom ReadCloser
139139
return &stashFileReadCloser{
140140
File: f,

tasks/pdp/notify_task.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ type PDPNotifyTask struct {
2020
db *harmonydb.DB
2121
}
2222

23+
func NewPDPNotifyTask(db *harmonydb.DB) *PDPNotifyTask {
24+
return &PDPNotifyTask{db: db}
25+
}
26+
2327
func (t *PDPNotifyTask) Do(taskID harmonytask.TaskID, stillOwned func() bool) (done bool, err error) {
2428
ctx := context.Background()
2529

tasks/piece/task_park_piece.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@ var PieceParkPollInterval = time.Second * 15
2727
// ParkPieceTask gets a piece from some origin, and parks it in storage
2828
// Pieces are always f00, piece ID is mapped to pieceCID in the DB
2929
type ParkPieceTask struct {
30-
db *harmonydb.DB
31-
sc *ffi2.SealCalls
30+
db *harmonydb.DB
31+
sc *ffi2.SealCalls
32+
remote *paths.Remote
3233

3334
TF promise.Promise[harmonytask.AddTaskFunc]
3435

@@ -38,17 +39,18 @@ type ParkPieceTask struct {
3839
}
3940

4041
func NewParkPieceTask(db *harmonydb.DB, sc *ffi2.SealCalls, max int) (*ParkPieceTask, error) {
41-
return newPieceTask(db, sc, max, false)
42+
return newPieceTask(db, sc, nil, max, false)
4243
}
4344

44-
func NewStorePieceTask(db *harmonydb.DB, sc *ffi2.SealCalls, max int) (*ParkPieceTask, error) {
45-
return newPieceTask(db, sc, max, true)
45+
func NewStorePieceTask(db *harmonydb.DB, sc *ffi2.SealCalls, remote *paths.Remote, max int) (*ParkPieceTask, error) {
46+
return newPieceTask(db, sc, remote, max, true)
4647
}
4748

48-
func newPieceTask(db *harmonydb.DB, sc *ffi2.SealCalls, max int, longTerm bool) (*ParkPieceTask, error) {
49+
func newPieceTask(db *harmonydb.DB, sc *ffi2.SealCalls, remote *paths.Remote, max int, longTerm bool) (*ParkPieceTask, error) {
4950
pt := &ParkPieceTask{
5051
db: db,
5152
sc: sc,
53+
remote: remote,
5254
max: max,
5355
longTerm: longTerm,
5456
}
@@ -165,7 +167,7 @@ func (p *ParkPieceTask) Do(taskID harmonytask.TaskID, stillOwned func() bool) (d
165167
if err != nil {
166168
return false, xerrors.Errorf("unmarshaling reference data headers: %w", err)
167169
}
168-
upr := dealdata.NewUrlReader(refData[i].DataURL, hdrs, pieceData.PieceRawSize)
170+
upr := dealdata.NewUrlReader(p.remote, refData[i].DataURL, hdrs, pieceData.PieceRawSize)
169171

170172
defer func() {
171173
_ = upr.Close()

0 commit comments

Comments
 (0)