From 85b735859978ddaa5c6781989a8a0632d09505ca Mon Sep 17 00:00:00 2001 From: Hannah Howard Date: Mon, 12 Sep 2022 09:25:59 -0700 Subject: [PATCH] booster bitswap MVP executable (#707) * feat(booster-bitswap): booster bitswap MVP untested * refactor(booster-bitswap): use API for fetching blocks * fix(deps): update deps to compile * feat(booster-bitswap): makefile & fixes add commands to build booster-bitswap, and very a round tripped successful fetch from booster-bitswap * refactor: clean up unused vars etc * fix: booster-bitsawp - check error when creating libp2p key * refactor(node): avoid FreeAndUnsealed method Co-authored-by: Dirk McCormick Co-authored-by: Anton Evangelatov --- .gitignore | 1 + Makefile | 6 + api/api.go | 5 + api/proxy_gen.go | 39 ++++++ build/openrpc/boost.json.gz | Bin 4922 -> 5070 bytes cmd/booster-bitswap/main.go | 42 ++++++ .../remoteblockstore/remoteblockstore.go | 72 ++++++++++ cmd/booster-bitswap/run.go | 102 ++++++++++++++ cmd/booster-bitswap/server.go | 75 ++++++++++ documentation/en/api-v1-methods.md | 63 +++++++-- go.mod | 36 ++--- go.sum | 132 ++++++++++++------ node/builder.go | 1 + node/config/doc_gen.go | 31 ++++ node/impl/boost.go | 23 ++- node/modules/dtypes/storage.go | 5 + node/modules/rcmgr.go | 71 ++++++---- node/modules/storageminer.go | 71 ++++++++++ 18 files changed, 681 insertions(+), 94 deletions(-) create mode 100644 cmd/booster-bitswap/main.go create mode 100644 cmd/booster-bitswap/remoteblockstore/remoteblockstore.go create mode 100644 cmd/booster-bitswap/run.go create mode 100644 cmd/booster-bitswap/server.go diff --git a/.gitignore b/.gitignore index 2f11a46f3..c6c3063c7 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ /boostd /devnet /booster-http +/booster-bitswap /docgen-md /docgen-openrpc extern/filecoin-ffi/rust/target diff --git a/Makefile b/Makefile index 3891100cc..dd5f7343e 100644 --- a/Makefile +++ b/Makefile @@ -98,6 +98,12 @@ booster-http: $(BUILD_DEPS) .PHONY: booster-http BINS+=booster-http +booster-bitswap: $(BUILD_DEPS) + rm -f booster-bitswap + $(GOCC) build $(GOFLAGS) -o booster-bitswap ./cmd/booster-bitswap +.PHONY: booster-bitswap +BINS+=booster-bitswap + devnet: $(BUILD_DEPS) rm -f devnet $(GOCC) build $(GOFLAGS) -o devnet ./cmd/devnet diff --git a/api/api.go b/api/api.go index e17440fe1..b86eb0557 100644 --- a/api/api.go +++ b/api/api.go @@ -48,6 +48,11 @@ type Boost interface { BoostDagstorePiecesContainingMultihash(ctx context.Context, mh multihash.Multihash) ([]cid.Cid, error) //perm:read BoostDagstoreListShards(ctx context.Context) ([]DagstoreShardInfo, error) //perm:read + // MethodGroup: Blockstore + BlockstoreGet(ctx context.Context, c cid.Cid) ([]byte, error) //perm:read + BlockstoreHas(ctx context.Context, c cid.Cid) (bool, error) //perm:read + BlockstoreGetSize(ctx context.Context, c cid.Cid) (int, error) //perm:read + // RuntimeSubsystems returns the subsystems that are enabled // in this instance. RuntimeSubsystems(ctx context.Context) (lapi.MinerSubsystems, error) //perm:read diff --git a/api/proxy_gen.go b/api/proxy_gen.go index 1b481dd78..03f23469f 100644 --- a/api/proxy_gen.go +++ b/api/proxy_gen.go @@ -38,6 +38,12 @@ type BoostStruct struct { Internal struct { ActorSectorSize func(p0 context.Context, p1 address.Address) (abi.SectorSize, error) `perm:"read"` + BlockstoreGet func(p0 context.Context, p1 cid.Cid) ([]byte, error) `perm:"read"` + + BlockstoreGetSize func(p0 context.Context, p1 cid.Cid) (int, error) `perm:"read"` + + BlockstoreHas func(p0 context.Context, p1 cid.Cid) (bool, error) `perm:"read"` + BoostDagstoreDestroyShard func(p0 context.Context, p1 string) error `perm:"admin"` BoostDagstoreGC func(p0 context.Context) ([]DagstoreShardResult, error) `perm:"admin"` @@ -262,6 +268,39 @@ func (s *BoostStub) ActorSectorSize(p0 context.Context, p1 address.Address) (abi return *new(abi.SectorSize), ErrNotSupported } +func (s *BoostStruct) BlockstoreGet(p0 context.Context, p1 cid.Cid) ([]byte, error) { + if s.Internal.BlockstoreGet == nil { + return *new([]byte), ErrNotSupported + } + return s.Internal.BlockstoreGet(p0, p1) +} + +func (s *BoostStub) BlockstoreGet(p0 context.Context, p1 cid.Cid) ([]byte, error) { + return *new([]byte), ErrNotSupported +} + +func (s *BoostStruct) BlockstoreGetSize(p0 context.Context, p1 cid.Cid) (int, error) { + if s.Internal.BlockstoreGetSize == nil { + return 0, ErrNotSupported + } + return s.Internal.BlockstoreGetSize(p0, p1) +} + +func (s *BoostStub) BlockstoreGetSize(p0 context.Context, p1 cid.Cid) (int, error) { + return 0, ErrNotSupported +} + +func (s *BoostStruct) BlockstoreHas(p0 context.Context, p1 cid.Cid) (bool, error) { + if s.Internal.BlockstoreHas == nil { + return false, ErrNotSupported + } + return s.Internal.BlockstoreHas(p0, p1) +} + +func (s *BoostStub) BlockstoreHas(p0 context.Context, p1 cid.Cid) (bool, error) { + return false, ErrNotSupported +} + func (s *BoostStruct) BoostDagstoreDestroyShard(p0 context.Context, p1 string) error { if s.Internal.BoostDagstoreDestroyShard == nil { return ErrNotSupported diff --git a/build/openrpc/boost.json.gz b/build/openrpc/boost.json.gz index 96f98748fd259840f6e1a91cc7c6b3d4a54f4a24..45408a8f23652859104e88dae0ce736eba9edc7e 100644 GIT binary patch literal 5070 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 literal 4922 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 diff --git a/cmd/booster-bitswap/main.go b/cmd/booster-bitswap/main.go new file mode 100644 index 000000000..f270ebc75 --- /dev/null +++ b/cmd/booster-bitswap/main.go @@ -0,0 +1,42 @@ +package main + +import ( + "os" + + "github.com/filecoin-project/boost/build" + cliutil "github.com/filecoin-project/boost/cli/util" + logging "github.com/ipfs/go-log/v2" + "github.com/urfave/cli/v2" +) + +var log = logging.Logger("booster") + +func main() { + app := &cli.App{ + Name: "booster-bitswap", + Usage: "Bitswap endpoint for retrieval from Filecoin", + EnableBashCompletion: true, + Version: build.UserVersion(), + Flags: []cli.Flag{ + cliutil.FlagVeryVerbose, + }, + Commands: []*cli.Command{ + runCmd, + }, + } + app.Setup() + + if err := app.Run(os.Args); err != nil { + os.Stderr.WriteString("Error: " + err.Error() + "\n") + } +} + +func before(cctx *cli.Context) error { + _ = logging.SetLogLevel("booster", "INFO") + + if cliutil.IsVeryVerbose { + _ = logging.SetLogLevel("booster", "DEBUG") + } + + return nil +} diff --git a/cmd/booster-bitswap/remoteblockstore/remoteblockstore.go b/cmd/booster-bitswap/remoteblockstore/remoteblockstore.go new file mode 100644 index 000000000..bd9611b08 --- /dev/null +++ b/cmd/booster-bitswap/remoteblockstore/remoteblockstore.go @@ -0,0 +1,72 @@ +package remoteblockstore + +import ( + "context" + "errors" + + blocks "github.com/ipfs/go-block-format" + logging "github.com/ipfs/go-log/v2" + + "github.com/ipfs/go-cid" + blockstore "github.com/ipfs/go-ipfs-blockstore" +) + +var log = logging.Logger("remote-blockstore") + +var _ blockstore.Blockstore = (*RemoteBlockstore)(nil) + +type RemoteBlockstoreAPI interface { + BlockstoreGet(ctx context.Context, c cid.Cid) ([]byte, error) + BlockstoreHas(ctx context.Context, c cid.Cid) (bool, error) + BlockstoreGetSize(ctx context.Context, c cid.Cid) (int, error) +} + +// RemoteBlockstore is a read-only blockstore over all cids across all pieces on a provider. +type RemoteBlockstore struct { + api RemoteBlockstoreAPI +} + +func NewRemoteBlockstore(api RemoteBlockstoreAPI) blockstore.Blockstore { + return &RemoteBlockstore{ + api: api, + } +} + +func (ro *RemoteBlockstore) Get(ctx context.Context, c cid.Cid) (b blocks.Block, err error) { + log.Debugw("Get", "cid", c) + data, err := ro.api.BlockstoreGet(ctx, c) + log.Debugw("Get response", "cid", c, "error", err) + if err != nil { + return nil, err + } + return blocks.NewBlockWithCid(data, c) +} + +func (ro *RemoteBlockstore) Has(ctx context.Context, c cid.Cid) (bool, error) { + log.Debugw("Has", "cid", c) + has, err := ro.api.BlockstoreHas(ctx, c) + log.Debugw("Has response", "cid", c, "has", has, "error", err) + return has, err +} + +func (ro *RemoteBlockstore) GetSize(ctx context.Context, c cid.Cid) (int, error) { + log.Debugw("GetSize", "cid", c) + size, err := ro.api.BlockstoreGetSize(ctx, c) + log.Debugw("GetSize response", "cid", c, "size", size, "error", err) + return size, err +} + +// --- UNSUPPORTED BLOCKSTORE METHODS ------- +func (ro *RemoteBlockstore) DeleteBlock(context.Context, cid.Cid) error { + return errors.New("unsupported operation DeleteBlock") +} +func (ro *RemoteBlockstore) HashOnRead(_ bool) {} +func (ro *RemoteBlockstore) Put(context.Context, blocks.Block) error { + return errors.New("unsupported operation Put") +} +func (ro *RemoteBlockstore) PutMany(context.Context, []blocks.Block) error { + return errors.New("unsupported operation PutMany") +} +func (ro *RemoteBlockstore) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error) { + return nil, errors.New("unsupported operation AllKeysChan") +} diff --git a/cmd/booster-bitswap/run.go b/cmd/booster-bitswap/run.go new file mode 100644 index 000000000..f5c43cb36 --- /dev/null +++ b/cmd/booster-bitswap/run.go @@ -0,0 +1,102 @@ +package main + +import ( + "context" + "fmt" + "net/http" + _ "net/http/pprof" + "strings" + + "github.com/filecoin-project/boost/api" + bclient "github.com/filecoin-project/boost/api/client" + cliutil "github.com/filecoin-project/boost/cli/util" + "github.com/filecoin-project/boost/cmd/booster-bitswap/remoteblockstore" + "github.com/filecoin-project/go-jsonrpc" + lcli "github.com/filecoin-project/lotus/cli" + "github.com/urfave/cli/v2" +) + +var runCmd = &cli.Command{ + Name: "run", + Usage: "Start a booster-bitswap process", + Before: before, + Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "pprof", + Usage: "run pprof web server on localhost:6070", + }, + &cli.UintFlag{ + Name: "port", + Usage: "the port to listen for bitswap requests on", + Value: 8888, + }, + &cli.StringFlag{ + Name: "api-boost", + Usage: "the endpoint for the boost API", + Required: true, + }, + }, + Action: func(cctx *cli.Context) error { + if cctx.Bool("pprof") { + go func() { + err := http.ListenAndServe("localhost:6070", nil) + if err != nil { + log.Error(err) + } + }() + } + + // Connect to the Boost API + ctx := lcli.ReqContext(cctx) + boostAPIInfo := cctx.String("api-boost") + bapi, bcloser, err := getBoostAPI(ctx, boostAPIInfo) + if err != nil { + return fmt.Errorf("getting boost API: %w", err) + } + defer bcloser() + + remoteStore := remoteblockstore.NewRemoteBlockstore(bapi) + // Create the server API + port := cctx.Int("port") + server := NewBitswapServer(port, remoteStore) + + // Start the server + log.Infof("Starting booster-bitswap node on port %d", port) + err = server.Start(ctx) + if err != nil { + return err + } + // Monitor for shutdown. + <-ctx.Done() + + log.Info("Shutting down...") + + err = server.Stop() + if err != nil { + return err + } + log.Info("Graceful shutdown successful") + + // Sync all loggers. + _ = log.Sync() //nolint:errcheck + + return nil + }, +} + +func getBoostAPI(ctx context.Context, ai string) (api.Boost, jsonrpc.ClientCloser, error) { + ai = strings.TrimPrefix(strings.TrimSpace(ai), "BOOST_API_INFO=") + info := cliutil.ParseApiInfo(ai) + addr, err := info.DialArgs("v0") + if err != nil { + return nil, nil, fmt.Errorf("could not get DialArgs: %w", err) + } + + log.Infof("Using boost API at %s", addr) + api, closer, err := bclient.NewBoostRPCV0(ctx, addr, info.AuthHeader()) + if err != nil { + return nil, nil, fmt.Errorf("creating full node service API: %w", err) + } + + return api, closer, nil +} diff --git a/cmd/booster-bitswap/server.go b/cmd/booster-bitswap/server.go new file mode 100644 index 000000000..9d20d0c7b --- /dev/null +++ b/cmd/booster-bitswap/server.go @@ -0,0 +1,75 @@ +package main + +import ( + "context" + "crypto/rand" + "fmt" + + bsnetwork "github.com/ipfs/go-bitswap/network" + "github.com/ipfs/go-bitswap/server" + blockstore "github.com/ipfs/go-ipfs-blockstore" + nilrouting "github.com/ipfs/go-ipfs-routing/none" + "github.com/libp2p/go-libp2p" + crypto "github.com/libp2p/go-libp2p-core/crypto" + "github.com/libp2p/go-libp2p-core/network" + "github.com/libp2p/go-libp2p/p2p/muxer/mplex" + "github.com/libp2p/go-libp2p/p2p/muxer/yamux" + quic "github.com/libp2p/go-libp2p/p2p/transport/quic" + "github.com/libp2p/go-libp2p/p2p/transport/tcp" +) + +type BitswapServer struct { + port int + remoteStore blockstore.Blockstore + + ctx context.Context + cancel context.CancelFunc + server *server.Server +} + +func NewBitswapServer(port int, remoteStore blockstore.Blockstore) *BitswapServer { + return &BitswapServer{port: port, remoteStore: remoteStore} +} + +func (s *BitswapServer) Start(ctx context.Context) error { + s.ctx, s.cancel = context.WithCancel(ctx) + // setup libp2p host + privKey, _, err := crypto.GenerateECDSAKeyPair(rand.Reader) + if err != nil { + return err + } + + host, err := libp2p.New( + libp2p.ListenAddrStrings( + fmt.Sprintf("/ip4/0.0.0.0/tcp/%d", s.port), + fmt.Sprintf("/ip4/0.0.0.0/udp/%d/quic", s.port), + ), + libp2p.Transport(tcp.NewTCPTransport), + libp2p.Transport(quic.NewTransport), + libp2p.Muxer("/mplex/6.7.0", mplex.DefaultTransport), + libp2p.Muxer("/yamux/1.0.0", yamux.DefaultTransport), + libp2p.Identity(privKey), + libp2p.ResourceManager(network.NullResourceManager), + ) + if err != nil { + return err + } + + // start a bitswap session on the provider + nilRouter, err := nilrouting.ConstructNilRouting(ctx, nil, nil, nil) + if err != nil { + return err + } + bsopts := []server.Option{server.MaxOutstandingBytesPerPeer(1 << 20)} + net := bsnetwork.NewFromIpfsHost(host, nilRouter) + s.server = server.New(ctx, net, s.remoteStore, bsopts...) + net.Start(s.server) + + log.Infow("bitswap server running", "multiaddrs", host.Addrs(), "peerId", host.ID()) + return nil +} + +func (s *BitswapServer) Stop() error { + s.cancel() + return s.server.Close() +} diff --git a/documentation/en/api-v1-methods.md b/documentation/en/api-v1-methods.md index 4ed9e1260..2b8be58f1 100644 --- a/documentation/en/api-v1-methods.md +++ b/documentation/en/api-v1-methods.md @@ -4,6 +4,10 @@ * [Auth](#auth) * [AuthNew](#authnew) * [AuthVerify](#authverify) +* [Blockstore](#blockstore) + * [BlockstoreGet](#blockstoreget) + * [BlockstoreGetSize](#blockstoregetsize) + * [BlockstoreHas](#blockstorehas) * [Boost](#boost) * [BoostDagstoreDestroyShard](#boostdagstoredestroyshard) * [BoostDagstoreGC](#boostdagstoregc) @@ -137,6 +141,57 @@ Response: ] ``` +## Blockstore + + +### BlockstoreGet +There are not yet any comments for this method. + +Perms: read + +Inputs: +```json +[ + { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + } +] +``` + +Response: `"Ynl0ZSBhcnJheQ=="` + +### BlockstoreGetSize + + +Perms: read + +Inputs: +```json +[ + { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + } +] +``` + +Response: `123` + +### BlockstoreHas + + +Perms: read + +Inputs: +```json +[ + { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + } +] +``` + +Response: `true` + ## Boost @@ -1303,11 +1358,7 @@ Inputs: Response: ```json { - "Dynamic": true, "Memory": 9, - "MemoryFraction": 12.3, - "MinMemory": 9, - "MaxMemory": 9, "Streams": 123, "StreamsInbound": 123, "StreamsOutbound": 123, @@ -1473,11 +1524,7 @@ Inputs: [ "string value", { - "Dynamic": true, "Memory": 9, - "MemoryFraction": 12.3, - "MinMemory": 9, - "MaxMemory": 9, "Streams": 123, "StreamsInbound": 123, "StreamsOutbound": 123, diff --git a/go.mod b/go.mod index c74a53652..47023beb6 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/dustin/go-humanize v1.0.0 github.com/etclabscore/go-openrpc-reflect v0.0.36 github.com/fatih/color v1.13.0 - github.com/filecoin-project/dagstore v0.5.3 + github.com/filecoin-project/dagstore v0.5.4-0.20220818083758-aba4e75dd27a github.com/filecoin-project/go-address v1.0.0 github.com/filecoin-project/go-bitfield v0.2.4 github.com/filecoin-project/go-cbor-util v0.0.1 @@ -25,7 +25,7 @@ require ( github.com/filecoin-project/go-data-transfer v1.15.2 github.com/filecoin-project/go-fil-commcid v0.1.0 github.com/filecoin-project/go-fil-commp-hashhash v0.1.0 - github.com/filecoin-project/go-fil-markets v1.23.2 + github.com/filecoin-project/go-fil-markets v1.24.1-0.20220901222600-b1b44b266c47 github.com/filecoin-project/go-jsonrpc v0.1.5 github.com/filecoin-project/go-legs v0.4.9 github.com/filecoin-project/go-padreader v0.0.1 @@ -33,7 +33,7 @@ require ( github.com/filecoin-project/go-state-types v0.1.10 github.com/filecoin-project/go-statestore v0.2.0 github.com/filecoin-project/index-provider v0.8.1 - github.com/filecoin-project/lotus v1.17.0 + github.com/filecoin-project/lotus v1.17.1-0.20220819044554-215598c1e9cb github.com/filecoin-project/specs-actors v0.9.15 github.com/filecoin-project/specs-actors/v8 v8.0.1 github.com/filecoin-project/specs-storage v0.4.1 @@ -45,8 +45,9 @@ require ( github.com/graph-gophers/graphql-go v1.2.0 github.com/graph-gophers/graphql-transport-ws v0.0.2 github.com/hashicorp/go-multierror v1.1.1 + github.com/ipfs/go-bitswap v0.9.0 github.com/ipfs/go-block-format v0.0.3 - github.com/ipfs/go-blockservice v0.3.0 + github.com/ipfs/go-blockservice v0.4.0 github.com/ipfs/go-cid v0.2.0 github.com/ipfs/go-cidutil v0.1.0 github.com/ipfs/go-datastore v0.5.1 @@ -55,9 +56,10 @@ require ( github.com/ipfs/go-ipfs-blocksutil v0.0.1 github.com/ipfs/go-ipfs-chunker v0.0.5 github.com/ipfs/go-ipfs-ds-help v1.1.0 - github.com/ipfs/go-ipfs-exchange-interface v0.1.0 - github.com/ipfs/go-ipfs-exchange-offline v0.2.0 + github.com/ipfs/go-ipfs-exchange-interface v0.2.0 + github.com/ipfs/go-ipfs-exchange-offline v0.3.0 github.com/ipfs/go-ipfs-files v0.1.1 + github.com/ipfs/go-ipfs-routing v0.2.1 github.com/ipfs/go-ipld-format v0.4.0 github.com/ipfs/go-log/v2 v2.5.1 github.com/ipfs/go-merkledag v0.6.0 @@ -71,27 +73,27 @@ require ( github.com/jpillora/backoff v1.0.0 github.com/kelseyhightower/envconfig v1.4.0 github.com/libp2p/go-eventbus v0.2.1 - github.com/libp2p/go-libp2p v0.20.3 - github.com/libp2p/go-libp2p-core v0.16.1 + github.com/libp2p/go-libp2p v0.21.0 + github.com/libp2p/go-libp2p-core v0.19.1 github.com/libp2p/go-libp2p-gostream v0.4.1-0.20220720161416-e1952aede109 github.com/libp2p/go-libp2p-http v0.2.1 - github.com/libp2p/go-libp2p-kad-dht v0.15.0 - github.com/libp2p/go-libp2p-peerstore v0.7.0 + github.com/libp2p/go-libp2p-kad-dht v0.17.0 + github.com/libp2p/go-libp2p-peerstore v0.7.1 github.com/libp2p/go-libp2p-pubsub v0.7.1 github.com/libp2p/go-libp2p-record v0.1.3 - github.com/libp2p/go-libp2p-resource-manager v0.3.0 + github.com/libp2p/go-libp2p-resource-manager v0.5.3 github.com/mattn/go-sqlite3 v1.14.10 github.com/mitchellh/go-homedir v1.1.0 - github.com/multiformats/go-multiaddr v0.5.0 - github.com/multiformats/go-multibase v0.0.3 + github.com/multiformats/go-multiaddr v0.6.0 + github.com/multiformats/go-multibase v0.1.1 github.com/multiformats/go-multihash v0.2.0 github.com/multiformats/go-varint v0.0.6 github.com/open-rpc/meta-schema v0.0.0-20201029221707-1b72ef2ea333 github.com/pressly/goose/v3 v3.5.3 github.com/prometheus/client_golang v1.12.1 github.com/raulk/clock v1.1.0 - github.com/raulk/go-watchdog v1.2.0 - github.com/stretchr/testify v1.7.1 + github.com/raulk/go-watchdog v1.3.0 + github.com/stretchr/testify v1.8.0 github.com/urfave/cli/v2 v2.8.1 github.com/whyrusleeping/base32 v0.0.0-20170828182744-c30ac30633cc github.com/whyrusleeping/cbor-gen v0.0.0-20220323183124-98fa8256a799 @@ -104,10 +106,10 @@ require ( go.uber.org/atomic v1.9.0 go.uber.org/fx v1.15.0 go.uber.org/multierr v1.8.0 - golang.org/x/exp v0.0.0-20210715201039-d37aa40e8013 + golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c golang.org/x/tools v0.1.11 - golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f + golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1 // indirect google.golang.org/grpc v1.46.2 // indirect gopkg.in/cheggaaa/pb.v1 v1.0.28 diff --git a/go.sum b/go.sum index 8cfac18af..a2b8bebe3 100644 --- a/go.sum +++ b/go.sum @@ -156,8 +156,9 @@ github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MR github.com/btcsuite/btcd v0.22.0-beta/go.mod h1:9n5ntfhhHQBIhUvlhDvD3Qg6fRUj4jkN0VB8L8svzOA= github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= -github.com/btcsuite/btcd/btcec/v2 v2.1.3 h1:xM/n3yIhHAhHy04z4i43C8p4ehixJZMsnrVJkgl+MTE= github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= +github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k= +github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= @@ -220,8 +221,9 @@ github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:z github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/codegangsta/cli v1.20.0/go.mod h1:/qJNoX69yVSKu5o4jLyXAENLRyk1uhi7zkbQ3slBdOA= github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= -github.com/containerd/cgroups v1.0.3 h1:ADZftAkglvCiD44c77s5YmMqaP2pzVCFZvBmAlBdAP4= github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8= +github.com/containerd/cgroups v1.0.4 h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA= +github.com/containerd/cgroups v1.0.4/go.mod h1:nLNQtsF7Sl2HxNebu77i1R0oDlhiTG+kO4JTrUzo6IA= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.2.2/go.mod h1:pWygW9u7LtS1o4N/Tn0FoCFDIXZ7rxcMX7HX1Dmibvk= @@ -349,8 +351,8 @@ github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/filecoin-project/dagstore v0.5.2/go.mod h1:mdqKzYrRBHf1pRMthYfMv3n37oOw0Tkx7+TxPt240M0= -github.com/filecoin-project/dagstore v0.5.3 h1:++s4pEW/NvHph0N8sCdz7NokU0Y3r2yVB5SFaDTLLWM= -github.com/filecoin-project/dagstore v0.5.3/go.mod h1:mdqKzYrRBHf1pRMthYfMv3n37oOw0Tkx7+TxPt240M0= +github.com/filecoin-project/dagstore v0.5.4-0.20220818083758-aba4e75dd27a h1:uf2+323ApLfOsmcRL0gHDFpQgptK9M0MY7kofMrN2v8= +github.com/filecoin-project/dagstore v0.5.4-0.20220818083758-aba4e75dd27a/go.mod h1:LoStZ5eZM8En+jRTYBU1Q6QimdfjT+FtgG90Hnat+cE= github.com/filecoin-project/go-address v0.0.3/go.mod h1:jr8JxKsYx+lQlQZmF5i2U0Z+cGQ59wMIps/8YW/lDj8= github.com/filecoin-project/go-address v0.0.5/go.mod h1:jr8JxKsYx+lQlQZmF5i2U0Z+cGQ59wMIps/8YW/lDj8= github.com/filecoin-project/go-address v0.0.6/go.mod h1:7B0/5DA13n6nHkB8bbGx1gWzG/dbTsZ0fgOJVGsM3TE= @@ -388,8 +390,8 @@ github.com/filecoin-project/go-fil-commcid v0.1.0/go.mod h1:Eaox7Hvus1JgPrL5+M3+ github.com/filecoin-project/go-fil-commp-hashhash v0.1.0 h1:imrrpZWEHRnNqqv0tN7LXep5bFEVOVmQWHJvl2mgsGo= github.com/filecoin-project/go-fil-commp-hashhash v0.1.0/go.mod h1:73S8WSEWh9vr0fDJVnKADhfIv/d6dCbAGaAGWbdJEI8= github.com/filecoin-project/go-fil-markets v1.23.1/go.mod h1:V+1vFO34RZmpdECdikKGiyWhSNJK81Q89Kn0egA9iAk= -github.com/filecoin-project/go-fil-markets v1.23.2 h1:9+5CCliLVoTbq3qffT2xZMuGjyl2HyR0RJ7x29ywRi8= -github.com/filecoin-project/go-fil-markets v1.23.2/go.mod h1:V+1vFO34RZmpdECdikKGiyWhSNJK81Q89Kn0egA9iAk= +github.com/filecoin-project/go-fil-markets v1.24.1-0.20220901222600-b1b44b266c47 h1:AJyJxg87ErVBB5QRrBgnuAp5zMbHNZUgTd9gRF/QiiY= +github.com/filecoin-project/go-fil-markets v1.24.1-0.20220901222600-b1b44b266c47/go.mod h1:ZOPAjEUia7H60F7p0kEupi0FR7Hy4Zfz90BpR1TMBwI= github.com/filecoin-project/go-hamt-ipld v0.1.5 h1:uoXrKbCQZ49OHpsTCkrThPNelC4W3LPEk0OrS/ytIBM= github.com/filecoin-project/go-hamt-ipld v0.1.5/go.mod h1:6Is+ONR5Cd5R6XZoCse1CWaXZc0Hdb/JeX+EQCQzX24= github.com/filecoin-project/go-hamt-ipld/v2 v2.0.0 h1:b3UDemBYN2HNfk3KOXNuxgTTxlWi3xVvbQP0IT38fvM= @@ -431,8 +433,8 @@ github.com/filecoin-project/go-storedcounter v0.1.0 h1:Mui6wSUBC+cQGHbDUBcO7rfh5 github.com/filecoin-project/go-storedcounter v0.1.0/go.mod h1:4ceukaXi4vFURIoxYMfKzaRF5Xv/Pinh2oTnoxpv+z8= github.com/filecoin-project/index-provider v0.8.1 h1:ggoBWvMSWR91HZQCWfv8SZjoTGNyJBwNMLuN9bJZrbU= github.com/filecoin-project/index-provider v0.8.1/go.mod h1:c/Ym5HtWPp9NQgNc9dgSBMpSNsZ/DE9FEi9qVubl5RM= -github.com/filecoin-project/lotus v1.17.0 h1:FiOxLzX1vfDrI46rO9PpqjF8pBAaxhEQGdHw3u5UOaw= -github.com/filecoin-project/lotus v1.17.0/go.mod h1:hZ5L7E4uKWwp8E/8Bw3pBaai4wV7Utq/ZSbl9hIoFnU= +github.com/filecoin-project/lotus v1.17.1-0.20220819044554-215598c1e9cb h1:kpy8YuyDgoUf+nKCkF49UIRG7ywigkZaZpzlfoEbP3U= +github.com/filecoin-project/lotus v1.17.1-0.20220819044554-215598c1e9cb/go.mod h1:FK/JSFBxylpRuzIKgQCthHQ06fiseSzJlpdhQVpQzeU= github.com/filecoin-project/pubsub v1.0.0 h1:ZTmT27U07e54qV1mMiQo4HDr0buo8I1LDHBYLXlsNXM= github.com/filecoin-project/pubsub v1.0.0/go.mod h1:GkpB33CcUtUNrLPhJgfdy4FDx4OMNR9k+46DHx/Lqrg= github.com/filecoin-project/specs-actors v0.9.13/go.mod h1:TS1AW/7LbG+615j4NsjMK1qlpAwaFsG9w0V2tg2gSao= @@ -483,8 +485,9 @@ github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3 github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= +github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= github.com/gammazero/keymutex v0.0.2/go.mod h1:qtzWCCLMisQUmVa4dvqHVgwfh4BP2YB7JxNDGXnsKrs= github.com/gammazero/radixtree v0.2.5/go.mod h1:VPqqCDZ3YZZxAzUUsIF/ytFBigVWV7JIV1Stld8hri0= @@ -613,8 +616,9 @@ github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -707,8 +711,9 @@ github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoP github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= @@ -778,8 +783,10 @@ github.com/ipfs/go-bitswap v0.1.2/go.mod h1:qxSWS4NXGs7jQ6zQvoPY3+NmOfHHG47mhkiL github.com/ipfs/go-bitswap v0.1.8/go.mod h1:TOWoxllhccevbWFUR2N7B1MTSVVge1s6XSMiCSA4MzM= github.com/ipfs/go-bitswap v0.3.4/go.mod h1:4T7fvNv/LmOys+21tnLzGKncMeeXUYUd1nUiJ2teMvI= github.com/ipfs/go-bitswap v0.5.1/go.mod h1:P+ckC87ri1xFLvk74NlXdP0Kj9RmWAh4+H78sC6Qopo= -github.com/ipfs/go-bitswap v0.6.0 h1:f2rc6GZtoSFhEIzQmddgGiel9xntj02Dg0ZNf2hSC+w= github.com/ipfs/go-bitswap v0.6.0/go.mod h1:Hj3ZXdOC5wBJvENtdqsixmzzRukqd8EHLxZLZc3mzRA= +github.com/ipfs/go-bitswap v0.8.0/go.mod h1:/h8sBij8UVEaNWl8ABzpLRA5Y1cttdNUnpeGo2AA/LQ= +github.com/ipfs/go-bitswap v0.9.0 h1:/dZi/XhUN/aIk78pI4kaZrilUglJ+7/SCmOHWIpiy8E= +github.com/ipfs/go-bitswap v0.9.0/go.mod h1:zkfBcGWp4dQTQd0D0akpudhpOVUAJT9GbH9tDmR8/s4= github.com/ipfs/go-block-format v0.0.1/go.mod h1:DK/YYcsSUIVAFNwo/KZCdIIbpN0ROH/baNLgayt4pFc= github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY= github.com/ipfs/go-block-format v0.0.3 h1:r8t66QstRp/pd/or4dpnbVfXT5Gt7lOqRvC+/dDTpMc= @@ -789,8 +796,9 @@ github.com/ipfs/go-blockservice v0.1.0/go.mod h1:hzmMScl1kXHg3M2BjTymbVPjv627N7s github.com/ipfs/go-blockservice v0.1.4/go.mod h1:OTZhFpkgY48kNzbgyvcexW9cHrpjBYIjSR0KoDOFOLU= github.com/ipfs/go-blockservice v0.1.7/go.mod h1:GmS+BAt4hrwBKkzE11AFDQUrnvqjwFatGS2MY7wOjEM= github.com/ipfs/go-blockservice v0.2.1/go.mod h1:k6SiwmgyYgs4M/qt+ww6amPeUH9EISLRBnvUurKJhi8= -github.com/ipfs/go-blockservice v0.3.0 h1:cDgcZ+0P0Ih3sl8+qjFr2sVaMdysg/YZpLj5WJ8kiiw= github.com/ipfs/go-blockservice v0.3.0/go.mod h1:P5ppi8IHDC7O+pA0AlGTF09jruB2h+oP3wVVaZl8sfk= +github.com/ipfs/go-blockservice v0.4.0 h1:7MUijAW5SqdsqEW/EhnNFRJXVF8mGU5aGhZ3CQaCWbY= +github.com/ipfs/go-blockservice v0.4.0/go.mod h1:kRjO3wlGW9mS1aKuiCeGhx9K1DagQ10ACpVO59qgAx4= github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= @@ -884,12 +892,14 @@ github.com/ipfs/go-ipfs-ds-help v1.0.0/go.mod h1:ujAbkeIgkKAWtxxNkoZHWLCyk5JpPoK github.com/ipfs/go-ipfs-ds-help v1.1.0 h1:yLE2w9RAsl31LtfMt91tRZcrx+e61O5mDxFRR994w4Q= github.com/ipfs/go-ipfs-ds-help v1.1.0/go.mod h1:YR5+6EaebOhfcqVCyqemItCLthrpVNot+rsOU/5IatU= github.com/ipfs/go-ipfs-exchange-interface v0.0.1/go.mod h1:c8MwfHjtQjPoDyiy9cFquVtVHkO9b9Ob3FG91qJnWCM= -github.com/ipfs/go-ipfs-exchange-interface v0.1.0 h1:TiMekCrOGQuWYtZO3mf4YJXDIdNgnKWZ9IE3fGlnWfo= github.com/ipfs/go-ipfs-exchange-interface v0.1.0/go.mod h1:ych7WPlyHqFvCi/uQI48zLZuAWVP5iTQPXEfVaw5WEI= +github.com/ipfs/go-ipfs-exchange-interface v0.2.0 h1:8lMSJmKogZYNo2jjhUs0izT+dck05pqUw4mWNW9Pw6Y= +github.com/ipfs/go-ipfs-exchange-interface v0.2.0/go.mod h1:z6+RhJuDQbqKguVyslSOuVDhqF9JtTrO3eptSAiW2/Y= github.com/ipfs/go-ipfs-exchange-offline v0.0.1/go.mod h1:WhHSFCVYX36H/anEKQboAzpUws3x7UeEGkzQc3iNkM0= github.com/ipfs/go-ipfs-exchange-offline v0.1.1/go.mod h1:vTiBRIbzSwDD0OWm+i3xeT0mO7jG2cbJYatp3HPk5XY= -github.com/ipfs/go-ipfs-exchange-offline v0.2.0 h1:2PF4o4A7W656rC0RxuhUace997FTcDTcIQ6NoEtyjAI= github.com/ipfs/go-ipfs-exchange-offline v0.2.0/go.mod h1:HjwBeW0dvZvfOMwDP0TSKXIHf2s+ksdP4E3MLDRtLKY= +github.com/ipfs/go-ipfs-exchange-offline v0.3.0 h1:c/Dg8GDPzixGd0MC8Jh6mjOwU57uYokgWRFidfvEkuA= +github.com/ipfs/go-ipfs-exchange-offline v0.3.0/go.mod h1:MOdJ9DChbb5u37M1IcbrRB02e++Z7521fMxqCNRrz9s= github.com/ipfs/go-ipfs-files v0.0.3/go.mod h1:INEFm0LL2LWXBhNJ2PMIIb2w45hpXgPjNoE7yA8Y1d4= github.com/ipfs/go-ipfs-files v0.0.4/go.mod h1:INEFm0LL2LWXBhNJ2PMIIb2w45hpXgPjNoE7yA8Y1d4= github.com/ipfs/go-ipfs-files v0.0.8/go.mod h1:wiN/jSG8FKyk7N0WyctKSvq3ljIa2NNTiZB55kpTdOs= @@ -1115,15 +1125,17 @@ github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47e github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.6/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.0.12 h1:p9dKCg8i4gmOxtv35DvrYoWqYzQrvEVdjQ762Y0OqZE= github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= +github.com/klauspost/cpuid/v2 v2.0.14 h1:QRqdp6bb9M9S5yyKeYteXKuoKE4p0tGlra81fKOpWH8= +github.com/klauspost/cpuid/v2 v2.0.14/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= github.com/koalacxr/quantile v0.0.1/go.mod h1:bGN/mCZLZ4lrSDHRQ6Lglj9chowGux8sGUIND+DQeD0= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/koron/go-ssdp v0.0.0-20180514024734-4a0ed625a78b/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= -github.com/koron/go-ssdp v0.0.2 h1:fL3wAoyT6hXHQlORyXUW4Q23kkQpJRgEAYcZB5BR71o= github.com/koron/go-ssdp v0.0.2/go.mod h1:XoLfkAiA2KeZsYh4DbHxD7h3nR2AZNqVQOa+LJuqPYs= +github.com/koron/go-ssdp v0.0.3 h1:JivLMY45N76b4p/vsWGOKewBQu6uf39y8l+AQ7sDKx8= +github.com/koron/go-ssdp v0.0.3/go.mod h1:b2MxI6yh02pKrsyNoQUsk4+YNikaGhe4894J+Q5lDvA= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -1142,8 +1154,9 @@ github.com/libp2p/go-addr-util v0.0.1/go.mod h1:4ac6O7n9rIAKB1dnd+s8IbbMXkt+oBpz github.com/libp2p/go-addr-util v0.0.2/go.mod h1:Ecd6Fb3yIuLzq4bD7VcywcVSBtefcAwnUISBM3WG15E= github.com/libp2p/go-addr-util v0.1.0/go.mod h1:6I3ZYuFr2O/9D+SoyM0zEw0EF3YkldtTX406BpdQMqw= github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ= -github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c= github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= github.com/libp2p/go-conn-security v0.0.1/go.mod h1:bGmu51N0KU9IEjX7kl2PQjgZa40JQWnayTvNMgD/vyk= @@ -1181,8 +1194,8 @@ github.com/libp2p/go-libp2p v0.18.0/go.mod h1:+veaZ9z1SZQhmc5PW78jvnnxZ89Mgvmh4c github.com/libp2p/go-libp2p v0.19.4/go.mod h1:MIt8y481VDhUe4ErWi1a4bvt/CjjFfOq6kZTothWIXY= github.com/libp2p/go-libp2p v0.20.0/go.mod h1:g0C5Fu+aXXbCXkusCzLycuBowEih3ElmDqtbo61Em7k= github.com/libp2p/go-libp2p v0.20.1/go.mod h1:XgJHsOhEBVBXp/2Sj9bm/yEyD94uunAaP6oaegdcKks= -github.com/libp2p/go-libp2p v0.20.3 h1:tjjDNfp7FqdI/7v1rXtB/BtELaPlAThL2uzlj18kcrw= -github.com/libp2p/go-libp2p v0.20.3/go.mod h1:I+vndVanE/p/SjFbnA+BEmmfAUEpWxrdXZeyQ1Dus5c= +github.com/libp2p/go-libp2p v0.21.0 h1:s9yYScuIFY33FOOzwTXbc8QqbvsRyKIWFf0FCSJKrfM= +github.com/libp2p/go-libp2p v0.21.0/go.mod h1:zvcA6/C4mr5/XQarRICh+L1SN9dAHHlSWDq4x5VYxg4= 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/go.mod h1:wu+AnM9Ii2KgO5jMmS1rz9dvzTdj8BXqsPR9HR0XB7I= github.com/libp2p/go-libp2p-asn-util v0.2.0 h1:rg3+Os8jbnO5DxkC7K/Utdi+DkY3q/d1/1q+8WeNAsw= @@ -1212,7 +1225,6 @@ github.com/libp2p/go-libp2p-circuit v0.1.3/go.mod h1:Xqh2TjSy8DD5iV2cCOMzdynd6h8 github.com/libp2p/go-libp2p-circuit v0.1.4/go.mod h1:CY67BrEjKNDhdTk8UgBX1Y/H5c3xkAcs3gnksxY7osU= github.com/libp2p/go-libp2p-circuit v0.2.1/go.mod h1:BXPwYDN5A8z4OEY9sOfr2DUQMLQvKt/6oku45YUmjIo= github.com/libp2p/go-libp2p-circuit v0.4.0/go.mod h1:t/ktoFIUzM6uLQ+o1G6NuBl2ANhBKN9Bc8jRIk31MoA= -github.com/libp2p/go-libp2p-circuit v0.6.0 h1:rw/HlhmUB3OktS/Ygz6+2XABOmHKzZpPUuMNUMosj8w= github.com/libp2p/go-libp2p-circuit v0.6.0/go.mod h1:kB8hY+zCpMeScyvFrKrGicRdid6vNXbunKE4rXATZ0M= github.com/libp2p/go-libp2p-connmgr v0.1.1/go.mod h1:wZxh8veAmU5qdrfJ0ZBLcU8oJe9L82ciVP/fl1VHjXk= github.com/libp2p/go-libp2p-connmgr v0.2.4/go.mod h1:YV0b/RIm8NGPnnNWM7hG9Q38OeQiQfKhHCCs1++ufn0= @@ -1255,8 +1267,10 @@ github.com/libp2p/go-libp2p-core v0.12.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQR github.com/libp2p/go-libp2p-core v0.13.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg= github.com/libp2p/go-libp2p-core v0.14.0/go.mod h1:tLasfcVdTXnixsLB0QYaT1syJOhsbrhG7q6pGrHtBg8= github.com/libp2p/go-libp2p-core v0.15.1/go.mod h1:agSaboYM4hzB1cWekgVReqV5M4g5M+2eNNejV+1EEhs= -github.com/libp2p/go-libp2p-core v0.16.1 h1:bWoiEBqVkpJ13hbv/f69tHODp86t6mvc4fBN4DkK73M= github.com/libp2p/go-libp2p-core v0.16.1/go.mod h1:O3i/7y+LqUb0N+qhzXjBjjpchgptWAVMG1Voegk7b4c= +github.com/libp2p/go-libp2p-core v0.19.0/go.mod h1:AkA+FUKQfYt1FLNef5fOPlo/naAWjKy/RCjkcPjqzYg= +github.com/libp2p/go-libp2p-core v0.19.1 h1:zaZQQCeCrFMtxFa1wHy6AhsVynyNmZAvwgWqSSPT3WE= +github.com/libp2p/go-libp2p-core v0.19.1/go.mod h1:2uLhmmqDiFY+dw+70KkBLeKvvsJHGWUINRDdeV1ip7k= github.com/libp2p/go-libp2p-crypto v0.0.1/go.mod h1:yJkNyDmO341d5wwXxDUGO0LykUVT72ImHNUqh5D/dBE= github.com/libp2p/go-libp2p-crypto v0.0.2/go.mod h1:eETI5OUfBnvARGOHrJz2eWNyTUxEGZnBxMcbUjfIj4I= github.com/libp2p/go-libp2p-crypto v0.1.0/go.mod h1:sPUokVISZiy+nNuTTH/TY+leRSxnFj/2GLjtOTW90hI= @@ -1283,8 +1297,10 @@ github.com/libp2p/go-libp2p-interface-connmgr v0.0.4/go.mod h1:GarlRLH0LdeWcLnYM github.com/libp2p/go-libp2p-interface-connmgr v0.0.5/go.mod h1:GarlRLH0LdeWcLnYM/SaBykKFl9U5JFnbBGruAk/D5k= github.com/libp2p/go-libp2p-interface-pnet v0.0.1/go.mod h1:el9jHpQAXK5dnTpKA4yfCNBZXvrzdOU75zz+C6ryp3k= github.com/libp2p/go-libp2p-kad-dht v0.2.1/go.mod h1:k7ONOlup7HKzQ68dE6lSnp07cdxdkmnRa+6B4Fh9/w0= -github.com/libp2p/go-libp2p-kad-dht v0.15.0 h1:Ke+Oj78gX5UDXnA6HBdrgvi+fStJxgYTDa51U0TsCLo= github.com/libp2p/go-libp2p-kad-dht v0.15.0/go.mod h1:rZtPxYu1TnHHz6n1RggdGrxUX/tA1C2/Wiw3ZMUDrU0= +github.com/libp2p/go-libp2p-kad-dht v0.16.1-0.20220811151450-6a2603e9927e/go.mod h1:zeE26Xo+PY7sS2AgkBQQcBnJEazMT26KGZLUFttl+rk= +github.com/libp2p/go-libp2p-kad-dht v0.17.0 h1:HWEjqjNVDuf8yuccuswGy1vYGzB0v4Z+yQ4DMDMSIqk= +github.com/libp2p/go-libp2p-kad-dht v0.17.0/go.mod h1:zeE26Xo+PY7sS2AgkBQQcBnJEazMT26KGZLUFttl+rk= github.com/libp2p/go-libp2p-kbucket v0.2.1/go.mod h1:/Rtu8tqbJ4WQ2KTCOMJhggMukOLNLNPY1EtEWWLxUvc= github.com/libp2p/go-libp2p-kbucket v0.3.1/go.mod h1:oyjT5O7tS9CQurok++ERgc46YLwEpuGoFq9ubvoUOio= github.com/libp2p/go-libp2p-kbucket v0.4.7 h1:spZAcgxifvFZHBD8tErvppbnNiKA5uokDu3CV7axu70= @@ -1334,8 +1350,9 @@ github.com/libp2p/go-libp2p-peerstore v0.2.7/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuD github.com/libp2p/go-libp2p-peerstore v0.2.8/go.mod h1:gGiPlXdz7mIHd2vfAsHzBNAMqSDkt2UBFwgcITgw1lA= github.com/libp2p/go-libp2p-peerstore v0.4.0/go.mod h1:rDJUFyzEWPpXpEwywkcTYYzDHlwza8riYMaUzaN6hX0= github.com/libp2p/go-libp2p-peerstore v0.6.0/go.mod h1:DGEmKdXrcYpK9Jha3sS7MhqYdInxJy84bIPtSu65bKc= -github.com/libp2p/go-libp2p-peerstore v0.7.0 h1:2iIUwok3vtmnWJTZeTeLgnBO6GbkXcwSRwgZHEKrQZs= github.com/libp2p/go-libp2p-peerstore v0.7.0/go.mod h1:cdUWTHro83vpg6unCpGUr8qJoX3e93Vy8o97u5ppIM0= +github.com/libp2p/go-libp2p-peerstore v0.7.1 h1:7FpALlqR+3+oOBXdzm3AVt0vjMYLW1b7jM03E4iEHlw= +github.com/libp2p/go-libp2p-peerstore v0.7.1/go.mod h1:cdUWTHro83vpg6unCpGUr8qJoX3e93Vy8o97u5ppIM0= github.com/libp2p/go-libp2p-pnet v0.2.0/go.mod h1:Qqvq6JH/oMZGwqs3N1Fqhv8NVhrdYcO0BW4wssv21LA= github.com/libp2p/go-libp2p-protocol v0.0.1/go.mod h1:Af9n4PiruirSDjHycM1QuiMi/1VZNHYcK8cLgFJLZ4s= github.com/libp2p/go-libp2p-protocol v0.1.0/go.mod h1:KQPHpAabB57XQxGrXCNvbL6UEXfQqUgC/1adR2Xtflk= @@ -1362,8 +1379,10 @@ github.com/libp2p/go-libp2p-record v0.1.3 h1:R27hoScIhQf/A8XJZ8lYpnqh9LatJ5YbHs2 github.com/libp2p/go-libp2p-record v0.1.3/go.mod h1:yNUff/adKIfPnYQXgp6FQmNu3gLJ6EMg7+/vv2+9pY4= github.com/libp2p/go-libp2p-resource-manager v0.1.5/go.mod h1:wJPNjeE4XQlxeidwqVY5G6DLOKqFK33u2n8blpl0I6Y= github.com/libp2p/go-libp2p-resource-manager v0.2.1/go.mod h1:K+eCkiapf+ey/LADO4TaMpMTP9/Qde/uLlrnRqV4PLQ= -github.com/libp2p/go-libp2p-resource-manager v0.3.0 h1:2+cYxUNi33tcydsVLt6K5Fv2E3OTiVeafltecAj15E0= github.com/libp2p/go-libp2p-resource-manager v0.3.0/go.mod h1:K+eCkiapf+ey/LADO4TaMpMTP9/Qde/uLlrnRqV4PLQ= +github.com/libp2p/go-libp2p-resource-manager v0.5.1/go.mod h1:CggtV6EZb+Y0dGh41q5ezO4udcVKyhcEFpydHD8EMe0= +github.com/libp2p/go-libp2p-resource-manager v0.5.3 h1:W8rG2abNBO52SRQYj24AvKmutTJZfoc1OrgzGQPwcRU= +github.com/libp2p/go-libp2p-resource-manager v0.5.3/go.mod h1:CggtV6EZb+Y0dGh41q5ezO4udcVKyhcEFpydHD8EMe0= github.com/libp2p/go-libp2p-routing v0.0.1/go.mod h1:N51q3yTr4Zdr7V8Jt2JIktVU+3xBBylx1MZeVA6t1Ys= github.com/libp2p/go-libp2p-routing v0.1.0/go.mod h1:zfLhI1RI8RLEzmEaaPwzonRvXeeSHddONWkcTcB54nE= github.com/libp2p/go-libp2p-routing-helpers v0.2.3 h1:xY61alxJ6PurSi+MXbywZpelvuU4U4p/gPTxjqCqTzY= @@ -1405,8 +1424,9 @@ github.com/libp2p/go-libp2p-testing v0.6.0/go.mod h1:QBk8fqIL1XNcno/l3/hhaIEn4aL github.com/libp2p/go-libp2p-testing v0.7.0/go.mod h1:OLbdn9DbgdMwv00v+tlp1l3oe2Cl+FAjoWIA2pa0X6E= github.com/libp2p/go-libp2p-testing v0.8.0/go.mod h1:gRdsNxQSxAZowTgcLY7CC33xPmleZzoBpqSYbWenqPc= github.com/libp2p/go-libp2p-testing v0.9.0/go.mod h1:Td7kbdkWqYTJYQGTwzlgXwaqldraIanyjuRiAbK/XQU= -github.com/libp2p/go-libp2p-testing v0.9.2 h1:dCpODRtRaDZKF8HXT9qqqgON+OMEB423Knrgeod8j84= github.com/libp2p/go-libp2p-testing v0.9.2/go.mod h1:Td7kbdkWqYTJYQGTwzlgXwaqldraIanyjuRiAbK/XQU= +github.com/libp2p/go-libp2p-testing v0.11.0 h1:+R7FRl/U3Y00neyBSM2qgDzqz3HkWH24U9nMlascHL4= +github.com/libp2p/go-libp2p-testing v0.11.0/go.mod h1:qG4sF27dfKFoK9KlVzK2y52LQKhp0VEmLjV5aDqr1Hg= github.com/libp2p/go-libp2p-tls v0.1.3/go.mod h1:wZfuewxOndz5RTnCAxFliGjvYSDA40sKitV4c50uI1M= github.com/libp2p/go-libp2p-tls v0.3.0/go.mod h1:fwF5X6PWGxm6IDRwF3V8AVCCj/hOd5oFlg+wo2FxJDY= github.com/libp2p/go-libp2p-tls v0.3.1/go.mod h1:fwF5X6PWGxm6IDRwF3V8AVCCj/hOd5oFlg+wo2FxJDY= @@ -1428,6 +1448,7 @@ github.com/libp2p/go-libp2p-transport-upgrader v0.6.0/go.mod h1:1e07y1ZSZdHo9HPb github.com/libp2p/go-libp2p-transport-upgrader v0.7.0/go.mod h1:GIR2aTRp1J5yjVlkUoFqMkdobfob6RnAwYg/RZPhrzg= github.com/libp2p/go-libp2p-transport-upgrader v0.7.1/go.mod h1:GIR2aTRp1J5yjVlkUoFqMkdobfob6RnAwYg/RZPhrzg= github.com/libp2p/go-libp2p-xor v0.0.0-20210714161855-5c005aca55db/go.mod h1:LSTM5yRnjGZbWNTA/hRwq2gGFrvRIbQJscoIL/u6InY= +github.com/libp2p/go-libp2p-xor v0.1.0/go.mod h1:LSTM5yRnjGZbWNTA/hRwq2gGFrvRIbQJscoIL/u6InY= github.com/libp2p/go-libp2p-yamux v0.1.2/go.mod h1:xUoV/RmYkg6BW/qGxA9XJyg+HzXFYkeXbnhjmnYzKp8= github.com/libp2p/go-libp2p-yamux v0.1.3/go.mod h1:VGSQVrqkh6y4nm0189qqxMtvyBft44MOYYPpYKXiVt4= github.com/libp2p/go-libp2p-yamux v0.2.0/go.mod h1:Db2gU+XfLpm6E4rG5uGCFX6uXA8MEXOxFcRoXUODaK8= @@ -1461,6 +1482,7 @@ github.com/libp2p/go-mplex v0.2.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ github.com/libp2p/go-mplex v0.3.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ= github.com/libp2p/go-mplex v0.4.0/go.mod h1:y26Lx+wNVtMYMaPu300Cbot5LkEZ4tJaNYeHeT9dh6E= github.com/libp2p/go-mplex v0.6.0/go.mod h1:y26Lx+wNVtMYMaPu300Cbot5LkEZ4tJaNYeHeT9dh6E= +github.com/libp2p/go-mplex v0.7.0 h1:BDhFZdlk5tbr0oyFq/xv/NPGfjbnrsDam1EvutpBDbY= github.com/libp2p/go-mplex v0.7.0/go.mod h1:rW8ThnRcYWft/Jb2jeORBmPd6xuG3dGxWN/W168L9EU= github.com/libp2p/go-msgio v0.0.2/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= github.com/libp2p/go-msgio v0.0.3/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= @@ -1557,8 +1579,9 @@ github.com/lucas-clemente/quic-go v0.23.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2 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.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/lucas-clemente/quic-go v0.28.0 h1:9eXVRgIkMQQyiyorz/dAaOYIx3TFzXsIFkNFz4cxuJM= +github.com/lucas-clemente/quic-go v0.28.0/go.mod h1:oGz5DKK41cJt5+773+BSO9BXDsREY4HLf7+0odGAPO0= 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/lufia/iostat v1.1.0/go.mod h1:rEPNA0xXgjHQjuI5Cy05sLlS2oRcSlWHRLrvh/AQ+Pg= @@ -1585,11 +1608,15 @@ github.com/marten-seemann/qtls-go1-16 v0.1.5 h1:o9JrYPPco/Nukd/HpOHMHZoBDXQqoNtU github.com/marten-seemann/qtls-go1-16 v0.1.5/go.mod h1:gNpI2Ol+lRS3WwSOtIUUtRwZEQMXjYK+dQSBFbethAk= github.com/marten-seemann/qtls-go1-17 v0.1.0-rc.1/go.mod h1:fz4HIxByo+LlWcreM4CZOYNuz3taBQ8rN2X6FqvaWo8= github.com/marten-seemann/qtls-go1-17 v0.1.0/go.mod h1:fz4HIxByo+LlWcreM4CZOYNuz3taBQ8rN2X6FqvaWo8= -github.com/marten-seemann/qtls-go1-17 v0.1.1 h1:DQjHPq+aOzUeh9/lixAGunn6rIOQyWChPSI4+hgW7jc= github.com/marten-seemann/qtls-go1-17 v0.1.1/go.mod h1:C2ekUKcDdz9SDWxec1N/MvcXBpaX9l3Nx67XaR84L5s= +github.com/marten-seemann/qtls-go1-17 v0.1.2 h1:JADBlm0LYiVbuSySCHeY863dNkcpMmDR7s0bLKJeYlQ= +github.com/marten-seemann/qtls-go1-17 v0.1.2/go.mod h1:C2ekUKcDdz9SDWxec1N/MvcXBpaX9l3Nx67XaR84L5s= github.com/marten-seemann/qtls-go1-18 v0.1.0-beta.1/go.mod h1:PUhIQk19LoFt2174H4+an8TYvWOGjb/hHwphBeaDHwI= -github.com/marten-seemann/qtls-go1-18 v0.1.1 h1:qp7p7XXUFL7fpBvSS1sWD+uSqPvzNQK43DH+/qEkj0Y= github.com/marten-seemann/qtls-go1-18 v0.1.1/go.mod h1:mJttiymBAByA49mhlNZZGrH5u1uXYZJ+RW28Py7f4m4= +github.com/marten-seemann/qtls-go1-18 v0.1.2 h1:JH6jmzbduz0ITVQ7ShevK10Av5+jBEKAHMntXmIV7kM= +github.com/marten-seemann/qtls-go1-18 v0.1.2/go.mod h1:mJttiymBAByA49mhlNZZGrH5u1uXYZJ+RW28Py7f4m4= +github.com/marten-seemann/qtls-go1-19 v0.1.0-beta.1 h1:7m/WlWcSROrcK5NxuXaxYD32BZqe/LEEnBrWcH/cOqQ= +github.com/marten-seemann/qtls-go1-19 v0.1.0-beta.1/go.mod h1:5HTDWtVudo/WFsHKRNuOhWlbdjrfs5JHrYb0wIJqGpI= github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk= github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= @@ -1638,8 +1665,9 @@ github.com/miekg/dns v1.1.28/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7 github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= -github.com/miekg/dns v1.1.48 h1:Ucfr7IIVyMBz4lRE8qmGUuZ4Wt3/ZGu9hmcMT3Uu4tQ= github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= +github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= +github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c h1:bzE/A84HN25pxAuk9Eej1Kz9OUelF97nAc82bDquQI8= github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b h1:z78hV3sbSMAUoyUMM0I83AUIT6Hu17AWfgjzIbtrYFc= @@ -1703,8 +1731,9 @@ github.com/multiformats/go-multiaddr v0.3.1/go.mod h1:uPbspcUPd5AfaP6ql3ujFY+QWz github.com/multiformats/go-multiaddr v0.3.3/go.mod h1:lCKNGP1EQ1eZ35Za2wlqnabm9xQkib3fyB+nZXHLag0= github.com/multiformats/go-multiaddr v0.4.0/go.mod h1:YcpyLH8ZPudLxQlemYBPhSm0/oCXAT8Z4mzFpyoPyRc= github.com/multiformats/go-multiaddr v0.4.1/go.mod h1:3afI9HfVW8csiF8UZqtpYRiDyew8pRX7qLIGHu9FLuM= -github.com/multiformats/go-multiaddr v0.5.0 h1:i/JuOoVg4szYQ4YEzDGtb2h0o8M7CG/Yq6cGlcjWZpM= github.com/multiformats/go-multiaddr v0.5.0/go.mod h1:3KAxNkUqLTJ20AAwN4XVX4kZar+bR+gh4zgbfr3SNug= +github.com/multiformats/go-multiaddr v0.6.0 h1:qMnoOPj2s8xxPU5kZ57Cqdr0hHhARz7mFsPMIiYNqzg= +github.com/multiformats/go-multiaddr v0.6.0/go.mod h1:F4IpaKZuPP360tOMn2Tpyu0At8w23aRyVqeK0DbFeGM= github.com/multiformats/go-multiaddr-dns v0.0.1/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= github.com/multiformats/go-multiaddr-dns v0.0.2/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= github.com/multiformats/go-multiaddr-dns v0.0.3/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= @@ -1725,8 +1754,9 @@ github.com/multiformats/go-multiaddr-net v0.1.4/go.mod h1:ilNnaM9HbmVFqsb/qcNysj github.com/multiformats/go-multiaddr-net v0.1.5/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= github.com/multiformats/go-multiaddr-net v0.2.0/go.mod h1:gGdH3UXny6U3cKKYCvpXI5rnK7YaOIEOPVDI9tsJbEA= github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs= -github.com/multiformats/go-multibase v0.0.3 h1:l/B6bJDQjvQ5G52jw4QGSYeOTZoAwIO77RblWplfIqk= github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= +github.com/multiformats/go-multibase v0.1.1 h1:3ASCDsuLX8+j4kx58qnJ4YFq/JWTJpCyDW27ztsVTOI= +github.com/multiformats/go-multibase v0.1.1/go.mod h1:ZEjHE+IsUrgp5mhlEAYjMtZwK1k4haNkcaPg9aoe1a8= github.com/multiformats/go-multicodec v0.2.0/go.mod h1:/y4YVwkfMyry5kFbMTbLJKErhycTIftytRV+llXdyS4= github.com/multiformats/go-multicodec v0.3.0/go.mod h1:qGGaQmioCDh+TeFOnxrbU0DaIPw8yFgAZgFG0V7p1qQ= github.com/multiformats/go-multicodec v0.3.1-0.20210902112759-1539a079fd61/go.mod h1:1Hj/eHRaVWSXiSNNfcEPcwZleTmdNP81xlxDLnWU9GQ= @@ -1911,8 +1941,9 @@ github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9 github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.33.0 h1:rHgav/0a6+uYgGdNt3jwz8FNSesO/Hsang3O0T9A5SE= github.com/prometheus/common v0.33.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= +github.com/prometheus/common v0.35.0 h1:Eyr+Pw2VymWejHqCugNaQXkAi6KayVNxaHeu6khmFBE= +github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= github.com/prometheus/node_exporter v1.0.0-rc.0.0.20200428091818-01054558c289/go.mod h1:FGbBv5OPKjch+jNUJmEQpMZytIdyW0NdBtWFcfSKusc= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1934,8 +1965,9 @@ github.com/prometheus/statsd_exporter v0.21.0/go.mod h1:rbT83sZq2V+p73lHhPZfMc3M github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/raulk/clock v1.1.0 h1:dpb29+UKMbLqiU/jqIJptgLR1nn23HLgMY0sTCDza5Y= github.com/raulk/clock v1.1.0/go.mod h1:3MpVxdZ/ODBQDxbN+kzshf5OSZwPjtMDx6BBXBmOeY0= -github.com/raulk/go-watchdog v1.2.0 h1:konN75pw2BMmZ+AfuAm5rtFsWcJpKF3m02rKituuXNo= github.com/raulk/go-watchdog v1.2.0/go.mod h1:lzSbAl5sh4rtI8tYHU01BWIDzgzqaQLj6RcA1i4mlqI= +github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= +github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= @@ -2035,8 +2067,9 @@ github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1Sd github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/streadway/handy v0.0.0-20200128134331-0f66f006fb2e/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -2044,11 +2077,13 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/texttheater/golang-levenshtein v0.0.0-20180516184445-d188e65d659e/go.mod h1:XDKHRm5ThF8YJjx001LtgelzsoaEcvnA7lVWz9EeX3g= github.com/tidwall/gjson v1.6.0 h1:9VEQWz6LLMUsUl6PueE49ir4Ka6CzLymOAZDxpFsTDc= @@ -2198,6 +2233,7 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= go.opentelemetry.io/otel v1.2.0/go.mod h1:aT17Fk0Z1Nor9e0uisf98LrntPGMnk4frBO9+dkf69I= go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= +go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM= go.opentelemetry.io/otel v1.9.0 h1:8WZNQFIB2a71LnANS9JeyidJKKGOOremcUtb/OtHISw= go.opentelemetry.io/otel v1.9.0/go.mod h1:np4EoPGzoPs3O67xUVNoPPcmSvsfOxNlNA4F4AC+0Eo= @@ -2224,6 +2260,7 @@ go.opentelemetry.io/otel/sdk/metric v0.31.0/go.mod h1:fl0SmNnX9mN9xgU6OLYLMBMrNA go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= go.opentelemetry.io/otel/trace v1.2.0/go.mod h1:N5FLswTubnxKxOJHM7XZC074qpeEdLy3CgAVsdMucK0= go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= +go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= go.opentelemetry.io/otel/trace v1.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4= go.opentelemetry.io/otel/trace v1.9.0 h1:oZaCNJUjWcg60VXWee8lJKlqhPbXAPB51URuR47pQYc= go.opentelemetry.io/otel/trace v1.9.0/go.mod h1:2737Q0MuG8q1uILYm2YYVkAyLtOofiTNGg6VODnOiPo= @@ -2338,8 +2375,9 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20210615023648-acb5c1269671/go.mod h1:DVyR6MI7P4kEQgvZJSj1fQGrWIi2RzIrfYWycwheUAc= golang.org/x/exp v0.0.0-20210714144626-1041f73d31d8/go.mod h1:DVyR6MI7P4kEQgvZJSj1fQGrWIi2RzIrfYWycwheUAc= -golang.org/x/exp v0.0.0-20210715201039-d37aa40e8013 h1:Jp57DBw4K7mimZNA3F9f7CndVcUt4kJjmyJf2rzJHoI= golang.org/x/exp v0.0.0-20210715201039-d37aa40e8013/go.mod h1:DVyR6MI7P4kEQgvZJSj1fQGrWIi2RzIrfYWycwheUAc= +golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5 h1:rxKZ2gOnYxjfmakvUUqh9Gyb6KXfrj7JWTxORTYqb0E= +golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -2368,6 +2406,7 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20211013180041-c96bc1413d57/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= @@ -2417,6 +2456,7 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -2440,8 +2480,11 @@ golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220418201149-a630d4f3e7a2 h1:6mzvA99KwZxbOrxww4EvWVQUnN1+xEu9tafK5ZxkYeA= golang.org/x/net v0.0.0-20220418201149-a630d4f3e7a2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220630215102-69896b714898 h1:K7wO6V1IrczY9QOQ2WkVpw4JQSwCd52UsxVEirZUfiw= +golang.org/x/net v0.0.0-20220630215102-69896b714898/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -2542,6 +2585,7 @@ golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200812155832-6a926be9bd1d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200926100807-9d91bd62050c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2582,8 +2626,9 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220422013727-9388b58f7150 h1:xHms4gcpe1YE7A3yIllJXP16CMAGuqwO2lX1mTyyRRc= golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -2674,6 +2719,7 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.8-0.20211029000441-d6a9af8af023/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.11 h1:loJ25fNOEhSXfHrpoGj91eCUThwdNX6u24rO1xnNteY= @@ -2682,8 +2728,9 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f h1:GGU+dLjvlC3qDwqYgL6UgRmHXhOOgns0bZu2Ty5mm6U= golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= @@ -2834,8 +2881,9 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0 h1:hjy8E9ON/egN1tAYqKb61G10WtihqetD4sz2H+8nIeA= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= diff --git a/node/builder.go b/node/builder.go index 776107ace..7e709ee83 100644 --- a/node/builder.go +++ b/node/builder.go @@ -513,6 +513,7 @@ func ConfigBoost(cfg *config.Boost) Option { Override(new(mktsdagstore.MinerAPI), lotus_modules.NewMinerAPI(cfg.DAGStore)), Override(DAGStoreKey, lotus_modules.DAGStore(cfg.DAGStore)), Override(new(dagstore.Interface), From(new(*dagstore.DAGStore))), + Override(new(dtypes.IndexBackedBlockstore), modules.NewIndexBackedBlockstore), // Lotus Markets (retrieval) Override(new(mktsdagstore.SectorAccessor), sectoraccessor.NewSectorAccessor), diff --git a/node/config/doc_gen.go b/node/config/doc_gen.go index d19bdc54e..7f15105e0 100644 --- a/node/config/doc_gen.go +++ b/node/config/doc_gen.go @@ -1250,6 +1250,13 @@ This parameter is ONLY applicable if the retrieval pricing policy strategy has b Comment: ``, }, + { + Name: "LocalWorkerName", + Type: "string", + + Comment: `LocalWorkerName specifies a custom name for the builtin worker. +If set to an empty string (default) os hostname will be used`, + }, { Name: "Assigner", Type: "string", @@ -1505,6 +1512,30 @@ the compaction boundary; default is 0.`, A value of 0 disables, while a value 1 will do full GC in every compaction. Default is 20 (about once a week).`, }, + { + Name: "EnableColdStoreAutoPrune", + Type: "bool", + + Comment: `EnableColdStoreAutoPrune turns on compaction of the cold store i.e. pruning +where hotstore compaction occurs every finality epochs pruning happens every 3 finalities +Default is false`, + }, + { + Name: "ColdStoreFullGCFrequency", + Type: "uint64", + + Comment: `ColdStoreFullGCFrequency specifies how often to performa a full (moving) GC on the coldstore. +Only applies if auto prune is enabled. A value of 0 disables while a value of 1 will do +full GC in every prune. +Default is 7 (about once every a week)`, + }, + { + Name: "ColdStoreRetention", + Type: "int64", + + Comment: `ColdStoreRetention specifies the retention policy for data reachable from the chain, in +finalities beyond the compaction boundary, default is 0, -1 retains everything`, + }, }, "lotus_config.StorageMiner": []DocField{ { diff --git a/node/impl/boost.go b/node/impl/boost.go index e6fe880e8..49d1188bc 100644 --- a/node/impl/boost.go +++ b/node/impl/boost.go @@ -17,6 +17,7 @@ import ( "github.com/filecoin-project/boost/api" "github.com/filecoin-project/boost/gql" "github.com/filecoin-project/boost/indexprovider" + "github.com/filecoin-project/boost/node/modules/dtypes" "github.com/filecoin-project/boost/sealingpipeline" "github.com/filecoin-project/boost/storagemarket" "github.com/filecoin-project/boost/storagemarket/types" @@ -49,9 +50,9 @@ type BoostAPI struct { Host host.Host - DAGStore *dagstore.DAGStore - DagStoreWrapper *mktsdagstore.Wrapper - + DAGStore *dagstore.DAGStore + DagStoreWrapper *mktsdagstore.Wrapper + IndexBackedBlockstore dtypes.IndexBackedBlockstore // Boost StorageProvider *storagemarket.Provider IndexProvider *indexprovider.Wrapper @@ -482,3 +483,19 @@ func (sm *BoostAPI) BoostDagstoreDestroyShard(ctx context.Context, key string) e } return nil } + +func (sm *BoostAPI) BlockstoreGet(ctx context.Context, c cid.Cid) ([]byte, error) { + blk, err := sm.IndexBackedBlockstore.Get(ctx, c) + if err != nil { + return nil, err + } + return blk.RawData(), nil +} + +func (sm *BoostAPI) BlockstoreHas(ctx context.Context, c cid.Cid) (bool, error) { + return sm.IndexBackedBlockstore.Has(ctx, c) +} + +func (sm *BoostAPI) BlockstoreGetSize(ctx context.Context, c cid.Cid) (int, error) { + return sm.IndexBackedBlockstore.GetSize(ctx, c) +} diff --git a/node/modules/dtypes/storage.go b/node/modules/dtypes/storage.go index e4bf96d86..fc4f72fcc 100644 --- a/node/modules/dtypes/storage.go +++ b/node/modules/dtypes/storage.go @@ -10,6 +10,7 @@ import ( "github.com/filecoin-project/go-fil-markets/piecestore" "github.com/filecoin-project/go-fil-markets/storagemarket/impl/requestvalidation" + ipfsblockstore "github.com/ipfs/go-ipfs-blockstore" "github.com/filecoin-project/lotus/blockstore" "github.com/filecoin-project/lotus/node/repo/imports" @@ -58,6 +59,10 @@ type ( // holds a 'false' for that block), the process should signal so by calling // blockstore.AllCaches.Dirty(cid). ExposedBlockstore blockstore.Blockstore + + // IndexBackedBlockstore is an abstraction on top of the DAGStore that provides + // access to any CID in a free or unsealed sector + IndexBackedBlockstore ipfsblockstore.Blockstore ) type ChainBitswap exchange.Interface diff --git a/node/modules/rcmgr.go b/node/modules/rcmgr.go index dce8f3cb2..d6cf07882 100644 --- a/node/modules/rcmgr.go +++ b/node/modules/rcmgr.go @@ -16,7 +16,10 @@ import ( "github.com/libp2p/go-libp2p-core/peer" "github.com/libp2p/go-libp2p-core/protocol" rcmgr "github.com/libp2p/go-libp2p-resource-manager" + "github.com/libp2p/go-libp2p-resource-manager/obs" + rcmgrObs "github.com/libp2p/go-libp2p-resource-manager/obs" "go.opencensus.io/stats" + "go.opencensus.io/stats/view" "go.opencensus.io/tag" "go.uber.org/fx" ) @@ -42,36 +45,49 @@ func ResourceManager(connMgrHi uint) func(lc fx.Lifecycle, repo repo.LockedRepo) // Adjust default limits // - give it more memory, up to 4G, min of 1G - // - if maxconns are too high, adjust Conn/FD/Stream limits - defaultLimits := rcmgr.DefaultLimits.WithSystemMemory(.125, 1<<30, 4<<30) + // - if maxconns are too high, adjust Conn/FD/Stream defaultLimits + defaultLimits := rcmgr.DefaultLimits + + // TODO: also set appropriate default limits for lotus protocols + libp2p.SetDefaultServiceLimits(&defaultLimits) + + // Minimum 1GB of memory + defaultLimits.SystemBaseLimit.Memory = 1 << 30 + // For every extra 1GB of memory we have available, increase our limit by 1GiB + defaultLimits.SystemLimitIncrease.Memory = 1 << 30 + defaultLimitConfig := defaultLimits.AutoScale() + if defaultLimitConfig.System.Memory > 4<<30 { + // Cap our memory limit + defaultLimitConfig.System.Memory = 4 << 30 + } + maxconns := int(connMgrHi) - if 2*maxconns > defaultLimits.SystemBaseLimit.ConnsInbound { + if 2*maxconns > defaultLimitConfig.System.ConnsInbound { // adjust conns to 2x to allow for two conns per peer (TCP+QUIC) - defaultLimits.SystemBaseLimit.ConnsInbound = logScale(2 * maxconns) - defaultLimits.SystemBaseLimit.ConnsOutbound = logScale(2 * maxconns) - defaultLimits.SystemBaseLimit.Conns = logScale(4 * maxconns) + defaultLimitConfig.System.ConnsInbound = logScale(2 * maxconns) + defaultLimitConfig.System.ConnsOutbound = logScale(2 * maxconns) + defaultLimitConfig.System.Conns = logScale(4 * maxconns) - defaultLimits.SystemBaseLimit.StreamsInbound = logScale(16 * maxconns) - defaultLimits.SystemBaseLimit.StreamsOutbound = logScale(64 * maxconns) - defaultLimits.SystemBaseLimit.Streams = logScale(64 * maxconns) + defaultLimitConfig.System.StreamsInbound = logScale(16 * maxconns) + defaultLimitConfig.System.StreamsOutbound = logScale(64 * maxconns) + defaultLimitConfig.System.Streams = logScale(64 * maxconns) - if 2*maxconns > defaultLimits.SystemBaseLimit.FD { - defaultLimits.SystemBaseLimit.FD = logScale(2 * maxconns) + if 2*maxconns > defaultLimitConfig.System.FD { + defaultLimitConfig.System.FD = logScale(2 * maxconns) } + defaultLimitConfig.ServiceDefault.StreamsInbound = logScale(8 * maxconns) + defaultLimitConfig.ServiceDefault.StreamsOutbound = logScale(32 * maxconns) + defaultLimitConfig.ServiceDefault.Streams = logScale(32 * maxconns) - defaultLimits.ServiceBaseLimit.StreamsInbound = logScale(8 * maxconns) - defaultLimits.ServiceBaseLimit.StreamsOutbound = logScale(32 * maxconns) - defaultLimits.ServiceBaseLimit.Streams = logScale(32 * maxconns) - - defaultLimits.ProtocolBaseLimit.StreamsInbound = logScale(8 * maxconns) - defaultLimits.ProtocolBaseLimit.StreamsOutbound = logScale(32 * maxconns) - defaultLimits.ProtocolBaseLimit.Streams = logScale(32 * maxconns) + defaultLimitConfig.ProtocolDefault.StreamsInbound = logScale(8 * maxconns) + defaultLimitConfig.ProtocolDefault.StreamsOutbound = logScale(32 * maxconns) + defaultLimitConfig.ProtocolDefault.Streams = logScale(32 * maxconns) log.Info("adjusted default resource manager limits") } // initialize - var limiter *rcmgr.BasicLimiter + var limiter rcmgr.Limiter var opts []rcmgr.Option repoPath := repo.Path() @@ -82,22 +98,29 @@ func ResourceManager(connMgrHi uint) func(lc fx.Lifecycle, repo repo.LockedRepo) switch { case err == nil: defer limitsIn.Close() //nolint:errcheck - limiter, err = rcmgr.NewLimiterFromJSON(limitsIn, defaultLimits) + limiter, err = rcmgr.NewLimiterFromJSON(limitsIn, defaultLimitConfig) if err != nil { return nil, fmt.Errorf("error parsing limit file: %w", err) } case errors.Is(err, os.ErrNotExist): - limiter = rcmgr.NewStaticLimiter(defaultLimits) + limiter = rcmgr.NewFixedLimiter(defaultLimitConfig) default: return nil, err } - // TODO: also set appropriate default limits for lotus protocols - libp2p.SetDefaultServiceLimits(limiter) + str, err := rcmgrObs.NewStatsTraceReporter() + if err != nil { + return nil, fmt.Errorf("error creating resource manager stats reporter: %w", err) + } + err = view.Register(obs.DefaultViews...) + if err != nil { + return nil, fmt.Errorf("error registering rcmgr metrics: %w", err) + } - opts = append(opts, rcmgr.WithMetrics(rcmgrMetrics{})) + // Metrics + opts = append(opts, rcmgr.WithMetrics(rcmgrMetrics{}), rcmgr.WithTraceReporter(str)) if os.Getenv("LOTUS_DEBUG_RCMGR") != "" { debugPath := filepath.Join(repoPath, "debug") diff --git a/node/modules/storageminer.go b/node/modules/storageminer.go index 6b21baca7..8c0788817 100644 --- a/node/modules/storageminer.go +++ b/node/modules/storageminer.go @@ -24,10 +24,13 @@ import ( "github.com/filecoin-project/boost/tracing" "github.com/filecoin-project/boost/transport/httptransport" "github.com/filecoin-project/dagstore" + "github.com/filecoin-project/dagstore/indexbs" + "github.com/filecoin-project/dagstore/shard" "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-fil-markets/retrievalmarket" "github.com/filecoin-project/go-fil-markets/shared" lotus_storagemarket "github.com/filecoin-project/go-fil-markets/storagemarket" + "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/crypto" "github.com/filecoin-project/lotus/api/v1api" ctypes "github.com/filecoin-project/lotus/chain/types" @@ -442,6 +445,74 @@ func NewGraphqlServer(cfg *config.Boost) func(lc fx.Lifecycle, r repo.LockedRepo } } +func NewIndexBackedBlockstore(dagst dagstore.Interface, ps lotus_dtypes.ProviderPieceStore, sa retrievalmarket.SectorAccessor, rp retrievalmarket.RetrievalProvider, h host.Host) (dtypes.IndexBackedBlockstore, error) { + sf := indexbs.ShardSelectorF(func(c cid.Cid, shards []shard.Key) (shard.Key, error) { + for _, sk := range shards { + // parse piece CID + pieceCid, err := cid.Parse(sk.String()) + if err != nil { + return shard.Key{}, fmt.Errorf("failed to parse cid") + } + // read piece info from piece store + pieceInfo, err := ps.GetPieceInfo(pieceCid) + if err != nil { + return shard.Key{}, fmt.Errorf("failed to get piece info: %w", err) + } + + // check if piece is in unsealed sector + isUnsealed := false + for _, di := range pieceInfo.Deals { + isUnsealed, err = sa.IsUnsealed(context.TODO(), di.SectorID, di.Offset.Unpadded(), di.Length.Unpadded()) + if err != nil { + log.Errorf("failed to find out if sector %d is unsealed, err=%s", di.SectorID, err) + continue + } + if isUnsealed { + break + } + } + + // sealed sector, skip + if !isUnsealed { + continue + } + + // The piece is in an unsealed sector + // Is it marked for free retrieval ? + // we don't pass the payload cid so we can potentially cache on a piece cid basis + input := retrievalmarket.PricingInput{ + // piece from which the payload will be retrieved + PieceCID: pieceInfo.PieceCID, + Unsealed: true, + } + + var dealsIds []abi.DealID + for _, d := range pieceInfo.Deals { + dealsIds = append(dealsIds, d.DealID) + } + + ask, err := rp.GetDynamicAsk(context.TODO(), input, dealsIds) + if err != nil { + return shard.Key{}, fmt.Errorf("failed to get retrieval ask: %w", err) + } + + // if piece is free we found a match + // otherwise, go to the next shard + if ask.PricePerByte.NilOrZero() { + return sk, nil + } + } + + return shard.Key{}, indexbs.ErrNoShardSelected + }) + + rbs, err := indexbs.NewIndexBackedBlockstore(dagst, sf, 100) + if err != nil { + return nil, fmt.Errorf("failed to create index backed blockstore: %w", err) + } + return dtypes.IndexBackedBlockstore(rbs), nil +} + func NewTracing(cfg *config.Boost) func(lc fx.Lifecycle) (*tracing.Tracing, error) { return func(lc fx.Lifecycle) (*tracing.Tracing, error) { if cfg.Tracing.Enabled {