@@ -47,6 +47,7 @@ import (
47
47
const IPNIRoutePath = "/ipni-provider"
48
48
const IPNIPath = "/ipni/v1/ad/"
49
49
const ProviderPath = "/ipni-provider"
50
+ const publishInterval = 10 * time .Minute
50
51
51
52
var (
52
53
log = logging .Logger ("ipni-provider" )
@@ -68,7 +69,6 @@ type Provider struct {
68
69
pieceProvider * pieceprovider.PieceProvider
69
70
entriesChunker * chunker.Chunker
70
71
cache * lru.Cache [ipld.Link , datamodel.Node ]
71
- topic string
72
72
httpPrefix string
73
73
keys map [string ]* peerInfo // map[peerID String]Private_Key
74
74
// announceURLs enables sending direct announcements via HTTP. This is
@@ -78,7 +78,7 @@ type Provider struct {
78
78
}
79
79
80
80
func NewProvider (api ipniAPI , deps * deps.Deps ) (* Provider , error ) {
81
- c , err := lru.New [ipld.Link , datamodel.Node ](chunker .EntriesCacheCapacity )
81
+ c , err := lru.New [ipld.Link , datamodel.Node ](deps . Cfg . Market . StorageMarketConfig . IPNI .EntriesCacheCapacity )
82
82
if err != nil {
83
83
return nil , xerrors .Errorf ("creating new cache: %w" , err )
84
84
}
@@ -121,30 +121,19 @@ func NewProvider(api ipniAPI, deps *deps.Deps) (*Provider, error) {
121
121
return nil , err
122
122
}
123
123
124
- nn , err := api .StateNetworkName (ctx )
125
- if err != nil {
126
- return nil , err
127
- }
128
-
129
- topic := "/indexer/ingest/" + string (nn )
130
-
131
- if deps .Cfg .Market .StorageMarketConfig .IPNI .TopicName != "" {
132
- topic = deps .Cfg .Market .StorageMarketConfig .IPNI .TopicName
133
- }
134
-
135
- var announceURLs []* url.URL
124
+ announceURLs := make ([]* url.URL , 0 , len (deps .Cfg .Market .StorageMarketConfig .IPNI .DirectAnnounceURLs ))
136
125
137
- for _ , us := range deps .Cfg .Market .StorageMarketConfig .IPNI .DirectAnnounceURLs {
126
+ for i , us := range deps .Cfg .Market .StorageMarketConfig .IPNI .DirectAnnounceURLs {
138
127
u , err := url .Parse (us )
139
128
if err != nil {
140
129
return nil , err
141
130
}
142
- announceURLs = append ( announceURLs , u )
131
+ announceURLs [ i ] = u
143
132
}
144
133
145
- var httpServerAddresses []multiaddr.Multiaddr
134
+ httpServerAddresses := make ( []multiaddr.Multiaddr , 0 , len ( deps . Cfg . Market . HTTP . AnnounceAddresses ))
146
135
147
- for _ , a := range deps .Cfg .Market .HTTP .AnnounceAddresses {
136
+ for i , a := range deps .Cfg .Market .HTTP .AnnounceAddresses {
148
137
addr , err := urltomultiaddr .UrlToMultiaddr (a )
149
138
if err != nil {
150
139
return nil , err
@@ -153,7 +142,7 @@ func NewProvider(api ipniAPI, deps *deps.Deps) (*Provider, error) {
153
142
if err != nil {
154
143
return nil , err
155
144
}
156
- httpServerAddresses = append ( httpServerAddresses , addr )
145
+ httpServerAddresses [ i ] = addr
157
146
}
158
147
159
148
return & Provider {
@@ -162,7 +151,6 @@ func NewProvider(api ipniAPI, deps *deps.Deps) (*Provider, error) {
162
151
pieceProvider : deps .PieceProvider ,
163
152
cache : c ,
164
153
keys : keyMap ,
165
- topic : topic ,
166
154
announceURLs : announceURLs ,
167
155
httpServerAddresses : httpServerAddresses ,
168
156
}, nil
@@ -179,9 +167,17 @@ func (p *Provider) getAd(ctx context.Context, ad cid.Cid, provider string) (sche
179
167
IsRm bool
180
168
}
181
169
182
- err := p .db .Select (ctx , & ads , `SELECT context_id,
183
- is_rm, previous, provider, addresses,
184
- signature, entries FROM ipni WHERE ad_cid = $1 AND provider = $2` , ad .String (), provider )
170
+ err := p .db .Select (ctx , & ads , `SELECT
171
+ context_id,
172
+ is_rm,
173
+ previous,
174
+ provider,
175
+ addresses,
176
+ signature,
177
+ entries
178
+ FROM ipni
179
+ WHERE ad_cid = $1
180
+ AND provider = $2` , ad .String (), provider )
185
181
186
182
if err != nil {
187
183
return schema.Advertisement {}, xerrors .Errorf ("getting ad from DB: %w" , err )
@@ -256,7 +252,7 @@ func (p *Provider) getHead(ctx context.Context, provider string) ([]byte, error)
256
252
return nil , err
257
253
}
258
254
259
- signedHead , err := head .NewSignedHead (lnk .(cidlink.Link ).Cid , p . topic , p .keys [provider ].Key )
255
+ signedHead , err := head .NewSignedHead (lnk .(cidlink.Link ).Cid , "" , p .keys [provider ].Key )
260
256
if err != nil {
261
257
return nil , xerrors .Errorf ("failed to generate signed head for peer %s: %w" , provider , err )
262
258
}
@@ -461,7 +457,7 @@ func (p *Provider) handleGet(w http.ResponseWriter, r *http.Request) {
461
457
return
462
458
}
463
459
log .Errorf ("failed to get signed head for peer %s: %w" , providerID , err )
464
- http .Error (w , err . Error () , http .StatusInternalServerError )
460
+ http .Error (w , "" , http .StatusInternalServerError )
465
461
}
466
462
w .WriteHeader (http .StatusOK )
467
463
_ , err = w .Write (sh )
@@ -487,7 +483,7 @@ func (p *Provider) handleGet(w http.ResponseWriter, r *http.Request) {
487
483
return
488
484
}
489
485
log .Errorf ("failed to get entry %s for peer %s: %w" , b .String (), providerID , err )
490
- http .Error (w , err . Error () , http .StatusInternalServerError )
486
+ http .Error (w , "" , http .StatusInternalServerError )
491
487
return
492
488
}
493
489
w .WriteHeader (http .StatusOK )
@@ -498,21 +494,21 @@ func (p *Provider) handleGet(w http.ResponseWriter, r *http.Request) {
498
494
return
499
495
}
500
496
log .Errorf ("failed to get ad %s for peer %s: %w" , b .String (), providerID , err )
501
- http .Error (w , err . Error () , http .StatusInternalServerError )
497
+ http .Error (w , "" , http .StatusInternalServerError )
502
498
return
503
499
}
504
500
adn , err := ad .ToNode ()
505
501
if err != nil {
506
502
log .Errorf ("failed to convert ad %s for peer %s to IPLD node: %w" , b .String (), providerID , err )
507
- http .Error (w , err . Error () , http .StatusInternalServerError )
503
+ http .Error (w , "" , http .StatusInternalServerError )
508
504
return
509
505
}
510
506
// Use local buffer for better error handing
511
507
resp := new (bytes.Buffer )
512
508
err = dagjson .Encode (adn , resp )
513
509
if err != nil {
514
510
log .Errorf ("failed to encode ad %s for peer %s: %w" , b .String (), providerID , err )
515
- http .Error (w , err . Error () , http .StatusInternalServerError )
511
+ http .Error (w , "" , http .StatusInternalServerError )
516
512
return
517
513
}
518
514
w .WriteHeader (http .StatusOK )
@@ -535,7 +531,7 @@ func Routes(r *mux.Router, p *Provider) {
535
531
func (p * Provider ) StartPublishing (ctx context.Context ) {
536
532
// A poller which publishes head for each provider
537
533
// every 10 minutes
538
- ticker := time .NewTicker (10 * time . Minute )
534
+ ticker := time .NewTicker (publishInterval )
539
535
go func () {
540
536
for {
541
537
select {
0 commit comments