Skip to content

Commit

Permalink
return ErrNotExist for all mismatches
Browse files Browse the repository at this point in the history
  • Loading branch information
ischasny committed Dec 15, 2023
1 parent 7942c59 commit 7fd837b
Showing 1 changed file with 5 additions and 63 deletions.
68 changes: 5 additions & 63 deletions node/modules/storageminer_idxprov.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package modules
import (
"context"
"fmt"
"sync"

"github.com/filecoin-project/boost/build"
"github.com/filecoin-project/boost/indexprovider"
Expand All @@ -23,13 +22,11 @@ import (
"github.com/ipld/go-ipld-prime/datamodel"
cidlink "github.com/ipld/go-ipld-prime/linking/cid"
"github.com/ipni/go-libipni/dagsync/dtsync"
"github.com/ipni/go-libipni/metadata"
provider "github.com/ipni/index-provider"
"github.com/ipni/index-provider/engine"
pubsub "github.com/libp2p/go-libp2p-pubsub"
"github.com/libp2p/go-libp2p/core/host"
"github.com/libp2p/go-libp2p/core/peer"
"github.com/multiformats/go-multiaddr"
"go.uber.org/fx"
"golang.org/x/xerrors"
)
Expand Down Expand Up @@ -72,14 +69,6 @@ func IndexProvider(cfg config.IndexProviderConfig) func(params IdxProv, marketHo
marketHostAddrsStr = append(marketHostAddrsStr, a.String())
}

type engineHolder struct {
e *engine.Engine
}

eholder := &engineHolder{}
mretries := make(map[cid.Cid]int)
var elock sync.RWMutex

ipds := namespace.Wrap(args.Datastore, datastore.NewKey("/index-provider"))
var opts = []engine.Option{
engine.WithDatastore(ipds),
Expand All @@ -90,58 +79,12 @@ func IndexProvider(cfg config.IndexProviderConfig) func(params IdxProv, marketHo
engine.WithTopicName(topicName),
engine.WithPurgeCacheOnStart(cfg.PurgeCacheOnStart),
engine.WithStorageReadOpenerErrorHook(func(lc ipld.LinkContext, l ipld.Link, err error) error {
if err != engine.ErrEntriesLinkMismatch {
return err
}
errNotExists := ipld.ErrNotExists{}
c := l.(cidlink.Link).Cid
elock.RLock()
retries := mretries[c]
elock.RUnlock()
if retries > maxAdPublishRetries {
log.Warnw("mmismatch: max number of ad publish retries has been reached", "cid", c)
return errNotExists
}
ctx := lc.Ctx
adv, err := eholder.e.GetAdv(ctx, c)
if err != nil || adv == nil {
log.Warnw("mmismatch: can't find an ad to republish in the engine", "cid", c, "err", err)
return errNotExists
}
prov := peer.ID(adv.Provider)
if rcid, err := eholder.e.NotifyRemove(ctx, prov, adv.ContextID); err != nil {
log.Warnw("mmismatch: error calling NotifyRemove", "cid", c, "err", err)
return errNotExists
} else {
log.Info("mmismatch: successfully published a removal advertisement", "cid", c, "removalCid", rcid)
if err == engine.ErrEntriesLinkMismatch {
c := l.(cidlink.Link).Cid
log.Warnw("Encountered ErrEntriesLinkMismatch. Skipping the ad.", "cid", c)
return ipld.ErrNotExists{}
}

maddrs := make([]multiaddr.Multiaddr, 0, len(adv.Addresses))
for _, addr := range adv.Addresses {
if ma, err := multiaddr.NewMultiaddr(addr); err != nil {
log.Warnw("mmismatch: error decoding multiaddress", "cid", c, "err", err)
return errNotExists
} else {
maddrs = append(maddrs, ma)
}
}
md := metadata.Metadata{}
if err = md.UnmarshalBinary(adv.Metadata); err != nil {
log.Warnw("mmismatch: error decoding metadata", "cid", c, "err", err)
return errNotExists
}

if acid, err := eholder.e.NotifyPut(ctx, &peer.AddrInfo{ID: prov, Addrs: maddrs}, adv.ContextID, md); err != nil {
log.Warnw("mmismatch: error calling NotifyPut", "cid", c, "err", err)
return errNotExists
} else {
log.Info("mmismatch: successfully published a new advertisement", "cid", c, "newCid", acid)
}

elock.Lock()
mretries[c] = mretries[c] + 1
elock.Unlock()
return errNotExists
return err
}),
}

Expand Down Expand Up @@ -238,7 +181,6 @@ func IndexProvider(cfg config.IndexProviderConfig) func(params IdxProv, marketHo
},
})

eholder.e = e
return e, nil
}
}
Expand Down

0 comments on commit 7fd837b

Please sign in to comment.