From 8c5fefad660390dd3f61094f03a4309461a7d6e5 Mon Sep 17 00:00:00 2001 From: Adin Schmahmann Date: Wed, 4 May 2022 16:23:16 -0400 Subject: [PATCH 01/25] Release v0.13.0-rc1 --- version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.go b/version.go index 0018a056e..9bdf2c6fe 100644 --- a/version.go +++ b/version.go @@ -11,7 +11,7 @@ import ( var CurrentCommit string // CurrentVersionNumber is the current application's version literal -const CurrentVersionNumber = "0.13.0-dev" +const CurrentVersionNumber = "0.13.0-rc1" const ApiVersion = "/go-ipfs/" + CurrentVersionNumber + "/" From f6586afa71727e15a92f13b16c2ba48d8939a963 Mon Sep 17 00:00:00 2001 From: Adin Schmahmann Date: Wed, 4 May 2022 18:47:13 -0400 Subject: [PATCH 02/25] fix: use path instead of filepath for asset embeds to support Windows (cherry picked from commit 1299bcb3fd4f6846dabf46182c8c7b712bae971d) --- assets/assets.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/assets/assets.go b/assets/assets.go index dea00e289..ff87eec12 100644 --- a/assets/assets.go +++ b/assets/assets.go @@ -6,7 +6,7 @@ import ( "fmt" "io" "io/fs" - "path/filepath" + gopath "path" "strconv" "github.com/ipfs/go-ipfs/core" @@ -27,13 +27,13 @@ var AssetHash string // initDocPaths lists the paths for the docs we want to seed during --init var initDocPaths = []string{ - filepath.Join("init-doc", "about"), - filepath.Join("init-doc", "readme"), - filepath.Join("init-doc", "help"), - filepath.Join("init-doc", "contact"), - filepath.Join("init-doc", "security-notes"), - filepath.Join("init-doc", "quick-start"), - filepath.Join("init-doc", "ping"), + gopath.Join("init-doc", "about"), + gopath.Join("init-doc", "readme"), + gopath.Join("init-doc", "help"), + gopath.Join("init-doc", "contact"), + gopath.Join("init-doc", "security-notes"), + gopath.Join("init-doc", "quick-start"), + gopath.Join("init-doc", "ping"), } func init() { @@ -91,7 +91,7 @@ func addAssetList(nd *core.IpfsNode, l []string) (cid.Cid, error) { return cid.Cid{}, err } - fname := filepath.Base(p) + fname := gopath.Base(p) basePath, err = api.Object().AddLink(nd.Context(), basePath, fname, fp) if err != nil { From 62c64c1566d14c946c3702047b5118082be71ffb Mon Sep 17 00:00:00 2001 From: Daniel Norman <1992255+2color@users.noreply.github.com> Date: Fri, 6 May 2022 14:02:38 +0200 Subject: [PATCH 03/25] Add instructions to resolve repo migration error (#8946) Fixes #8779 Co-authored-by: Daniel N <2color@users.noreply.github.com> (cherry picked from commit d476f2d6dab6dc4c89541d49f4a417576be3c0f6) --- repo/fsrepo/fsrepo.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repo/fsrepo/fsrepo.go b/repo/fsrepo/fsrepo.go index 7ad634c84..c35d5458d 100644 --- a/repo/fsrepo/fsrepo.go +++ b/repo/fsrepo/fsrepo.go @@ -50,7 +50,7 @@ See https://github.com/ipfs/fs-repo-migrations/blob/master/run.md for details.` var ( ErrNoVersion = errors.New("no version file found, please run 0-to-1 migration tool.\n" + migrationInstructions) ErrOldRepo = errors.New("ipfs repo found in old '~/.go-ipfs' location, please run migration tool.\n" + migrationInstructions) - ErrNeedMigration = errors.New("ipfs repo needs migration") + ErrNeedMigration = errors.New("ipfs repo needs migration, please run migration tool.\n" + migrationInstructions) ) type NoRepoError struct { From 51fc526a543f46cac240fa01f4c8f6752343a51b Mon Sep 17 00:00:00 2001 From: Antonio Navarro Perez Date: Fri, 6 May 2022 17:13:24 +0200 Subject: [PATCH 04/25] Merge pull request #8934 from ajnavarro/fix/install-on-mac-m1-monterey (cherry picked from commit ae15e188949ca94afd80ef9c8f9e9af0fbb7cc0a) --- cmd/ipfs/dist/install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/ipfs/dist/install.sh b/cmd/ipfs/dist/install.sh index 9f673d05d..470927159 100755 --- a/cmd/ipfs/dist/install.sh +++ b/cmd/ipfs/dist/install.sh @@ -15,6 +15,7 @@ is_write_perm_missing="" for raw in $binpaths; do # Expand the $HOME variable. binpath=$(eval echo "$raw") + mkdir -p "$binpath" if mv "$bin" "$binpath/ipfs" ; then echo "Moved $bin to $binpath" exit 0 From 38c5dba662d790aa7d10aec09f97d5647a480722 Mon Sep 17 00:00:00 2001 From: Lucas Molas Date: Fri, 6 May 2022 12:23:36 -0300 Subject: [PATCH 05/25] Merge pull request #8947 from RubenKelevra/patch-7 'pin rm' helptext: rewrite description as object is not removed from local storage (immediately) (cherry picked from commit 831c33925f5096b8daf96e074658a588ba724a2a) --- core/commands/pin/pin.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/commands/pin/pin.go b/core/commands/pin/pin.go index 3a9caa031..0344932f6 100644 --- a/core/commands/pin/pin.go +++ b/core/commands/pin/pin.go @@ -200,7 +200,7 @@ func pinAddMany(ctx context.Context, api coreiface.CoreAPI, enc cidenc.Encoder, var rmPinCmd = &cmds.Command{ Helptext: cmds.HelpText{ - Tagline: "Remove pinned objects from local storage.", + Tagline: "Remove object from pin-list.", ShortDescription: ` Removes the pin from the given object allowing it to be garbage collected if needed. (By default, recursively. Use -r=false for direct pins.) From a7048c45515f78a6c4f018fb0f3b9bd65ad60faa Mon Sep 17 00:00:00 2001 From: T Mo <91539446+TMoMoreau@users.noreply.github.com> Date: Fri, 6 May 2022 11:49:15 -0400 Subject: [PATCH 06/25] pubsub multibase encoding (#8933) * pubsub multibase encoding Adds clarification for pubsub multibase encoding over HTTP RPC for issue https://github.com/ipfs/ipfs-docs/issues/1007 * Grammatical change * Moved period (cherry picked from commit 9a84a4f06e89859e1c87523d604671a2db80f30f) --- core/commands/pubsub.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/commands/pubsub.go b/core/commands/pubsub.go index 570f850d0..e36b3b185 100644 --- a/core/commands/pubsub.go +++ b/core/commands/pubsub.go @@ -75,7 +75,7 @@ TOPIC AND DATA ENCODING `, }, Arguments: []cmds.Argument{ - cmds.StringArg("topic", true, false, "Name of topic to subscribe to."), + cmds.StringArg("topic", true, false, "Name of topic to subscribe to (multibase encoded when sent over HTTP RPC)."), }, PreRun: urlArgsEncoder, Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error { @@ -170,7 +170,7 @@ HTTP RPC ENCODING `, }, Arguments: []cmds.Argument{ - cmds.StringArg("topic", true, false, "Topic to publish to."), + cmds.StringArg("topic", true, false, "Topic to publish to (multibase encoded when sent over HTTP RPC)."), cmds.FileArg("data", true, false, "The data to be published.").EnableStdin(), }, PreRun: urlArgsEncoder, From a6dc7afe4c817eaf7779cc56fd459b89469e4f9d Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Fri, 6 May 2022 23:57:47 +0200 Subject: [PATCH 07/25] fix(ci): fix flaky t0081-repo-pinning.sh (#8919) * fix(ci): fix flaky t0081-repo-pinning.sh Sometimes docker pull fails, this will retry. * add upper bound on # retries (3) Co-authored-by: Gus Eggert (cherry picked from commit 6a4ee0a8a5a5bbf8251d57f27c9ef6770b71c9d4) --- .circleci/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/main.yml b/.circleci/main.yml index a3bfb6db0..7d80f03ff 100644 --- a/.circleci/main.yml +++ b/.circleci/main.yml @@ -177,7 +177,7 @@ jobs: git checkout FETCH_HEAD - run: cd rb-pinning-service-api && - docker-compose pull && + (for i in {1..3}; do docker-compose pull && break || sleep 5; done) && docker-compose up -d - *make_out_dirs From 93cad3b86f33abd1c583493464be5387ad6ddb2a Mon Sep 17 00:00:00 2001 From: galargh Date: Fri, 6 May 2022 15:28:09 +0200 Subject: [PATCH 08/25] ci: disable workflows in forks (cherry picked from commit 4798777377454245865b3a6a7eab128c6c811bfc) --- .github/workflows/codeql-analysis.yml | 2 ++ .github/workflows/docker-image.yml | 1 + .github/workflows/sync-release-assets.yml | 1 + .github/workflows/testground-on-push.yml | 6 +++++- 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 90bdd75b7..39f7073f5 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -2,6 +2,7 @@ name: "CodeQL" on: + workflow_dispatch: push: branches: [ master ] pull_request: @@ -12,6 +13,7 @@ on: jobs: analyze: + if: github.repository == 'ipfs/go-ipfs' || github.event_name == 'workflow_dispatch' name: Analyze runs-on: ubuntu-latest diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index f2f94739f..1fda1c8b3 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -11,6 +11,7 @@ on: jobs: push_to_registry: + if: github.repository == 'ipfs/go-ipfs' || github.event_name == 'workflow_dispatch' name: Push Docker image to Docker Hub runs-on: ubuntu-latest env: diff --git a/.github/workflows/sync-release-assets.yml b/.github/workflows/sync-release-assets.yml index df055edd2..f6ca26719 100644 --- a/.github/workflows/sync-release-assets.yml +++ b/.github/workflows/sync-release-assets.yml @@ -11,6 +11,7 @@ concurrency: jobs: sync-github-and-dist-ipfs-io: + if: github.repository == 'ipfs/go-ipfs' || github.event_name == 'workflow_dispatch' runs-on: "ubuntu-latest" steps: - uses: ipfs/download-ipfs-distribution-action@v1 diff --git a/.github/workflows/testground-on-push.yml b/.github/workflows/testground-on-push.yml index ae1c80dd9..a73018ca7 100644 --- a/.github/workflows/testground-on-push.yml +++ b/.github/workflows/testground-on-push.yml @@ -1,10 +1,14 @@ --- name: Testground PR Checker -on: [push] +on: + workflow_dispatch: + push: + jobs: testground: + if: github.repository == 'ipfs/go-ipfs' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest name: ${{ matrix.composition_file }} strategy: From ec6e6f82b9022e8b1eb99e3a9195819b44efa794 Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Thu, 12 May 2022 14:52:17 +0200 Subject: [PATCH 09/25] fix: go-libp2p 0.19.2 with holepunch fixup (#8966) https://github.com/libp2p/go-libp2p/releases/tag/v0.19.2 (cherry picked from commit 657d4f4dd9cdb87d33c9b8b784cc89f78430b152) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 02da16032..c2b77d793 100644 --- a/go.mod +++ b/go.mod @@ -68,7 +68,7 @@ require ( github.com/jbenet/go-temp-err-catcher v0.1.0 github.com/jbenet/goprocess v0.1.4 github.com/libp2p/go-doh-resolver v0.4.0 - github.com/libp2p/go-libp2p v0.19.1 + github.com/libp2p/go-libp2p v0.19.2 github.com/libp2p/go-libp2p-core v0.15.1 github.com/libp2p/go-libp2p-discovery v0.6.0 github.com/libp2p/go-libp2p-http v0.2.1 diff --git a/go.sum b/go.sum index c34d06968..982d04c45 100644 --- a/go.sum +++ b/go.sum @@ -766,8 +766,8 @@ github.com/libp2p/go-libp2p v0.13.0/go.mod h1:pM0beYdACRfHO1WcJlp65WXyG2A6NqYM+t github.com/libp2p/go-libp2p v0.14.3/go.mod h1:d12V4PdKbpL0T1/gsUNN8DfgMuRPDX8bS2QxCZlwRH0= github.com/libp2p/go-libp2p v0.14.4/go.mod h1:EIRU0Of4J5S8rkockZM7eJp2S0UrCyi55m2kJVru3rM= github.com/libp2p/go-libp2p v0.16.0/go.mod h1:ump42BsirwAWxKzsCiFnTtN1Yc+DuPu76fyMX364/O4= -github.com/libp2p/go-libp2p v0.19.1 h1:ysBA1vDxhvgy9WmXpDeuk082EakewbJAwfU+ApdTG6I= -github.com/libp2p/go-libp2p v0.19.1/go.mod h1:Ki9jJXLO2YqrTIFxofV7Twyd3INWPT97+r8hGt7XPjI= +github.com/libp2p/go-libp2p v0.19.2 h1:s6XRBBuUnVYn0vBb4LZo/G6V2c/gODJ2K4/H35eGv+4= +github.com/libp2p/go-libp2p v0.19.2/go.mod h1:Ki9jJXLO2YqrTIFxofV7Twyd3INWPT97+r8hGt7XPjI= 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= From d8d7c215e8c091eb7d613fee1a2bec64bf7c81d9 Mon Sep 17 00:00:00 2001 From: Lucas Molas Date: Thu, 12 May 2022 14:08:51 -0300 Subject: [PATCH 10/25] Merge pull request #8965 from ipfs/schomatis/fix/disable-rcmg-checks fix(node/libp2p): disable rcmgr checkImplicitDefaults (cherry picked from commit e23a4611d82e29ea6cbe3427b84c6e8f51ea3a28) --- .circleci/main.yml | 1 + core/node/libp2p/rcmgr_defaults.go | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.circleci/main.yml b/.circleci/main.yml index 7d80f03ff..18c5d55cd 100644 --- a/.circleci/main.yml +++ b/.circleci/main.yml @@ -32,6 +32,7 @@ default_environment: &default_environment CIRCLE_TEST_REPORTS: /tmp/circleci-test-results CIRCLE_ARTIFACTS: /tmp/circleci-artifacts GIT_PAGER: cat + IPFS_CHECK_RCMGR_DEFAULTS: 1 executors: golang: diff --git a/core/node/libp2p/rcmgr_defaults.go b/core/node/libp2p/rcmgr_defaults.go index e5e0cbb34..11d243641 100644 --- a/core/node/libp2p/rcmgr_defaults.go +++ b/core/node/libp2p/rcmgr_defaults.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" "math/bits" + "os" "strings" config "github.com/ipfs/go-ipfs/config" @@ -19,7 +20,10 @@ import ( // such as values in Swarm.ConnMgr.HiWater config. func adjustedDefaultLimits(cfg config.SwarmConfig) rcmgr.DefaultLimitConfig { // Run checks to avoid introducing regressions - checkImplicitDefaults() + if os.Getenv("IPFS_CHECK_RCMGR_DEFAULTS") != "" { + // FIXME: Broken. Being tracked in https://github.com/ipfs/go-ipfs/issues/8949. + checkImplicitDefaults() + } // Return to use unmodified static limits based on values from go-libp2p 0.18 // return defaultLimits From 5a1ca27ec6bbe57c07e500a5d9ea82eb0f0c1939 Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Thu, 12 May 2022 19:32:54 +0200 Subject: [PATCH 11/25] chore: mark fuse experimental (#8962) It works only on some platforms, and does not work reliably. This corrects our error of not setting expectations right. (cherry picked from commit 53299e84e0995124c97fdb76571f8646cf03c6a7) --- cmd/ipfs/daemon.go | 2 +- core/commands/mount_nofuse.go | 1 + core/commands/mount_unix.go | 1 + core/commands/root.go | 2 +- docs/config.md | 2 ++ docs/experimental-features.md | 10 ++++++++++ docs/fuse.md | 2 ++ 7 files changed, 18 insertions(+), 2 deletions(-) diff --git a/cmd/ipfs/daemon.go b/cmd/ipfs/daemon.go index 14054c36f..c13460593 100644 --- a/cmd/ipfs/daemon.go +++ b/cmd/ipfs/daemon.go @@ -169,7 +169,7 @@ Headers. cmds.StringOption(initConfigOptionKwd, "Path to existing configuration file to be loaded during --init"), cmds.StringOption(initProfileOptionKwd, "Configuration profiles to apply for --init. See ipfs init --help for more"), cmds.StringOption(routingOptionKwd, "Overrides the routing option").WithDefault(routingOptionDefaultKwd), - cmds.BoolOption(mountKwd, "Mounts IPFS to the filesystem"), + cmds.BoolOption(mountKwd, "Mounts IPFS to the filesystem using FUSE (experimental)"), cmds.BoolOption(writableKwd, "Enable writing objects (with POST, PUT and DELETE)"), cmds.StringOption(ipfsMountKwd, "Path to the mountpoint for IPFS (if using --mount). Defaults to config setting."), cmds.StringOption(ipnsMountKwd, "Path to the mountpoint for IPNS (if using --mount). Defaults to config setting."), diff --git a/core/commands/mount_nofuse.go b/core/commands/mount_nofuse.go index 46e9df0ce..c425aff0f 100644 --- a/core/commands/mount_nofuse.go +++ b/core/commands/mount_nofuse.go @@ -8,6 +8,7 @@ import ( ) var MountCmd = &cmds.Command{ + Status: cmds.Experimental, Helptext: cmds.HelpText{ Tagline: "Mounts ipfs to the filesystem (disabled).", ShortDescription: ` diff --git a/core/commands/mount_unix.go b/core/commands/mount_unix.go index bde049c34..fd1c486ee 100644 --- a/core/commands/mount_unix.go +++ b/core/commands/mount_unix.go @@ -21,6 +21,7 @@ const ( ) var MountCmd = &cmds.Command{ + Status: cmds.Experimental, Helptext: cmds.HelpText{ Tagline: "Mounts IPFS to the filesystem (read-only).", ShortDescription: ` diff --git a/core/commands/root.go b/core/commands/root.go index 87bc3fd6f..71ec35e37 100644 --- a/core/commands/root.go +++ b/core/commands/root.go @@ -52,7 +52,6 @@ TEXT ENCODING COMMANDS ADVANCED COMMANDS daemon Start a long-running daemon process - mount Mount an IPFS read-only mount point resolve Resolve any type of content path name Publish and resolve IPNS names key Create and list IPNS name keypairs @@ -61,6 +60,7 @@ ADVANCED COMMANDS stats Various operational stats p2p Libp2p stream mounting (experimental) filestore Manage the filestore (experimental) + mount Mount an IPFS read-only mount point (experimental) NETWORK COMMANDS id Show info about IPFS peers diff --git a/docs/config.md b/docs/config.md index 0a4b6c3c1..fbdc4540c 100644 --- a/docs/config.md +++ b/docs/config.md @@ -1035,6 +1035,8 @@ Default: `cache` ## `Mounts` +**EXPERIMENTAL:** read about current limitations at [fuse.md](./fuse.md). + FUSE mount point configuration options. ### `Mounts.IPFS` diff --git a/docs/experimental-features.md b/docs/experimental-features.md index 4d99f58c2..ba12ef42b 100644 --- a/docs/experimental-features.md +++ b/docs/experimental-features.md @@ -19,6 +19,7 @@ the above issue. - [Private Networks](#private-networks) - [ipfs p2p](#ipfs-p2p) - [p2p http proxy](#p2p-http-proxy) +- [FUSE](#fuse) - [Plugins](#plugins) - [Directory Sharding / HAMT](#directory-sharding--hamt) - [IPNS PubSub](#ipns-pubsub) @@ -386,6 +387,15 @@ We also support the use of protocol names of the form /x/$NAME/http where $NAME - [ ] More documentation - [ ] Need better integration with the subdomain gateway feature. +## FUSE + +FUSE makes it possible to mount `/ipfs` and `/ipns` namespaces in your OS, +allowing argitrary apps access to IPFS using a subset of filesystem abstracitons. + +It is considered EXPERIMENTAL due to limited (and buggy) support on some platforms. + +See [fuse.md](./fuse.md) for more details. + ## Plugins ### In Version diff --git a/docs/fuse.md b/docs/fuse.md index a6399eeba..8a229ead6 100644 --- a/docs/fuse.md +++ b/docs/fuse.md @@ -1,5 +1,7 @@ # FUSE +**EXPERIMENTAL:** FUSE support is limited, YMMV. + `go-ipfs` makes it possible to mount `/ipfs` and `/ipns` namespaces in your OS, allowing arbitrary apps access to IPFS. From 57706f218a68ed9843ed2d2ffc8c1ebe114b0631 Mon Sep 17 00:00:00 2001 From: Jorropo Date: Fri, 13 May 2022 17:46:33 +0200 Subject: [PATCH 12/25] fix: hanging goroutine in get fileArchive handler Fixes #8957 The context was only checked while reading data. Not while writing data to the http connection. So since the data flow through an io.Pipe the closing didn't flowed through and left the writer open hanging. Co-authored-by: Antonio Navarro Perez (cherry picked from commit 7892cc91f9ed17f5a6e0348334ed09c8bdb3194f) --- core/commands/get.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/commands/get.go b/core/commands/get.go index 65ab46aa5..7f687ed22 100644 --- a/core/commands/get.go +++ b/core/commands/get.go @@ -61,6 +61,7 @@ may also specify the level of compression by specifying '-l=<1-9>'. return err }, Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error { + ctx := req.Context cmplvl, err := getCompressOptions(req) if err != nil { return err @@ -73,7 +74,7 @@ may also specify the level of compression by specifying '-l=<1-9>'. p := path.New(req.Arguments[0]) - file, err := api.Unixfs().Get(req.Context, p) + file, err := api.Unixfs().Get(ctx, p) if err != nil { return err } @@ -90,6 +91,13 @@ may also specify the level of compression by specifying '-l=<1-9>'. if err != nil { return err } + go func() { + // We cannot defer a close in the response writer (like we should) + // Because the cmd framework outsmart us and doesn't call response + // if the context is over. + <-ctx.Done() + reader.Close() + }() return res.Emit(reader) }, @@ -273,7 +281,7 @@ func (i *identityWriteCloser) Close() error { return nil } -func fileArchive(f files.Node, name string, archive bool, compression int) (io.Reader, error) { +func fileArchive(f files.Node, name string, archive bool, compression int) (io.ReadCloser, error) { cleaned := gopath.Clean(name) _, filename := gopath.Split(cleaned) From 1adb6eaff241327c502efd3cb44b11e0312dc52e Mon Sep 17 00:00:00 2001 From: siiky Date: Fri, 13 May 2022 16:52:10 +0100 Subject: [PATCH 13/25] docs: fix abstractions typo (cherry picked from commit a72753bade90c4a48c29aba6c0dc81c44785e9d2) --- docs/experimental-features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/experimental-features.md b/docs/experimental-features.md index ba12ef42b..30343d48d 100644 --- a/docs/experimental-features.md +++ b/docs/experimental-features.md @@ -390,7 +390,7 @@ We also support the use of protocol names of the form /x/$NAME/http where $NAME ## FUSE FUSE makes it possible to mount `/ipfs` and `/ipns` namespaces in your OS, -allowing argitrary apps access to IPFS using a subset of filesystem abstracitons. +allowing argitrary apps access to IPFS using a subset of filesystem abstractions. It is considered EXPERIMENTAL due to limited (and buggy) support on some platforms. From 4449909b2da690d3677903fc0b1797c1ad00275b Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Thu, 19 May 2022 20:11:19 +0200 Subject: [PATCH 14/25] fix: JS caching via Access-Control-Expose-Headers (#8984) This fix safelists additional headers allowing JS running on websites to read them when IPFS resource is downloaded via Fetch API. These headers provide metadata necessary for making smart caching decisions when IPFS resources are downloaded via Service Worker or a similar middleware on the edge. (cherry picked from commit 650bc246ab4a7c2a11a207e3bf9d74c07d190eb7) --- core/corehttp/gateway.go | 3 +++ test/sharness/t0112-gateway-cors.sh | 13 +++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/core/corehttp/gateway.go b/core/corehttp/gateway.go index a4ae53831..84ad13897 100644 --- a/core/corehttp/gateway.go +++ b/core/corehttp/gateway.go @@ -84,9 +84,12 @@ func GatewayOption(writable bool, paths ...string) ServeOption { headers[ACEHeadersName] = cleanHeaderSet( append([]string{ + "Content-Length", "Content-Range", "X-Chunked-Output", "X-Stream-Output", + "X-Ipfs-Path", + "X-Ipfs-Roots", }, headers[ACEHeadersName]...)) var gateway http.Handler = newGatewayHandler(GatewayConfig{ diff --git a/test/sharness/t0112-gateway-cors.sh b/test/sharness/t0112-gateway-cors.sh index cebb4e05a..4bb2a5090 100755 --- a/test/sharness/t0112-gateway-cors.sh +++ b/test/sharness/t0112-gateway-cors.sh @@ -26,7 +26,10 @@ test_expect_success "GET response for Gateway resource looks good" ' grep "< Access-Control-Allow-Origin: \*" curl_output && grep "< Access-Control-Allow-Methods: GET" curl_output && grep "< Access-Control-Allow-Headers: Range" curl_output && - grep "< Access-Control-Expose-Headers: Content-Range" curl_output + grep "< Access-Control-Expose-Headers: Content-Range" curl_output && + grep "< Access-Control-Expose-Headers: Content-Length" curl_output && + grep "< Access-Control-Expose-Headers: X-Ipfs-Path" curl_output && + grep "< Access-Control-Expose-Headers: X-Ipfs-Roots" curl_output ' # HTTP OPTIONS Request @@ -40,7 +43,10 @@ test_expect_success "OPTIONS response for Gateway resource looks good" ' grep "< Access-Control-Allow-Origin: \*" curl_output && grep "< Access-Control-Allow-Methods: GET" curl_output && grep "< Access-Control-Allow-Headers: Range" curl_output && - grep "< Access-Control-Expose-Headers: Content-Range" curl_output + grep "< Access-Control-Expose-Headers: Content-Range" curl_output && + grep "< Access-Control-Expose-Headers: Content-Length" curl_output && + grep "< Access-Control-Expose-Headers: X-Ipfs-Path" curl_output && + grep "< Access-Control-Expose-Headers: X-Ipfs-Roots" curl_output ' test_kill_ipfs_daemon @@ -63,6 +69,9 @@ test_expect_success "Access-Control-Allow-Headers extends" ' grep "< Access-Control-Allow-Headers: Range" curl_output && grep "< Access-Control-Allow-Headers: X-Custom1" curl_output && grep "< Access-Control-Expose-Headers: Content-Range" curl_output && + grep "< Access-Control-Expose-Headers: Content-Length" curl_output && + grep "< Access-Control-Expose-Headers: X-Ipfs-Path" curl_output && + grep "< Access-Control-Expose-Headers: X-Ipfs-Roots" curl_output && grep "< Access-Control-Expose-Headers: X-Custom2" curl_output ' From cb72776dec434500bf657543f06f734ffb305e67 Mon Sep 17 00:00:00 2001 From: Gus Eggert Date: Thu, 19 May 2022 15:27:44 -0400 Subject: [PATCH 15/25] feat: log when resource manager limits are exceeded (#8980) This periodically logs how many times Resource Manager limits were exceeded. If they aren't exceeded, then nothing is logged. The log levels are at ERROR log level so that they are shown by default. The motivation is so that users know when they have exceeded resource manager limits. To find what is exceeding the limits, they'll need to turn on debug logging and inspect the errors being logged. This could collect the specific limits being reached, but that's more complicated to implement and could result in much longer log messages. (cherry picked from commit 5615715c55ae59a6b17877db84eac92821371c51) --- core/commands/swarm.go | 2 +- core/node/libp2p/rcmgr.go | 15 ++- core/node/libp2p/rcmgr_logging.go | 160 +++++++++++++++++++++++++ core/node/libp2p/rcmgr_logging_test.go | 58 +++++++++ go.mod | 7 +- 5 files changed, 236 insertions(+), 6 deletions(-) create mode 100644 core/node/libp2p/rcmgr_logging.go create mode 100644 core/node/libp2p/rcmgr_logging_test.go diff --git a/core/commands/swarm.go b/core/commands/swarm.go index d6a3e8d69..f904ed67e 100644 --- a/core/commands/swarm.go +++ b/core/commands/swarm.go @@ -409,7 +409,7 @@ Changes made via command line are persisted in the Swarm.ResourceMgr.Limits fiel return errors.New("expected a JSON file") } if err := json.NewDecoder(file).Decode(&newLimit); err != nil { - return errors.New("failed to decode JSON as ResourceMgrScopeConfig") + return fmt.Errorf("decoding JSON as ResourceMgrScopeConfig: %w", err) } return libp2p.NetSetLimit(node.ResourceManager, node.Repo, scope, newLimit) } diff --git a/core/node/libp2p/rcmgr.go b/core/node/libp2p/rcmgr.go index 28d05a131..4d4b29a56 100644 --- a/core/node/libp2p/rcmgr.go +++ b/core/node/libp2p/rcmgr.go @@ -7,9 +7,11 @@ import ( "path/filepath" "strings" + "github.com/benbjohnson/clock" config "github.com/ipfs/go-ipfs/config" + "github.com/ipfs/go-ipfs/core/node/helpers" "github.com/ipfs/go-ipfs/repo" - + logging "github.com/ipfs/go-log/v2" "github.com/libp2p/go-libp2p" "github.com/libp2p/go-libp2p-core/network" "github.com/libp2p/go-libp2p-core/peer" @@ -24,8 +26,8 @@ const NetLimitTraceFilename = "rcmgr.json.gz" var NoResourceMgrError = fmt.Errorf("missing ResourceMgr: make sure the daemon is running with Swarm.ResourceMgr.Enabled") -func ResourceManager(cfg config.SwarmConfig) func(fx.Lifecycle, repo.Repo) (network.ResourceManager, Libp2pOpts, error) { - return func(lc fx.Lifecycle, repo repo.Repo) (network.ResourceManager, Libp2pOpts, error) { +func ResourceManager(cfg config.SwarmConfig) interface{} { + return func(mctx helpers.MetricsCtx, lc fx.Lifecycle, repo repo.Repo) (network.ResourceManager, Libp2pOpts, error) { var manager network.ResourceManager var opts Libp2pOpts @@ -72,6 +74,13 @@ func ResourceManager(cfg config.SwarmConfig) func(fx.Lifecycle, repo.Repo) (netw if err != nil { return nil, opts, fmt.Errorf("creating libp2p resource manager: %w", err) } + lrm := &loggingResourceManager{ + clock: clock.New(), + logger: &logging.Logger("resourcemanager").SugaredLogger, + delegate: manager, + } + lrm.start(helpers.LifecycleCtx(mctx, lc)) + manager = lrm } else { log.Debug("libp2p resource manager is disabled") manager = network.NullResourceManager diff --git a/core/node/libp2p/rcmgr_logging.go b/core/node/libp2p/rcmgr_logging.go new file mode 100644 index 000000000..06d22c71b --- /dev/null +++ b/core/node/libp2p/rcmgr_logging.go @@ -0,0 +1,160 @@ +package libp2p + +import ( + "context" + "errors" + "sync" + "time" + + "github.com/benbjohnson/clock" + "github.com/libp2p/go-libp2p-core/network" + "github.com/libp2p/go-libp2p-core/peer" + "github.com/libp2p/go-libp2p-core/protocol" + rcmgr "github.com/libp2p/go-libp2p-resource-manager" + "go.uber.org/zap" +) + +type loggingResourceManager struct { + clock clock.Clock + logger *zap.SugaredLogger + delegate network.ResourceManager + logInterval time.Duration + + mut sync.Mutex + limitExceededErrs uint64 +} + +type loggingScope struct { + logger *zap.SugaredLogger + delegate network.ResourceScope + countErrs func(error) +} + +var _ network.ResourceManager = (*loggingResourceManager)(nil) + +func (n *loggingResourceManager) start(ctx context.Context) { + logInterval := n.logInterval + if logInterval == 0 { + logInterval = 10 * time.Second + } + ticker := n.clock.Ticker(logInterval) + go func() { + defer ticker.Stop() + for { + select { + case <-ticker.C: + n.mut.Lock() + errs := n.limitExceededErrs + n.limitExceededErrs = 0 + n.mut.Unlock() + if errs != 0 { + n.logger.Warnf("Resource limits were exceeded %d times, consider inspecting logs and raising the resource manager limits.", errs) + } + case <-ctx.Done(): + return + } + } + }() +} + +func (n *loggingResourceManager) countErrs(err error) { + if errors.Is(err, network.ErrResourceLimitExceeded) { + n.mut.Lock() + n.limitExceededErrs++ + n.mut.Unlock() + } +} + +func (n *loggingResourceManager) ViewSystem(f func(network.ResourceScope) error) error { + return n.delegate.ViewSystem(f) +} +func (n *loggingResourceManager) ViewTransient(f func(network.ResourceScope) error) error { + return n.delegate.ViewTransient(func(s network.ResourceScope) error { + return f(&loggingScope{logger: n.logger, delegate: s, countErrs: n.countErrs}) + }) +} +func (n *loggingResourceManager) ViewService(svc string, f func(network.ServiceScope) error) error { + return n.delegate.ViewService(svc, func(s network.ServiceScope) error { + return f(&loggingScope{logger: n.logger, delegate: s, countErrs: n.countErrs}) + }) +} +func (n *loggingResourceManager) ViewProtocol(p protocol.ID, f func(network.ProtocolScope) error) error { + return n.delegate.ViewProtocol(p, func(s network.ProtocolScope) error { + return f(&loggingScope{logger: n.logger, delegate: s, countErrs: n.countErrs}) + }) +} +func (n *loggingResourceManager) ViewPeer(p peer.ID, f func(network.PeerScope) error) error { + return n.delegate.ViewPeer(p, func(s network.PeerScope) error { + return f(&loggingScope{logger: n.logger, delegate: s, countErrs: n.countErrs}) + }) +} +func (n *loggingResourceManager) OpenConnection(dir network.Direction, usefd bool) (network.ConnManagementScope, error) { + connMgmtScope, err := n.delegate.OpenConnection(dir, usefd) + n.countErrs(err) + return connMgmtScope, err +} +func (n *loggingResourceManager) OpenStream(p peer.ID, dir network.Direction) (network.StreamManagementScope, error) { + connMgmtScope, err := n.delegate.OpenStream(p, dir) + n.countErrs(err) + return connMgmtScope, err +} +func (n *loggingResourceManager) Close() error { + return n.delegate.Close() +} + +func (s *loggingScope) ReserveMemory(size int, prio uint8) error { + err := s.delegate.ReserveMemory(size, prio) + s.countErrs(err) + return err +} +func (s *loggingScope) ReleaseMemory(size int) { + s.delegate.ReleaseMemory(size) +} +func (s *loggingScope) Stat() network.ScopeStat { + return s.delegate.Stat() +} +func (s *loggingScope) BeginSpan() (network.ResourceScopeSpan, error) { + return s.delegate.BeginSpan() +} +func (s *loggingScope) Done() { + s.delegate.(network.ResourceScopeSpan).Done() +} +func (s *loggingScope) Name() string { + return s.delegate.(network.ServiceScope).Name() +} +func (s *loggingScope) Protocol() protocol.ID { + return s.delegate.(network.ProtocolScope).Protocol() +} +func (s *loggingScope) Peer() peer.ID { + return s.delegate.(network.PeerScope).Peer() +} +func (s *loggingScope) PeerScope() network.PeerScope { + return s.delegate.(network.PeerScope) +} +func (s *loggingScope) SetPeer(p peer.ID) error { + err := s.delegate.(network.ConnManagementScope).SetPeer(p) + s.countErrs(err) + return err +} +func (s *loggingScope) ProtocolScope() network.ProtocolScope { + return s.delegate.(network.ProtocolScope) +} +func (s *loggingScope) SetProtocol(proto protocol.ID) error { + err := s.delegate.(network.StreamManagementScope).SetProtocol(proto) + s.countErrs(err) + return err +} +func (s *loggingScope) ServiceScope() network.ServiceScope { + return s.delegate.(network.ServiceScope) +} +func (s *loggingScope) SetService(srv string) error { + err := s.delegate.(network.StreamManagementScope).SetService(srv) + s.countErrs(err) + return err +} +func (s *loggingScope) Limit() rcmgr.Limit { + return s.delegate.(rcmgr.ResourceScopeLimiter).Limit() +} +func (s *loggingScope) SetLimit(limit rcmgr.Limit) { + s.delegate.(rcmgr.ResourceScopeLimiter).SetLimit(limit) +} diff --git a/core/node/libp2p/rcmgr_logging_test.go b/core/node/libp2p/rcmgr_logging_test.go new file mode 100644 index 000000000..72f34b808 --- /dev/null +++ b/core/node/libp2p/rcmgr_logging_test.go @@ -0,0 +1,58 @@ +package libp2p + +import ( + "context" + "testing" + "time" + + "github.com/benbjohnson/clock" + "github.com/libp2p/go-libp2p-core/network" + rcmgr "github.com/libp2p/go-libp2p-resource-manager" + "github.com/stretchr/testify/require" + "go.uber.org/zap" + "go.uber.org/zap/zaptest/observer" +) + +func TestLoggingResourceManager(t *testing.T) { + clock := clock.NewMock() + limiter := rcmgr.NewDefaultLimiter() + limiter.SystemLimits = limiter.SystemLimits.WithConnLimit(1, 1, 1) + rm, err := rcmgr.NewResourceManager(limiter) + if err != nil { + t.Fatal(err) + } + + oCore, oLogs := observer.New(zap.WarnLevel) + oLogger := zap.New(oCore) + lrm := &loggingResourceManager{ + clock: clock, + logger: oLogger.Sugar(), + delegate: rm, + logInterval: 1 * time.Second, + } + + // 2 of these should result in resource limit exceeded errors and subsequent log messages + for i := 0; i < 3; i++ { + _, _ = lrm.OpenConnection(network.DirInbound, false) + } + + // run the logger which will write an entry for those errors + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + lrm.start(ctx) + clock.Add(3 * time.Second) + + timer := time.NewTimer(1 * time.Second) + for { + select { + case <-timer.C: + t.Fatalf("expected logs never arrived") + default: + if oLogs.Len() == 0 { + continue + } + require.Equal(t, "Resource limits were exceeded 2 times, consider inspecting logs and raising the resource manager limits.", oLogs.All()[0].Message) + return + } + } +} diff --git a/go.mod b/go.mod index c2b77d793..b7946841b 100644 --- a/go.mod +++ b/go.mod @@ -125,13 +125,17 @@ require ( golang.org/x/sys v0.0.0-20220412211240-33da011f77ad ) +require ( + github.com/benbjohnson/clock v1.3.0 + github.com/ipfs/go-log/v2 v2.5.1 +) + require ( github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 // indirect github.com/Kubuxu/go-os-helper v0.0.1 // indirect github.com/Stebalien/go-bitfield v0.0.1 // indirect github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a // indirect github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5 // indirect - github.com/benbjohnson/clock v1.3.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/btcsuite/btcd v0.22.0-beta // indirect github.com/cenkalti/backoff v2.2.1+incompatible // indirect @@ -172,7 +176,6 @@ require ( github.com/ipfs/go-ipfs-delay v0.0.1 // indirect github.com/ipfs/go-ipfs-ds-help v1.1.0 // indirect github.com/ipfs/go-ipfs-pq v0.0.2 // indirect - github.com/ipfs/go-log/v2 v2.5.1 // indirect github.com/ipfs/go-peertaskqueue v0.7.1 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/klauspost/compress v1.15.1 // indirect From bf06e54d44f838f35dd7683aa2047c16692e9ad5 Mon Sep 17 00:00:00 2001 From: Antonio Navarro Perez Date: Wed, 25 May 2022 02:36:01 +0200 Subject: [PATCH 16/25] fix(ci): make go-ipfs-as-a-library work without external peers (#8978) * Do not connect to external nodes on ipfs as a lib example. It was causing some build timeouts error because CircleCI was throttling WAN connections. It closes #8956 * style: rename node vars since this is example, this should make things easier to follow Co-authored-by: Marcin Rataj (cherry picked from commit e8f1ce07b3d8076da5baedd772d80368804e57a7) --- docs/examples/go-ipfs-as-a-library/main.go | 156 +++++++++------------ 1 file changed, 66 insertions(+), 90 deletions(-) diff --git a/docs/examples/go-ipfs-as-a-library/main.go b/docs/examples/go-ipfs-as-a-library/main.go index 3833deb3e..9150325f7 100644 --- a/docs/examples/go-ipfs-as-a-library/main.go +++ b/docs/examples/go-ipfs-as-a-library/main.go @@ -86,7 +86,7 @@ func createTempRepo() (string, error) { /// ------ Spawning the node // Creates an IPFS node and returns its coreAPI -func createNode(ctx context.Context, repoPath string) (icore.CoreAPI, error) { +func createNode(ctx context.Context, repoPath string) (*core.IpfsNode, error) { // Open the repo repo, err := fsrepo.Open(repoPath) if err != nil { @@ -102,48 +102,36 @@ func createNode(ctx context.Context, repoPath string) (icore.CoreAPI, error) { Repo: repo, } - node, err := core.NewNode(ctx, nodeOptions) - if err != nil { - return nil, err - } - - // Attach the Core API to the constructed node - return coreapi.NewCoreAPI(node) + return core.NewNode(ctx, nodeOptions) } -// Spawns a node on the default repo location, if the repo exists -func spawnDefault(ctx context.Context) (icore.CoreAPI, error) { - defaultPath, err := config.PathRoot() - if err != nil { - // shouldn't be possible - return nil, err - } - - if err := setupPlugins(defaultPath); err != nil { - return nil, err - - } - - return createNode(ctx, defaultPath) -} +var loadPluginsOnce sync.Once // Spawns a node to be used just for this run (i.e. creates a tmp repo) -func spawnEphemeral(ctx context.Context) (icore.CoreAPI, error) { - if err := setupPlugins(""); err != nil { - return nil, err +func spawnEphemeral(ctx context.Context) (icore.CoreAPI, *core.IpfsNode, error) { + var onceErr error + loadPluginsOnce.Do(func() { + onceErr = setupPlugins("") + }) + if onceErr != nil { + return nil, nil, onceErr } // Create a Temporary Repo repoPath, err := createTempRepo() if err != nil { - return nil, fmt.Errorf("failed to create temp repo: %s", err) + return nil, nil, fmt.Errorf("failed to create temp repo: %s", err) } - // Spawning an ephemeral IPFS node - return createNode(ctx, repoPath) -} + node, err := createNode(ctx, repoPath) + if err != nil { + return nil, nil, err + } -// + api, err := coreapi.NewCoreAPI(node) + + return api, node, err +} func connectToPeers(ctx context.Context, ipfs icore.CoreAPI, peers []string) error { var wg sync.WaitGroup @@ -179,26 +167,6 @@ func connectToPeers(ctx context.Context, ipfs icore.CoreAPI, peers []string) err return nil } -func getUnixfsFile(path string) (files.File, error) { - file, err := os.Open(path) - if err != nil { - return nil, err - } - defer file.Close() - - st, err := file.Stat() - if err != nil { - return nil, err - } - - f, err := files.NewReaderPathFile(path, file, st) - if err != nil { - return nil, err - } - - return f, nil -} - func getUnixfsNode(path string) (files.Node, error) { st, err := os.Stat(path) if err != nil { @@ -227,18 +195,23 @@ func main() { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - /* - // Spawn a node using the default path (~/.ipfs), assuming that a repo exists there already - fmt.Println("Spawning node on default repo") - ipfs, err := spawnDefault(ctx) - if err != nil { - panic(fmt.Errorf("failed to spawnDefault node: %s", err)) - } - */ + // Spawn a local peer using a temporary path, for testing purposes + ipfsA, nodeA, err := spawnEphemeral(ctx) + if err != nil { + panic(fmt.Errorf("failed to spawn peer node: %s", err)) + } + + peerCidFile, err := ipfsA.Unixfs().Add(ctx, + files.NewBytesFile([]byte("hello from ipfs 101 in go-ipfs"))) + if err != nil { + panic(fmt.Errorf("could not add File: %s", err)) + } + + fmt.Printf("Added file to peer with CID %s\n", peerCidFile.String()) // Spawn a node using a temporary path, creating a temporary repo for the run fmt.Println("Spawning node on a temporary repo") - ipfs, err := spawnEphemeral(ctx) + ipfsB, _, err := spawnEphemeral(ctx) if err != nil { panic(fmt.Errorf("failed to spawn ephemeral node: %s", err)) } @@ -255,24 +228,24 @@ func main() { someFile, err := getUnixfsNode(inputPathFile) if err != nil { - panic(fmt.Errorf("Could not get File: %s", err)) + panic(fmt.Errorf("could not get File: %s", err)) } - cidFile, err := ipfs.Unixfs().Add(ctx, someFile) + cidFile, err := ipfsB.Unixfs().Add(ctx, someFile) if err != nil { - panic(fmt.Errorf("Could not add File: %s", err)) + panic(fmt.Errorf("could not add File: %s", err)) } fmt.Printf("Added file to IPFS with CID %s\n", cidFile.String()) someDirectory, err := getUnixfsNode(inputPathDirectory) if err != nil { - panic(fmt.Errorf("Could not get File: %s", err)) + panic(fmt.Errorf("could not get File: %s", err)) } - cidDirectory, err := ipfs.Unixfs().Add(ctx, someDirectory) + cidDirectory, err := ipfsB.Unixfs().Add(ctx, someDirectory) if err != nil { - panic(fmt.Errorf("Could not add Directory: %s", err)) + panic(fmt.Errorf("could not add Directory: %s", err)) } fmt.Printf("Added directory to IPFS with CID %s\n", cidDirectory.String()) @@ -287,26 +260,26 @@ func main() { outputPathFile := outputBasePath + strings.Split(cidFile.String(), "/")[2] outputPathDirectory := outputBasePath + strings.Split(cidDirectory.String(), "/")[2] - rootNodeFile, err := ipfs.Unixfs().Get(ctx, cidFile) + rootNodeFile, err := ipfsB.Unixfs().Get(ctx, cidFile) if err != nil { - panic(fmt.Errorf("Could not get file with CID: %s", err)) + panic(fmt.Errorf("could not get file with CID: %s", err)) } err = files.WriteTo(rootNodeFile, outputPathFile) if err != nil { - panic(fmt.Errorf("Could not write out the fetched CID: %s", err)) + panic(fmt.Errorf("could not write out the fetched CID: %s", err)) } - fmt.Printf("Got file back from IPFS (IPFS path: %s) and wrote it to %s\n", cidFile.String(), outputPathFile) + fmt.Printf("got file back from IPFS (IPFS path: %s) and wrote it to %s\n", cidFile.String(), outputPathFile) - rootNodeDirectory, err := ipfs.Unixfs().Get(ctx, cidDirectory) + rootNodeDirectory, err := ipfsB.Unixfs().Get(ctx, cidDirectory) if err != nil { - panic(fmt.Errorf("Could not get file with CID: %s", err)) + panic(fmt.Errorf("could not get file with CID: %s", err)) } err = files.WriteTo(rootNodeDirectory, outputPathDirectory) if err != nil { - panic(fmt.Errorf("Could not write out the fetched CID: %s", err)) + panic(fmt.Errorf("could not write out the fetched CID: %s", err)) } fmt.Printf("Got directory back from IPFS (IPFS path: %s) and wrote it to %s\n", cidDirectory.String(), outputPathDirectory) @@ -315,49 +288,52 @@ func main() { fmt.Println("\n-- Going to connect to a few nodes in the Network as bootstrappers --") + peerMa := fmt.Sprintf("/ip4/127.0.0.1/udp/4010/p2p/%s", nodeA.Identity.String()) + bootstrapNodes := []string{ // IPFS Bootstrapper nodes. - "/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN", - "/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa", - "/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb", - "/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt", + // "/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN", + // "/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa", + // "/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb", + // "/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt", // IPFS Cluster Pinning nodes - "/ip4/138.201.67.219/tcp/4001/p2p/QmUd6zHcbkbcs7SMxwLs48qZVX3vpcM8errYS7xEczwRMA", - "/ip4/138.201.67.219/udp/4001/quic/p2p/QmUd6zHcbkbcs7SMxwLs48qZVX3vpcM8errYS7xEczwRMA", - "/ip4/138.201.67.220/tcp/4001/p2p/QmNSYxZAiJHeLdkBg38roksAR9So7Y5eojks1yjEcUtZ7i", - "/ip4/138.201.67.220/udp/4001/quic/p2p/QmNSYxZAiJHeLdkBg38roksAR9So7Y5eojks1yjEcUtZ7i", - "/ip4/138.201.68.74/tcp/4001/p2p/QmdnXwLrC8p1ueiq2Qya8joNvk3TVVDAut7PrikmZwubtR", - "/ip4/138.201.68.74/udp/4001/quic/p2p/QmdnXwLrC8p1ueiq2Qya8joNvk3TVVDAut7PrikmZwubtR", - "/ip4/94.130.135.167/tcp/4001/p2p/QmUEMvxS2e7iDrereVYc5SWPauXPyNwxcy9BXZrC1QTcHE", - "/ip4/94.130.135.167/udp/4001/quic/p2p/QmUEMvxS2e7iDrereVYc5SWPauXPyNwxcy9BXZrC1QTcHE", + // "/ip4/138.201.67.219/tcp/4001/p2p/QmUd6zHcbkbcs7SMxwLs48qZVX3vpcM8errYS7xEczwRMA", + // "/ip4/138.201.67.219/udp/4001/quic/p2p/QmUd6zHcbkbcs7SMxwLs48qZVX3vpcM8errYS7xEczwRMA", + // "/ip4/138.201.67.220/tcp/4001/p2p/QmNSYxZAiJHeLdkBg38roksAR9So7Y5eojks1yjEcUtZ7i", + // "/ip4/138.201.67.220/udp/4001/quic/p2p/QmNSYxZAiJHeLdkBg38roksAR9So7Y5eojks1yjEcUtZ7i", + // "/ip4/138.201.68.74/tcp/4001/p2p/QmdnXwLrC8p1ueiq2Qya8joNvk3TVVDAut7PrikmZwubtR", + // "/ip4/138.201.68.74/udp/4001/quic/p2p/QmdnXwLrC8p1ueiq2Qya8joNvk3TVVDAut7PrikmZwubtR", + // "/ip4/94.130.135.167/tcp/4001/p2p/QmUEMvxS2e7iDrereVYc5SWPauXPyNwxcy9BXZrC1QTcHE", + // "/ip4/94.130.135.167/udp/4001/quic/p2p/QmUEMvxS2e7iDrereVYc5SWPauXPyNwxcy9BXZrC1QTcHE", // You can add more nodes here, for example, another IPFS node you might have running locally, mine was: // "/ip4/127.0.0.1/tcp/4010/p2p/QmZp2fhDLxjYue2RiUvLwT9MWdnbDxam32qYFnGmxZDh5L", // "/ip4/127.0.0.1/udp/4010/quic/p2p/QmZp2fhDLxjYue2RiUvLwT9MWdnbDxam32qYFnGmxZDh5L", + peerMa, } go func() { - err := connectToPeers(ctx, ipfs, bootstrapNodes) + err := connectToPeers(ctx, ipfsB, bootstrapNodes) if err != nil { log.Printf("failed connect to peers: %s", err) } }() - exampleCIDStr := "QmUaoioqU7bxezBQZkUcgcSyokatMY71sxsALxQmRRrHrj" + exampleCIDStr := peerCidFile.Cid().String() fmt.Printf("Fetching a file from the network with CID %s\n", exampleCIDStr) outputPath := outputBasePath + exampleCIDStr testCID := icorepath.New(exampleCIDStr) - rootNode, err := ipfs.Unixfs().Get(ctx, testCID) + rootNode, err := ipfsB.Unixfs().Get(ctx, testCID) if err != nil { - panic(fmt.Errorf("Could not get file with CID: %s", err)) + panic(fmt.Errorf("could not get file with CID: %s", err)) } err = files.WriteTo(rootNode, outputPath) if err != nil { - panic(fmt.Errorf("Could not write out the fetched CID: %s", err)) + panic(fmt.Errorf("could not write out the fetched CID: %s", err)) } fmt.Printf("Wrote the file to %s\n", outputPath) From 8dffa84d77e585edecabbdbd11c3ddcb4292f2d3 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Wed, 1 Jun 2022 17:08:22 +0200 Subject: [PATCH 17/25] chore: update go-libp2p to v0.19.3 (#8990) (cherry picked from commit f720172a2a6c92cde058880b4ae0f38400dde70f) --- go.mod | 4 ++-- go.sum | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index b7946841b..cd56046a0 100644 --- a/go.mod +++ b/go.mod @@ -68,7 +68,7 @@ require ( github.com/jbenet/go-temp-err-catcher v0.1.0 github.com/jbenet/goprocess v0.1.4 github.com/libp2p/go-doh-resolver v0.4.0 - github.com/libp2p/go-libp2p v0.19.2 + github.com/libp2p/go-libp2p v0.19.3 github.com/libp2p/go-libp2p-core v0.15.1 github.com/libp2p/go-libp2p-discovery v0.6.0 github.com/libp2p/go-libp2p-http v0.2.1 @@ -203,7 +203,7 @@ require ( github.com/libp2p/go-stream-muxer-multistream v0.4.0 // indirect github.com/libp2p/go-yamux/v3 v3.1.1 // indirect github.com/libp2p/zeroconf/v2 v2.1.1 // indirect - github.com/lucas-clemente/quic-go v0.27.0 // indirect + github.com/lucas-clemente/quic-go v0.27.1 // indirect github.com/marten-seemann/qtls-go1-16 v0.1.5 // indirect github.com/marten-seemann/qtls-go1-17 v0.1.1 // indirect github.com/marten-seemann/qtls-go1-18 v0.1.1 // indirect diff --git a/go.sum b/go.sum index 982d04c45..a74cb3290 100644 --- a/go.sum +++ b/go.sum @@ -766,8 +766,8 @@ github.com/libp2p/go-libp2p v0.13.0/go.mod h1:pM0beYdACRfHO1WcJlp65WXyG2A6NqYM+t github.com/libp2p/go-libp2p v0.14.3/go.mod h1:d12V4PdKbpL0T1/gsUNN8DfgMuRPDX8bS2QxCZlwRH0= github.com/libp2p/go-libp2p v0.14.4/go.mod h1:EIRU0Of4J5S8rkockZM7eJp2S0UrCyi55m2kJVru3rM= github.com/libp2p/go-libp2p v0.16.0/go.mod h1:ump42BsirwAWxKzsCiFnTtN1Yc+DuPu76fyMX364/O4= -github.com/libp2p/go-libp2p v0.19.2 h1:s6XRBBuUnVYn0vBb4LZo/G6V2c/gODJ2K4/H35eGv+4= -github.com/libp2p/go-libp2p v0.19.2/go.mod h1:Ki9jJXLO2YqrTIFxofV7Twyd3INWPT97+r8hGt7XPjI= +github.com/libp2p/go-libp2p v0.19.3 h1:LqjvuBWdyYSqvkH4VVYxA78Fkphzg2Pq86VMnilqgkw= +github.com/libp2p/go-libp2p v0.19.3/go.mod h1:AGlPVLjh0+6jvEtf+a2gZEux7yHJrYXnG9IC7wcQ2NY= 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= @@ -1109,8 +1109,9 @@ github.com/lucas-clemente/quic-go v0.21.2/go.mod h1:vF5M1XqhBAHgbjKcJOXY3JZz3GP0 github.com/lucas-clemente/quic-go v0.23.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0= 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 h1:v6WY87q9zD4dKASbG8hy/LpzAVNzEQzw8sEIeloJsc4= 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/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= From 87fca8f225130fa5104e4477bd52cc0af542c600 Mon Sep 17 00:00:00 2001 From: Gus Eggert Date: Thu, 2 Jun 2022 10:23:42 -0400 Subject: [PATCH 18/25] fix: adjust rcmgr limits for accelerated DHT client rt refresh (#8982) * fix: adjust rcmgr limits for accelerated DHT client rt refresh The Accelerated DHT client periodically refreshes its routing table, including at startup, and if Resource Manager throttling causes the client's routing table to be incomplete, then content routing may be degraded or broken for users. This adjusts the default limits to a level that empirically doesn't cause Resource Manager throttling during initial DHT client bootstrapping. Ideally the Accelerated DHT client would handle this scenario more gracefully, but this works for now to unblock the 0.13 release. * Set default outbound conns unconditionally This also sets the default overall conns as a function of the outbound and inbound conns, since they are adjusted dynamically, and it makes the intention of the value clear. * increase min FD limit (cherry picked from commit b8617b99665fe3b1ae8123fa9a71aad295771057) --- core/node/libp2p/rcmgr_defaults.go | 31 +++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/core/node/libp2p/rcmgr_defaults.go b/core/node/libp2p/rcmgr_defaults.go index 11d243641..3f754fce4 100644 --- a/core/node/libp2p/rcmgr_defaults.go +++ b/core/node/libp2p/rcmgr_defaults.go @@ -25,32 +25,43 @@ func adjustedDefaultLimits(cfg config.SwarmConfig) rcmgr.DefaultLimitConfig { checkImplicitDefaults() } - // Return to use unmodified static limits based on values from go-libp2p 0.18 - // return defaultLimits - // Adjust limits // (based on https://github.com/filecoin-project/lotus/pull/8318/files) // - give it more memory, up to 4G, min of 1G // - if Swarm.ConnMgr.HighWater is too high, adjust Conn/FD/Stream limits defaultLimits := rcmgr.DefaultLimits.WithSystemMemory(.125, 1<<30, 4<<30) + // Outbound conns and FDs are set very high to allow for the accelerated DHT client to (re)load its routing table. + // Currently it doesn't gracefully handle RM throttling--once it does we can lower these. + // High outbound conn limits are considered less of a DoS risk than high inbound conn limits. + // Also note that, due to the behavior of the accelerated DHT client, we don't need many streams, just conns. + if minOutbound := 65536; defaultLimits.SystemBaseLimit.ConnsOutbound < minOutbound { + defaultLimits.SystemBaseLimit.ConnsOutbound = minOutbound + } + if minFD := 4096; defaultLimits.SystemBaseLimit.FD < minFD { + defaultLimits.SystemBaseLimit.FD = minFD + } + // Do we need to adjust due to Swarm.ConnMgr.HighWater? if cfg.ConnMgr.Type == "basic" { maxconns := cfg.ConnMgr.HighWater if 2*maxconns > defaultLimits.SystemBaseLimit.ConnsInbound { - // adjust conns to 2x to allow for two conns per peer (TCP+QUIC) + // Conns should be at least 2x larger than the high water 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) - defaultLimits.SystemBaseLimit.StreamsInbound = logScale(16 * maxconns) - defaultLimits.SystemBaseLimit.StreamsOutbound = logScale(64 * maxconns) - defaultLimits.SystemBaseLimit.Streams = logScale(64 * maxconns) + // We want the floor of minOutbound conns to be no less than what was set above. + if minOutbound := logScale(2 * maxconns); minOutbound > defaultLimits.SystemBaseLimit.ConnsOutbound { + defaultLimits.SystemBaseLimit.ConnsOutbound = minOutbound + } if 2*maxconns > defaultLimits.SystemBaseLimit.FD { defaultLimits.SystemBaseLimit.FD = logScale(2 * maxconns) } + defaultLimits.SystemBaseLimit.StreamsInbound = logScale(16 * maxconns) + defaultLimits.SystemBaseLimit.StreamsOutbound = logScale(64 * maxconns) + defaultLimits.SystemBaseLimit.Streams = logScale(64 * maxconns) + defaultLimits.ServiceBaseLimit.StreamsInbound = logScale(8 * maxconns) defaultLimits.ServiceBaseLimit.StreamsOutbound = logScale(32 * maxconns) defaultLimits.ServiceBaseLimit.Streams = logScale(32 * maxconns) @@ -61,6 +72,8 @@ func adjustedDefaultLimits(cfg config.SwarmConfig) rcmgr.DefaultLimitConfig { } } + defaultLimits.SystemBaseLimit.Conns = defaultLimits.SystemBaseLimit.ConnsOutbound + defaultLimits.SystemBaseLimit.ConnsInbound + return defaultLimits } From 0fe75d63ea9990aaab72e3a3759b47428d991584 Mon Sep 17 00:00:00 2001 From: Gus Eggert Date: Thu, 2 Jun 2022 10:31:06 -0400 Subject: [PATCH 19/25] feat: disable resource manager by default (#9003) * feat: disable resource manager by default We are disabling this by default for v0.13 as we work to improve the UX around Resource Manager. It is still usable and can be enabled in the IPFS config with "ipfs config --bool Swarm.ResourceMgr.Enabled true". We intend to enable Resource Manager by default in a subsequent release. * docs(config): Swarm.ResourceMgr disabled by default Co-authored-by: Marcin Rataj (cherry picked from commit b1c051d2507cec34a9d2b313ea43a092b3fdc4a4) --- CHANGELOG.md | 7 +++- core/node/libp2p/rcmgr.go | 2 +- docs/config.md | 2 +- .../t0116-prometheus-data/prometheus_metrics | 4 -- test/sharness/t0139-swarm-rcmgr.sh | 38 +++++++++---------- 5 files changed, 26 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 463b9448a..1c28aa805 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -74,16 +74,19 @@ To understand the wider context why we made these changes, read *Highlights* bel *You can now easily bound how much resource usage libp2p consumes! This aids in protecting nodes from consuming more resources then are available to them.* -The [libp2p Network Resource Manager](https://github.com/libp2p/go-libp2p-resource-manager#readme) is enabled by default, but can be disabled via: +The [libp2p Network Resource Manager](https://github.com/libp2p/go-libp2p-resource-manager#readme) is disabled by default, but can be enabled via: -`ipfs config --json Swarm.ResourceMgr.Enabled false` +`ipfs config --json Swarm.ResourceMgr.Enabled true` When enabled, it applies some safe defaults that can be inspected and adjusted with: + - `ipfs swarm stats --help` - `ipfs swarm limit --help` User changes persist to config at [`Swarm.ResourceMgr`](https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#swarmresourcemgr). +The Resource Manager will be enabled by default in a future release. + #### 🔃 Relay V2 client with auto discovery (`Swarm.RelayClient`) *All the pieces are enabled for [hole-punching](https://blog.ipfs.io/2022-01-20-libp2p-hole-punching/) by default, improving connecting with nodes behind NATs and Firewalls!* diff --git a/core/node/libp2p/rcmgr.go b/core/node/libp2p/rcmgr.go index 4d4b29a56..c6a4a5f48 100644 --- a/core/node/libp2p/rcmgr.go +++ b/core/node/libp2p/rcmgr.go @@ -31,7 +31,7 @@ func ResourceManager(cfg config.SwarmConfig) interface{} { var manager network.ResourceManager var opts Libp2pOpts - enabled := cfg.ResourceMgr.Enabled.WithDefault(true) + enabled := cfg.ResourceMgr.Enabled.WithDefault(false) /// ENV overrides Config (if present) switch os.Getenv("LIBP2P_RCMGR") { diff --git a/docs/config.md b/docs/config.md index fbdc4540c..8f2cee06f 100644 --- a/docs/config.md +++ b/docs/config.md @@ -1637,7 +1637,7 @@ and tracking recource usage over time. Enables the libp2p Network Resource Manager and auguments the default limits using user-defined ones in `Swarm.ResourceMgr.Limits` (if present). -Default: `true` +Default: `false` Type: `flag` diff --git a/test/sharness/t0116-prometheus-data/prometheus_metrics b/test/sharness/t0116-prometheus-data/prometheus_metrics index adffa4c1b..dd358e82f 100644 --- a/test/sharness/t0116-prometheus-data/prometheus_metrics +++ b/test/sharness/t0116-prometheus-data/prometheus_metrics @@ -656,10 +656,6 @@ leveldb_datastore_sync_latency_seconds_bucket leveldb_datastore_sync_latency_seconds_count leveldb_datastore_sync_latency_seconds_sum leveldb_datastore_sync_total -libp2p_rcmgr_memory_allocations_allowed_total -libp2p_rcmgr_memory_allocations_blocked_total -libp2p_rcmgr_peer_blocked_total -libp2p_rcmgr_peers_allowed_total process_cpu_seconds_total process_max_fds process_open_fds diff --git a/test/sharness/t0139-swarm-rcmgr.sh b/test/sharness/t0139-swarm-rcmgr.sh index 895863004..24b9ebf65 100755 --- a/test/sharness/t0139-swarm-rcmgr.sh +++ b/test/sharness/t0139-swarm-rcmgr.sh @@ -6,6 +6,25 @@ test_description="Test ipfs swarm ResourceMgr config and commands" test_init_ipfs +# test correct behavior when resource manager is disabled (default behavior) +test_launch_ipfs_daemon + +test_expect_success 'Swarm limit should fail since RM is disabled' ' + test_expect_code 1 ipfs swarm limit system 2> actual && + test_should_contain "missing ResourceMgr" actual +' + +test_expect_success 'Swarm stats should fail since RM is disabled' ' + test_expect_code 1 ipfs swarm stats all 2> actual && + test_should_contain "missing ResourceMgr" actual +' + +test_kill_ipfs_daemon + +test_expect_success 'Enable resource manager' ' + ipfs config --bool Swarm.ResourceMgr.Enabled true +' + # swarm limit|stats should fail in offline mode test_expect_success 'disconnected: swarm limit requires running daemon' ' @@ -127,23 +146,4 @@ test_expect_success 'Set limit for peer scope with an invalid peer ID' ' test_kill_ipfs_daemon -# test correct behavior when resource manager is disabled -test_expect_success 'Disable resource manager' ' - ipfs config --bool Swarm.ResourceMgr.Enabled false -' - -test_launch_ipfs_daemon - -test_expect_success 'Swarm limit should fail since RM is disabled' ' - test_expect_code 1 ipfs swarm limit system 2> actual && - test_should_contain "missing ResourceMgr" actual -' - -test_expect_success 'Swarm stats should fail since RM is disabled' ' - test_expect_code 1 ipfs swarm stats all 2> actual && - test_should_contain "missing ResourceMgr" actual -' - -test_kill_ipfs_daemon - test_done From a1a729c5cdcfbd1f75f7655ef9572a2e1ef28805 Mon Sep 17 00:00:00 2001 From: siiky Date: Fri, 3 Jun 2022 13:15:57 +0100 Subject: [PATCH 20/25] docs: fix typo in the `swarm/peering` help text (cherry picked from commit 0a01574ff7860eedfc8dce9354da1780ce0ba91e) --- core/commands/swarm.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/commands/swarm.go b/core/commands/swarm.go index f904ed67e..fcf2a5034 100644 --- a/core/commands/swarm.go +++ b/core/commands/swarm.go @@ -79,7 +79,7 @@ var swarmPeeringCmd = &cmds.Command{ Tagline: "Modify the peering subsystem.", ShortDescription: ` 'ipfs swarm peering' manages the peering subsystem. -Peers in the peering subsystem is maintained to be connected, reconnected +Peers in the peering subsystem are maintained to be connected, reconnected on disconnect with a back-off. The changes are not saved to the config. `, From 7449a4b9189fa62a36a80121a2927a5570d623bc Mon Sep 17 00:00:00 2001 From: Gus Eggert Date: Fri, 3 Jun 2022 16:56:30 -0400 Subject: [PATCH 21/25] feat: upgrade to go-libp2p-kad-dht@v0.16.0 (#9005) * feat: upgrade to go-libp2p-kad-dht@v0.16.0 * rename "cid format --codec" to "cid format --mc" * refactor(test): from --codec to --mc Co-authored-by: Marcin Rataj (cherry picked from commit 8d7ed002dfd814651edacc0b11581d5571376ffb) --- CHANGELOG.md | 5 ++ core/commands/cid.go | 22 ++--- go.mod | 50 +++++------ go.sum | 102 +++++++++++++--------- test/sharness/t0087-repo-robust-gc.sh | 2 +- test/sharness/t0114-gateway-subdomains.sh | 4 +- test/sharness/t0160-resolve.sh | 4 +- test/sharness/t0290-cid.sh | 22 ++++- test/sharness/t0310-tracing.sh | 2 +- tracing/tracing.go | 5 +- 10 files changed, 130 insertions(+), 88 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c28aa805..66c966b99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,6 +53,11 @@ Below is an outline of all that is in this release, so you get a sense of all th - Now lists codecs from [go-multicodec](https://github.com/multiformats/go-multicodec) library. - `ipfs cid codecs --supported` can be passed to only show codecs supported in various go-ipfs commands. +#### `ipfs cid format` command +- `--codec` was removed and replaced with `--mc` to ensure existing users are aware of the following changes: + - `--mc protobuf` now correctly points to code `0x50` (was `0x70`, which is `dab-pg`) + - `--mc cbor` now correctly points to code `0x51` (was `0x71`, which is `dag-cbor`) + #### `Swarm` configuration - Daemon will refuse to start if long-deprecated RelayV1 config key `Swarm.EnableAutoRelay` or `Swarm.DisableRelay` is set to `true`. - If `Swarm.Transports.Network.Relay` is disabled, then `Swarm.RelayService` and `Swarm.RelayClient` are also disabled (unless they have been explicitly enabled). diff --git a/core/commands/cid.go b/core/commands/cid.go index 645086090..f988d1c8c 100644 --- a/core/commands/cid.go +++ b/core/commands/cid.go @@ -11,8 +11,9 @@ import ( cidutil "github.com/ipfs/go-cidutil" cmds "github.com/ipfs/go-ipfs-cmds" verifcid "github.com/ipfs/go-verifcid" - "github.com/ipld/go-ipld-prime/multicodec" + ipldmulticodec "github.com/ipld/go-ipld-prime/multicodec" mbase "github.com/multiformats/go-multibase" + "github.com/multiformats/go-multicodec" mc "github.com/multiformats/go-multicodec" mhash "github.com/multiformats/go-multihash" ) @@ -34,7 +35,7 @@ var CidCmd = &cmds.Command{ const ( cidFormatOptionName = "f" cidVerisonOptionName = "v" - cidCodecOptionName = "codec" + cidCodecOptionName = "mc" cidMultibaseOptionName = "b" ) @@ -53,7 +54,7 @@ The optional format string is a printf style format string: Options: []cmds.Option{ cmds.StringOption(cidFormatOptionName, "Printf style format string.").WithDefault("%s"), cmds.StringOption(cidVerisonOptionName, "CID version to convert to."), - cmds.StringOption(cidCodecOptionName, "CID codec to convert to."), + cmds.StringOption(cidCodecOptionName, "CID multicodec to convert to."), cmds.StringOption(cidMultibaseOptionName, "Multibase to display CID in."), }, Run: func(req *cmds.Request, resp cmds.ResponseEmitter, env cmds.Environment) error { @@ -70,11 +71,12 @@ The optional format string is a printf style format string: opts.fmtStr = fmtStr if codecStr != "" { - codec, ok := cid.Codecs[codecStr] - if !ok { - return fmt.Errorf("unknown IPLD codec: %q", codecStr) + var codec multicodec.Code + err := codec.Set(codecStr) + if err != nil { + return err } - opts.newCodec = codec + opts.newCodec = uint64(codec) } // otherwise, leave it as 0 (not a valid IPLD codec) switch verStr { @@ -311,7 +313,7 @@ const ( var codecsCmd = &cmds.Command{ Helptext: cmds.HelpText{ - Tagline: "List available CID codecs.", + Tagline: "List available CID multicodecs.", ShortDescription: ` 'ipfs cid codecs' relies on https://github.com/multiformats/go-multicodec `, @@ -324,10 +326,10 @@ var codecsCmd = &cmds.Command{ listSupported, _ := req.Options[codecsSupportedOptionName].(bool) supportedCodecs := make(map[uint64]struct{}) if listSupported { - for _, code := range multicodec.ListEncoders() { + for _, code := range ipldmulticodec.ListEncoders() { supportedCodecs[code] = struct{}{} } - for _, code := range multicodec.ListDecoders() { + for _, code := range ipldmulticodec.ListDecoders() { supportedCodecs[code] = struct{}{} } // add libp2p-key diff --git a/go.mod b/go.mod index cd56046a0..cb914b455 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ require ( bazil.org/fuse v0.0.0-20200117225306-7b5117fecadc contrib.go.opencensus.io/exporter/prometheus v0.4.0 github.com/blang/semver/v4 v4.0.0 - github.com/cenkalti/backoff/v4 v4.1.2 + github.com/cenkalti/backoff/v4 v4.1.3 github.com/ceramicnetwork/go-dag-jose v0.1.0 github.com/cespare/xxhash v1.1.0 github.com/cheggaaa/pb v1.0.29 @@ -18,8 +18,8 @@ require ( github.com/ipfs/go-bitswap v0.6.0 github.com/ipfs/go-block-format v0.0.3 github.com/ipfs/go-blockservice v0.3.0 - github.com/ipfs/go-cid v0.1.0 - github.com/ipfs/go-cidutil v0.0.2 + github.com/ipfs/go-cid v0.2.0 + github.com/ipfs/go-cidutil v0.1.0 github.com/ipfs/go-datastore v0.5.1 github.com/ipfs/go-detect-race v0.0.1 github.com/ipfs/go-ds-badger v0.3.0 @@ -72,7 +72,7 @@ require ( github.com/libp2p/go-libp2p-core v0.15.1 github.com/libp2p/go-libp2p-discovery v0.6.0 github.com/libp2p/go-libp2p-http v0.2.1 - github.com/libp2p/go-libp2p-kad-dht v0.15.0 + github.com/libp2p/go-libp2p-kad-dht v0.16.0 github.com/libp2p/go-libp2p-kbucket v0.4.7 github.com/libp2p/go-libp2p-loggables v0.1.0 github.com/libp2p/go-libp2p-mplex v0.7.0 @@ -108,21 +108,21 @@ require ( github.com/whyrusleeping/go-sysinfo v0.0.0-20190219211824-4a357d4b90b1 github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 go.opencensus.io v0.23.0 - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.31.0 - go.opentelemetry.io/otel v1.6.3 - go.opentelemetry.io/otel/exporters/jaeger v1.6.3 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.6.3 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.6.3 - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.6.3 - go.opentelemetry.io/otel/exporters/zipkin v1.6.3 - go.opentelemetry.io/otel/sdk v1.6.3 - go.opentelemetry.io/otel/trace v1.6.3 + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0 + go.opentelemetry.io/otel v1.7.0 + go.opentelemetry.io/otel/exporters/jaeger v1.7.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.7.0 + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.7.0 + go.opentelemetry.io/otel/exporters/zipkin v1.7.0 + go.opentelemetry.io/otel/sdk v1.7.0 + go.opentelemetry.io/otel/trace v1.7.0 go.uber.org/dig v1.14.0 go.uber.org/fx v1.16.0 go.uber.org/zap v1.21.0 - golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 + golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - golang.org/x/sys v0.0.0-20220412211240-33da011f77ad + golang.org/x/sys v0.0.0-20220517195934-5e4e11fc645e ) require ( @@ -137,7 +137,7 @@ require ( github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a // indirect github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/btcsuite/btcd v0.22.0-beta // indirect + github.com/btcsuite/btcd v0.22.1 // indirect github.com/cenkalti/backoff v2.2.1+incompatible // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/cheekybits/genny v1.0.0 // indirect @@ -150,7 +150,7 @@ require ( github.com/dgraph-io/ristretto v0.0.2 // indirect github.com/docker/go-units v0.4.0 // indirect github.com/elastic/gosigar v0.14.2 // indirect - github.com/felixge/httpsnoop v1.0.2 // indirect + github.com/felixge/httpsnoop v1.0.3 // indirect github.com/flynn/noise v1.0.0 // indirect github.com/francoispqt/gojay v1.2.13 // indirect github.com/go-kit/log v0.2.0 // indirect @@ -168,7 +168,7 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect github.com/hannahhoward/go-pubsub v0.0.0-20200423002714-8d62886cc36e // indirect - github.com/hashicorp/errwrap v1.0.0 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/huin/goupnp v1.0.3 // indirect github.com/ipfs/bbloom v0.0.4 // indirect @@ -192,7 +192,7 @@ require ( github.com/libp2p/go-libp2p-nat v0.1.0 // indirect github.com/libp2p/go-libp2p-pnet v0.2.0 // indirect github.com/libp2p/go-libp2p-transport-upgrader v0.7.1 // indirect - github.com/libp2p/go-libp2p-xor v0.0.0-20210714161855-5c005aca55db // indirect + github.com/libp2p/go-libp2p-xor v0.1.0 // indirect github.com/libp2p/go-mplex v0.7.0 // indirect github.com/libp2p/go-msgio v0.2.0 // indirect github.com/libp2p/go-nat v0.1.0 // indirect @@ -248,16 +248,16 @@ require ( github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9 // indirect github.com/whyrusleeping/timecache v0.0.0-20160911033111-cfcb2f1abfee // indirect - go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.6.3 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.6.3 // indirect - go.opentelemetry.io/otel/metric v0.28.0 // indirect - go.opentelemetry.io/proto/otlp v0.15.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0 // indirect + go.opentelemetry.io/otel/metric v0.30.0 // indirect + go.opentelemetry.io/proto/otlp v0.16.0 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.8.0 // indirect go4.org v0.0.0-20200411211856-f5505b9728dd // indirect golang.org/x/exp v0.0.0-20210615023648-acb5c1269671 // indirect golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect - golang.org/x/net v0.0.0-20220418201149-a630d4f3e7a2 // indirect + golang.org/x/net v0.0.0-20220517181318-183a9ca12b87 // indirect golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b // indirect golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect golang.org/x/text v0.3.7 // indirect @@ -265,7 +265,7 @@ require ( golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f // indirect google.golang.org/appengine v1.6.6 // indirect google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1 // indirect - google.golang.org/grpc v1.45.0 // indirect + google.golang.org/grpc v1.46.0 // indirect google.golang.org/protobuf v1.28.0 // indirect gopkg.in/square/go-jose.v2 v2.5.1 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect diff --git a/go.sum b/go.sum index a74cb3290..1d8452a80 100644 --- a/go.sum +++ b/go.sum @@ -103,8 +103,11 @@ github.com/btcsuite/btcd v0.0.0-20190605094302-a0d1e3e36d50/go.mod h1:3J08xEfcug github.com/btcsuite/btcd v0.0.0-20190824003749-130ea5bddde3/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= -github.com/btcsuite/btcd v0.22.0-beta h1:LTDpDKUM5EeOFBPM8IXpinEcmZ6FWfNZbE3lfrfdnWo= 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/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= @@ -121,8 +124,8 @@ github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7 github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.1.2 h1:6Yo7N8UP2K6LWZnW94DLVSSrbobcWdVzAYOisuDPIFo= -github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/ceramicnetwork/go-dag-jose v0.1.0 h1:yJ/HVlfKpnD3LdYP03AHyTvbm3BpPiz2oZiOeReJRdU= github.com/ceramicnetwork/go-dag-jose v0.1.0/go.mod h1:qYA1nYt0X8u4XoMAVoOV3upUVKtrxy/I670Dg5F0wjI= @@ -148,6 +151,7 @@ github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XP github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= @@ -220,14 +224,16 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/facebookgo/atomicfile v0.0.0-20151019160806-2de1f203e7d5 h1:BBso6MBKW8ncyZLv37o+KNyy0HrrHgfnOaGQC2qvN+A= github.com/facebookgo/atomicfile v0.0.0-20151019160806-2de1f203e7d5/go.mod h1:JpoxHjuQauoxiFMl1ie8Xc/7TfLuMZ5eOCONd1sUBHg= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= +github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/flynn/noise v0.0.0-20180327030543-2492fe189ae6/go.mod h1:1i71OnUq3iUe1ma7Lr6yG6/rjvM3emb6yoL7xLFzcVQ= github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= @@ -401,8 +407,9 @@ github.com/hannahhoward/go-pubsub v0.0.0-20200423002714-8d62886cc36e h1:3YKHER4n github.com/hannahhoward/go-pubsub v0.0.0-20200423002714-8d62886cc36e/go.mod h1:I8h3MITA53gN9OnWGCgaMa0JWVRdXthWw4M3CPM54OY= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -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.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= @@ -467,10 +474,12 @@ github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog= github.com/ipfs/go-cid v0.0.6/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= -github.com/ipfs/go-cid v0.1.0 h1:YN33LQulcRHjfom/i25yoOZR4Telp1Hr/2RU3d0PnC0= github.com/ipfs/go-cid v0.1.0/go.mod h1:rH5/Xv83Rfy8Rw6xG+id3DYAMUVmem1MowoKwdXmN2o= -github.com/ipfs/go-cidutil v0.0.2 h1:CNOboQf1t7Qp0nuNh8QMmhJs0+Q//bRL1axtCnIB1Yo= +github.com/ipfs/go-cid v0.2.0 h1:01JTiihFq9en9Vz0lc0VDWvZe/uBonGpzo4THP0vcQ0= +github.com/ipfs/go-cid v0.2.0/go.mod h1:P+HXFDF4CVhaVayiEb4wkAy7zBHxBwsJyt0Y5U6MLro= github.com/ipfs/go-cidutil v0.0.2/go.mod h1:ewllrvrxG6AMYStla3GD7Cqn+XYSLqjK0vc+086tB6s= +github.com/ipfs/go-cidutil v0.1.0 h1:RW5hO7Vcf16dplUU60Hs0AKDkQAVPVplr7lk97CFL+Q= +github.com/ipfs/go-cidutil v0.1.0/go.mod h1:e7OEVBMIv9JaOxt9zaGEmAoSlXW9jdFZ5lP/0PwcfpA= github.com/ipfs/go-datastore v0.0.1/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= github.com/ipfs/go-datastore v0.0.5/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= github.com/ipfs/go-datastore v0.1.0/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= @@ -766,6 +775,7 @@ github.com/libp2p/go-libp2p v0.13.0/go.mod h1:pM0beYdACRfHO1WcJlp65WXyG2A6NqYM+t github.com/libp2p/go-libp2p v0.14.3/go.mod h1:d12V4PdKbpL0T1/gsUNN8DfgMuRPDX8bS2QxCZlwRH0= github.com/libp2p/go-libp2p v0.14.4/go.mod h1:EIRU0Of4J5S8rkockZM7eJp2S0UrCyi55m2kJVru3rM= github.com/libp2p/go-libp2p v0.16.0/go.mod h1:ump42BsirwAWxKzsCiFnTtN1Yc+DuPu76fyMX364/O4= +github.com/libp2p/go-libp2p v0.18.0/go.mod h1:+veaZ9z1SZQhmc5PW78jvnnxZ89Mgvmh4cggO11ETmw= github.com/libp2p/go-libp2p v0.19.3 h1:LqjvuBWdyYSqvkH4VVYxA78Fkphzg2Pq86VMnilqgkw= github.com/libp2p/go-libp2p v0.19.3/go.mod h1:AGlPVLjh0+6jvEtf+a2gZEux7yHJrYXnG9IC7wcQ2NY= github.com/libp2p/go-libp2p-asn-util v0.0.0-20200825225859-85005c6cf052/go.mod h1:nRMRTab+kZuk0LnKZpxhOVH/ndsdr2Nr//Zltc/vwgo= @@ -849,8 +859,9 @@ github.com/libp2p/go-libp2p-interface-connmgr v0.0.1/go.mod h1:GarlRLH0LdeWcLnYM github.com/libp2p/go-libp2p-interface-connmgr v0.0.4/go.mod h1:GarlRLH0LdeWcLnYM/SaBykKFl9U5JFnbBGruAk/D5k= 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.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.0 h1:epVRYl3O8dn47uV3wVD2+IobEvBPapEMVj4sWlvwQHU= +github.com/libp2p/go-libp2p-kad-dht v0.16.0/go.mod h1:YYLlG8AbpWVGbI/zFeSbiGT0n0lluH7IG0sHeounyWA= 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= github.com/libp2p/go-libp2p-kbucket v0.4.7/go.mod h1:XyVo99AfQH0foSf176k4jY1xUJ2+jUJIZCSDm7r2YKk= @@ -867,6 +878,7 @@ github.com/libp2p/go-libp2p-mplex v0.3.0/go.mod h1:l9QWxRbbb5/hQMECEb908GbS9Sm2U github.com/libp2p/go-libp2p-mplex v0.4.0/go.mod h1:yCyWJE2sc6TBTnFpjvLuEJgTSw/u+MamvzILKdX7asw= github.com/libp2p/go-libp2p-mplex v0.4.1/go.mod h1:cmy+3GfqfM1PceHTLL7zQzAAYaryDu6iPSC+CIb094g= github.com/libp2p/go-libp2p-mplex v0.5.0/go.mod h1:eLImPJLkj3iG5t5lq68w3Vm5NAQ5BcKwrrb2VmOYb3M= +github.com/libp2p/go-libp2p-mplex v0.6.0/go.mod h1:i3usuPrBbh9FD2fLZjGpotyNkwr42KStYZQY7BeTiu4= github.com/libp2p/go-libp2p-mplex v0.7.0 h1:ONTTvHIUaFCwyPO4FRkpe4OFQJq1bDkWQLbhWiD1A44= github.com/libp2p/go-libp2p-mplex v0.7.0/go.mod h1:SeeXUXh7ZkfxnmsepnFgMPEhfEyACujuTM9k1TkErpc= github.com/libp2p/go-libp2p-nat v0.0.4/go.mod h1:N9Js/zVtAXqaeT99cXgTV9e75KpnWCvVOiGzlcHmBbY= @@ -915,6 +927,7 @@ github.com/libp2p/go-libp2p-quic-transport v0.11.2/go.mod h1:wlanzKtIh6pHrq+0U3p github.com/libp2p/go-libp2p-quic-transport v0.13.0/go.mod h1:39/ZWJ1TW/jx1iFkKzzUg00W6tDJh73FC0xYudjr7Hc= github.com/libp2p/go-libp2p-quic-transport v0.15.0/go.mod h1:wv4uGwjcqe8Mhjj7N/Ic0aKjA+/10UnMlSzLO0yRpYQ= github.com/libp2p/go-libp2p-quic-transport v0.16.0/go.mod h1:1BXjVMzr+w7EkPfiHkKnwsWjPjtfaNT0q8RS3tGDvEQ= +github.com/libp2p/go-libp2p-quic-transport v0.16.1/go.mod h1:1BXjVMzr+w7EkPfiHkKnwsWjPjtfaNT0q8RS3tGDvEQ= github.com/libp2p/go-libp2p-quic-transport v0.17.0 h1:yFh4Gf5MlToAYLuw/dRvuzYd1EnE2pX3Lq1N6KDiWRQ= github.com/libp2p/go-libp2p-quic-transport v0.17.0/go.mod h1:x4pw61P3/GRCcSLypcQJE/Q2+E9f4X+5aRcZLXf20LM= github.com/libp2p/go-libp2p-record v0.0.1/go.mod h1:grzqg263Rug/sRex85QrDOLntdFAymLDLm7lxMgU79Q= @@ -922,6 +935,7 @@ github.com/libp2p/go-libp2p-record v0.1.0/go.mod h1:ujNc8iuE5dlKWVy6wuL6dd58t0n7 github.com/libp2p/go-libp2p-record v0.1.2/go.mod h1:pal0eNcT5nqZaTV7UGhqeGqxFgGdsU/9W//C8dqjQDk= github.com/libp2p/go-libp2p-record v0.1.3 h1:R27hoScIhQf/A8XJZ8lYpnqh9LatJ5YbHs28kCIfql0= 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= @@ -959,6 +973,7 @@ github.com/libp2p/go-libp2p-testing v0.4.0/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotl github.com/libp2p/go-libp2p-testing v0.4.2/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0= github.com/libp2p/go-libp2p-testing v0.5.0/go.mod h1:QBk8fqIL1XNcno/l3/hhaIEn4aLRijpYOR+zVjjlh+A= 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= @@ -981,8 +996,9 @@ github.com/libp2p/go-libp2p-transport-upgrader v0.5.0/go.mod h1:Rc+XODlB3yce7dvF 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 h1:MSMe+tUfxpC9GArTz7a4G5zQKQgGh00Vio87d3j3xIg= 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 h1:EDoDKW8ZAHd6SIDeo+thU51PyQppqLYkBxx0ObvFj/w= 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 h1:hhQwT4uGrBcuAkUGXADuPltalOdpf9aag9kaYNT2tLA= +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= @@ -998,6 +1014,7 @@ github.com/libp2p/go-libp2p-yamux v0.5.4/go.mod h1:tfrXbyaTqqSU654GTvK3ocnSZL3Bu github.com/libp2p/go-libp2p-yamux v0.6.0/go.mod h1:MRhd6mAYnFRnSISp4M8i0ClV/j+mWHo2mYLifWGw33k= github.com/libp2p/go-libp2p-yamux v0.8.0/go.mod h1:yTkPgN2ib8FHyU1ZcVD7aelzyAqXXwEPbyx+aSKm9h8= github.com/libp2p/go-libp2p-yamux v0.8.1/go.mod h1:rUozF8Jah2dL9LLGyBaBeTQeARdwhefMCTQVQt6QobE= +github.com/libp2p/go-libp2p-yamux v0.8.2/go.mod h1:rUozF8Jah2dL9LLGyBaBeTQeARdwhefMCTQVQt6QobE= github.com/libp2p/go-libp2p-yamux v0.9.1 h1:oplewiRix8s45SOrI30rCPZG5mM087YZp+VYhXAh4+c= github.com/libp2p/go-libp2p-yamux v0.9.1/go.mod h1:wRc6wvyxQINFcKe7daL4BeQ02Iyp+wxyC8WCNfngBrA= github.com/libp2p/go-maddr-filter v0.0.1/go.mod h1:6eT12kSQMA9x2pvFQa+xesMKUBlj9VImZbj3B9FBH/Q= @@ -1012,6 +1029,7 @@ github.com/libp2p/go-mplex v0.1.2/go.mod h1:Xgz2RDCi3co0LeZfgjm4OgUF15+sVR8SRcu3 github.com/libp2p/go-mplex v0.2.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ= 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= @@ -1566,45 +1584,43 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.31.0 h1:woM+Mb4d0A+Dxa3rYPenSN5ZeS9qHUvE8rlObiLRXTY= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.31.0/go.mod h1:PFmBsWbldL1kiWZk9+0LBZz2brhByaGsvp6pRICMlPE= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0 h1:mac9BKRqwaX6zxHPDe3pvmWpwuuIM0vuXv2juCnQevE= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0/go.mod h1:5eCOqeGphOyz6TsY3ZDNjE33SM/TFAK3RGuCL2naTgY= 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.6.0/go.mod h1:bfJD2DZVw0LBxghOTlgnlI0CV3hLDu9XF/QKOUXMTQQ= -go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ= -go.opentelemetry.io/otel v1.6.3 h1:FLOfo8f9JzFVFVyU+MSRJc2HdEAXQgm7pIv2uFKRSZE= go.opentelemetry.io/otel v1.6.3/go.mod h1:7BgNga5fNlF/iZjG06hM3yofffp0ofKCDwSXx1GC4dI= -go.opentelemetry.io/otel/exporters/jaeger v1.6.3 h1:7tvBU1Ydbzq080efuepYYqC1Pv3/vOFBgCSrxLb24d0= -go.opentelemetry.io/otel/exporters/jaeger v1.6.3/go.mod h1:YgX3eZWbJzgrNyNHCK0otGreAMBTIAcObtZS2VRi6sU= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.6.3 h1:nAmg1WgsUXoXf46dJG9eS/AzOcvkCTK4xJSUYpWyHYg= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.6.3/go.mod h1:NEu79Xo32iVb+0gVNV8PMd7GoWqnyDXRlj04yFjqz40= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.6.3 h1:4/UjHWMVVc5VwX/KAtqJOHErKigMCH8NexChMuanb/o= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.6.3/go.mod h1:UJmXdiVVBaZ63umRUTwJuCMAV//GCMvDiQwn703/GoY= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.6.3 h1:leYDq5psbM3K4QNcZ2juCj30LjUnvxjuYQj1mkGjXFM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.6.3/go.mod h1:ycItY/esVj8c0dKgYTOztTERXtPzcfDU/0o8EdwCjoA= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.6.3 h1:ufVuVt/g16GZ/yDOyp+AcCGebGX8u4z7kDRuwEX0DkA= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.6.3/go.mod h1:S18p8VK4KRHHyAg5rH3iUnJUcRvIUg9xwIWtq1MWibM= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.6.3 h1:uSApZ0WGBOrEMNp0rtX1jtpYBh5CvktueAEHTWfLOtk= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.6.3/go.mod h1:LhMjYbVawqjXUIRbAT2CFuWtuQVxTPL8WEtxB/Iyg5Y= -go.opentelemetry.io/otel/exporters/zipkin v1.6.3 h1:5BzTuSYCahVIsRlxZjJO23WUsJjq/q70TnmNZz5Klk8= -go.opentelemetry.io/otel/exporters/zipkin v1.6.3/go.mod h1:JRfrU4shvi54xFL5KA9ftJv7El3FMMpkz3V2S8aZ/q0= +go.opentelemetry.io/otel v1.7.0 h1:Z2lA3Tdch0iDcrhJXDIlC94XE+bxok1F9B+4Lz/lGsM= +go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= +go.opentelemetry.io/otel/exporters/jaeger v1.7.0 h1:wXgjiRldljksZkZrldGVe6XrG9u3kYDyQmkZwmm5dI0= +go.opentelemetry.io/otel/exporters/jaeger v1.7.0/go.mod h1:PwQAOqBgqbLQRKlj466DuD2qyMjbtcPpfPfj+AqbSBs= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0 h1:7Yxsak1q4XrJ5y7XBnNwqWx9amMZvoidCctv62XOQ6Y= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0/go.mod h1:M1hVZHNxcbkAlcvrOMlpQ4YOO3Awf+4N2dxkZL3xm04= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0 h1:cMDtmgJ5FpRvqx9x2Aq+Mm0O6K/zcUkH73SFz20TuBw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0/go.mod h1:ceUgdyfNv4h4gLxHR0WNfDiiVmZFodZhZSbOLhpxqXE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0 h1:MFAyzUPrTwLOwCi+cltN0ZVyy4phU41lwH+lyMyQTS4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0/go.mod h1:E+/KKhwOSw8yoPxSSuUHG6vKppkvhN+S1Jc7Nib3k3o= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.7.0 h1:pLP0MH4MAqeTEV0g/4flxw9O8Is48uAIauAnjznbW50= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.7.0/go.mod h1:aFXT9Ng2seM9eizF+LfKiyPBGy8xIZKwhusC1gIu3hA= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.7.0 h1:8hPcgCg0rUJiKE6VWahRvjgLUrNl7rW2hffUEPKXVEM= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.7.0/go.mod h1:K4GDXPY6TjUiwbOh+DkKaEdCF8y+lvMoM6SeAPyfCCM= +go.opentelemetry.io/otel/exporters/zipkin v1.7.0 h1:X0FZj+kaIdLi29UiyrEGDhRTYsEXj9GdEW5Y39UQFEE= +go.opentelemetry.io/otel/exporters/zipkin v1.7.0/go.mod h1:9YBXeOMFLQGwNEjsxMRiWPGoJX83usGMhbCmxUbNe5I= go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/metric v0.28.0 h1:o5YNh+jxACMODoAo1bI7OES0RUW4jAMae0Vgs2etWAQ= -go.opentelemetry.io/otel/metric v0.28.0/go.mod h1:TrzsfQAmQaB1PDcdhBauLMk7nyyg9hm+GoQq/ekE9Iw= +go.opentelemetry.io/otel/metric v0.30.0 h1:Hs8eQZ8aQgs0U49diZoaS6Uaxw3+bBE3lcMUKBFIk3c= +go.opentelemetry.io/otel/metric v0.30.0/go.mod h1:/ShZ7+TS4dHzDFmfi1kSXMhMVubNoP0oIaBp70J6UXU= go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= go.opentelemetry.io/otel/sdk v1.2.0/go.mod h1:jNN8QtpvbsKhgaC6V5lHiejMoKD+V8uadoSafgHPx1U= -go.opentelemetry.io/otel/sdk v1.6.3 h1:prSHYdwCQOX5DrsEzxowH3nLhoAzEBdZhvrR79scfLs= -go.opentelemetry.io/otel/sdk v1.6.3/go.mod h1:A4iWF7HTXa+GWL/AaqESz28VuSBIcZ+0CV+IzJ5NMiQ= +go.opentelemetry.io/otel/sdk v1.7.0 h1:4OmStpcKVOfvDOgCt7UriAPtKolwIhxpnSNI/yK+1B0= +go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU= 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.6.0/go.mod h1:qs7BrU5cZ8dXQHBGxHMOxwME/27YH2qEp4/+tZLLwJE= -go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0= -go.opentelemetry.io/otel/trace v1.6.3 h1:IqN4L+5b0mPNjdXIiZ90Ni4Bl5BRkDQywePLWemd9bc= go.opentelemetry.io/otel/trace v1.6.3/go.mod h1:GNJQusJlUgZl9/TQBPKU/Y/ty+0iVB5fjhKeJGZPGFs= +go.opentelemetry.io/otel/trace v1.7.0 h1:O37Iogk1lEkMRXewVtZ1BBTVn5JEp8GrJvP92bJqC6o= +go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.15.0 h1:h0bKrvdrT/9sBwEJ6iWUqT/N/xPcS66bL4u3isneJ6w= -go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.16.0 h1:WHzDWdXUvbc5bG2ObdrGfaNpQz7ft7QN9HHmJlbiB1E= +go.opentelemetry.io/proto/otlp v0.16.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -1680,8 +1696,9 @@ golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210813211128-0a44fdfbc16e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA= golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898 h1:SLP7Q4Di66FONjDJbCYrCRrh97focO6sLogHO7/g8F0= +golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1783,8 +1800,9 @@ 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-20220517181318-183a9ca12b87 h1:cCR+9mKLOGyX4Zx+uBZDXEDAQsvKQ/XbW4vreG5v1jU= +golang.org/x/net v0.0.0-20220517181318-183a9ca12b87/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= 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= @@ -1897,8 +1915,9 @@ golang.org/x/sys v0.0.0-20210903071746-97244b99971b/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220517195934-5e4e11fc645e h1:w36l2Uw3dRan1K3TyXriXvY+6T56GNmlKGcqiQUJDfM= +golang.org/x/sys v0.0.0-20220517195934-5e4e11fc645e/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-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= @@ -2077,8 +2096,9 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0 h1:oCjezcn6g6A75TGoKYBPgKmVBLexhYLM6MebdrPApP8= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/test/sharness/t0087-repo-robust-gc.sh b/test/sharness/t0087-repo-robust-gc.sh index 89cfbb9b2..884de5774 100755 --- a/test/sharness/t0087-repo-robust-gc.sh +++ b/test/sharness/t0087-repo-robust-gc.sh @@ -10,7 +10,7 @@ test_description="Test robustness of garbage collector" set -e to_raw_cid() { - ipfs cid format -b b --codec raw -v 1 "$1" + ipfs cid format -b b --mc raw -v 1 "$1" } test_gc_robust_part1() { diff --git a/test/sharness/t0114-gateway-subdomains.sh b/test/sharness/t0114-gateway-subdomains.sh index 41abd4a87..f9ab0d824 100755 --- a/test/sharness/t0114-gateway-subdomains.sh +++ b/test/sharness/t0114-gateway-subdomains.sh @@ -116,7 +116,7 @@ test_expect_success "Add the test directory" ' test_expect_success "Publish test text file to IPNS using RSA keys" ' RSA_KEY=$(ipfs key gen --ipns-base=b58mh --type=rsa --size=2048 test_key_rsa | head -n1 | tr -d "\n") RSA_IPNS_IDv0=$(echo "$RSA_KEY" | ipfs cid format -v 0) - RSA_IPNS_IDv1=$(echo "$RSA_KEY" | ipfs cid format -v 1 --codec libp2p-key -b base36) + RSA_IPNS_IDv1=$(echo "$RSA_KEY" | ipfs cid format -v 1 --mc libp2p-key -b base36) RSA_IPNS_IDv1_DAGPB=$(echo "$RSA_IPNS_IDv0" | ipfs cid format -v 1 -b base36) test_check_peerid "${RSA_KEY}" && ipfs name publish --key test_key_rsa --allow-offline -Q "/ipfs/$CIDv1" > name_publish_out && @@ -129,7 +129,7 @@ test_expect_success "Publish test text file to IPNS using ED25519 keys" ' ED25519_KEY=$(ipfs key gen --ipns-base=b58mh --type=ed25519 test_key_ed25519 | head -n1 | tr -d "\n") ED25519_IPNS_IDv0=$ED25519_KEY ED25519_IPNS_IDv1=$(ipfs key list -l --ipns-base=base36 | grep test_key_ed25519 | cut -d " " -f1 | tr -d "\n") - ED25519_IPNS_IDv1_DAGPB=$(echo "$ED25519_IPNS_IDv1" | ipfs cid format -v 1 -b base36 --codec protobuf) + ED25519_IPNS_IDv1_DAGPB=$(echo "$ED25519_IPNS_IDv1" | ipfs cid format -v 1 -b base36 --mc dag-pb) test_check_peerid "${ED25519_KEY}" && ipfs name publish --key test_key_ed25519 --allow-offline -Q "/ipfs/$CIDv1" > name_publish_out && ipfs name resolve "$ED25519_KEY" > output && diff --git a/test/sharness/t0160-resolve.sh b/test/sharness/t0160-resolve.sh index 4b9677049..ca11947b0 100755 --- a/test/sharness/t0160-resolve.sh +++ b/test/sharness/t0160-resolve.sh @@ -121,8 +121,8 @@ test_resolve_cmd_b32() { # peer ID represented as CIDv1 require libp2p-key multicodec # https://github.com/libp2p/specs/blob/master/RFC/0001-text-peerid-cid.md - local self_hash_b32protobuf=$(echo $self_hash | ipfs cid format -v 1 -b b --codec protobuf) - local self_hash_b32libp2pkey=$(echo $self_hash | ipfs cid format -v 1 -b b --codec libp2p-key) + local self_hash_b32protobuf=$(echo $self_hash | ipfs cid format -v 1 -b b --mc dag-pb) + local self_hash_b32libp2pkey=$(echo $self_hash | ipfs cid format -v 1 -b b --mc libp2p-key) test_expect_success "resolve of /ipns/{cidv1} with multicodec other than libp2p-key returns a meaningful error" ' test_expect_code 1 ipfs resolve /ipns/$self_hash_b32protobuf 2>cidcodec_error && test_should_contain "Error: peer ID represented as CIDv1 require libp2p-key multicodec: retry with /ipns/$self_hash_b32libp2pkey" cidcodec_error diff --git a/test/sharness/t0290-cid.sh b/test/sharness/t0290-cid.sh index b6518892e..7f0e0e181 100755 --- a/test/sharness/t0290-cid.sh +++ b/test/sharness/t0290-cid.sh @@ -13,6 +13,7 @@ CIDb32="bafybeibxm2nsadl3fnxv2sxcxmxaco2jl53wpeorjdzidjwf5aqdg7wa6u" CIDbase="QmYNmQKp6SuaVrpgWRsPTgCQCnpxUYGq76YEKBXuj2N4H6" CIDb32pb="bafybeievd6mwe6vcwnkwo3eizs3h7w3a34opszbyfxziqdxguhjw7imdve" CIDb32raw="bafkreievd6mwe6vcwnkwo3eizs3h7w3a34opszbyfxziqdxguhjw7imdve" +CIDb32dagcbor="bafyreievd6mwe6vcwnkwo3eizs3h7w3a34opszbyfxziqdxguhjw7imdve" test_expect_success "cid base32 works" ' echo $CIDb32 > expected && @@ -284,13 +285,28 @@ test_expect_success "cid hashes --numeric" ' test_expect_success "cid format -c raw" ' echo $CIDb32raw > expected && - ipfs cid format --codec raw -b base32 $CIDb32pb > actual && + ipfs cid format --mc raw -b base32 $CIDb32pb > actual && test_cmp actual expected ' -test_expect_success "cid format -c protobuf -v 0" ' +test_expect_success "cid format --mc dag-pb -v 0" ' echo $CIDbase > expected && - ipfs cid format --codec protobuf -v 0 $CIDb32raw > actual && + ipfs cid format --mc dag-pb -v 0 $CIDb32raw > actual && + test_cmp actual expected +' + +test_expect_success "cid format --mc dag-cbor" ' + echo $CIDb32dagcbor > expected && + ipfs cid format --mc dag-cbor $CIDb32pb > actual && + test_cmp actual expected +' + +# this was an old flag that we removed, explicitly to force an error +# so the user would read about the new multicodec names introduced +# by https://github.com/ipfs/go-cid/commit/b2064d74a8b098193b316689a715cdf4e4934805 +test_expect_success "cid format --codec fails" ' + echo "Error: unknown option \"codec\"" > expected && + test_expect_code 1 ipfs cid format --codec protobuf 2> actual && test_cmp actual expected ' diff --git a/test/sharness/t0310-tracing.sh b/test/sharness/t0310-tracing.sh index 42846c9d0..96d07ae8d 100755 --- a/test/sharness/t0310-tracing.sh +++ b/test/sharness/t0310-tracing.sh @@ -39,7 +39,7 @@ EOF rm -rf traces.json && touch traces.json && chmod 777 traces.json test_expect_success "run opentelemetry collector" ' - docker run --rm -d -v "$PWD/collector-config.yaml":/config.yaml -v "$PWD":/traces --net=host --name=ipfs-test-otel-collector otel/opentelemetry-collector-contrib:0.48.0 --config /config.yaml + docker run --rm -d -v "$PWD/collector-config.yaml":/config.yaml -v "$PWD":/traces --net=host --name=ipfs-test-otel-collector otel/opentelemetry-collector-contrib:0.52.0 --config /config.yaml ' test_launch_ipfs_daemon diff --git a/tracing/tracing.go b/tracing/tracing.go index 99b340236..84eabc5e7 100644 --- a/tracing/tracing.go +++ b/tracing/tracing.go @@ -15,7 +15,7 @@ import ( "go.opentelemetry.io/otel/exporters/zipkin" "go.opentelemetry.io/otel/sdk/resource" "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.7.0" + semconv "go.opentelemetry.io/otel/semconv/v1.4.0" traceapi "go.opentelemetry.io/otel/trace" ) @@ -129,8 +129,7 @@ func NewTracerProvider(ctx context.Context) (shutdownTracerProvider, error) { r, err := resource.Merge( resource.Default(), - resource.NewWithAttributes( - semconv.SchemaURL, + resource.NewSchemaless( semconv.ServiceNameKey.String("go-ipfs"), semconv.ServiceVersionKey.String(version.CurrentVersionNumber), ), From 85e3fa60c599225ea6cef24dc27a9393013a685f Mon Sep 17 00:00:00 2001 From: Gus Eggert Date: Fri, 3 Jun 2022 16:58:37 -0400 Subject: [PATCH 22/25] chore: upgrade to go-libp2p v0.19.4 (cherry picked from commit 2e170a4302152a54bd5ab07946854bbc731f31d5) --- go.mod | 4 ++-- go.sum | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index cb914b455..bcdd9069e 100644 --- a/go.mod +++ b/go.mod @@ -68,7 +68,7 @@ require ( github.com/jbenet/go-temp-err-catcher v0.1.0 github.com/jbenet/goprocess v0.1.4 github.com/libp2p/go-doh-resolver v0.4.0 - github.com/libp2p/go-libp2p v0.19.3 + github.com/libp2p/go-libp2p v0.19.4 github.com/libp2p/go-libp2p-core v0.15.1 github.com/libp2p/go-libp2p-discovery v0.6.0 github.com/libp2p/go-libp2p-http v0.2.1 @@ -201,7 +201,7 @@ require ( github.com/libp2p/go-reuseport v0.1.0 // indirect github.com/libp2p/go-reuseport-transport v0.1.0 // indirect github.com/libp2p/go-stream-muxer-multistream v0.4.0 // indirect - github.com/libp2p/go-yamux/v3 v3.1.1 // indirect + github.com/libp2p/go-yamux/v3 v3.1.2 // indirect github.com/libp2p/zeroconf/v2 v2.1.1 // indirect github.com/lucas-clemente/quic-go v0.27.1 // indirect github.com/marten-seemann/qtls-go1-16 v0.1.5 // indirect diff --git a/go.sum b/go.sum index 1d8452a80..09757be3e 100644 --- a/go.sum +++ b/go.sum @@ -776,8 +776,8 @@ github.com/libp2p/go-libp2p v0.14.3/go.mod h1:d12V4PdKbpL0T1/gsUNN8DfgMuRPDX8bS2 github.com/libp2p/go-libp2p v0.14.4/go.mod h1:EIRU0Of4J5S8rkockZM7eJp2S0UrCyi55m2kJVru3rM= github.com/libp2p/go-libp2p v0.16.0/go.mod h1:ump42BsirwAWxKzsCiFnTtN1Yc+DuPu76fyMX364/O4= github.com/libp2p/go-libp2p v0.18.0/go.mod h1:+veaZ9z1SZQhmc5PW78jvnnxZ89Mgvmh4cggO11ETmw= -github.com/libp2p/go-libp2p v0.19.3 h1:LqjvuBWdyYSqvkH4VVYxA78Fkphzg2Pq86VMnilqgkw= -github.com/libp2p/go-libp2p v0.19.3/go.mod h1:AGlPVLjh0+6jvEtf+a2gZEux7yHJrYXnG9IC7wcQ2NY= +github.com/libp2p/go-libp2p v0.19.4 h1:50YL0YwPhWKDd+qbZQDEdnsmVAAkaCQrWUjpdHv4hNA= +github.com/libp2p/go-libp2p v0.19.4/go.mod h1:MIt8y481VDhUe4ErWi1a4bvt/CjjFfOq6kZTothWIXY= 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= @@ -1116,8 +1116,9 @@ github.com/libp2p/go-yamux/v2 v2.2.0/go.mod h1:3So6P6TV6r75R9jiBpiIKgU/66lOarCZj github.com/libp2p/go-yamux/v2 v2.3.0/go.mod h1:iTU+lOIn/2h0AgKcL49clNTwfEw+WSfDYrXe05EyKIs= github.com/libp2p/go-yamux/v3 v3.0.1/go.mod h1:s2LsDhHbh+RfCsQoICSYt58U2f8ijtPANFD8BmE74Bo= github.com/libp2p/go-yamux/v3 v3.0.2/go.mod h1:s2LsDhHbh+RfCsQoICSYt58U2f8ijtPANFD8BmE74Bo= -github.com/libp2p/go-yamux/v3 v3.1.1 h1:X0qSVodCZciOu/f4KTp9V+O0LAqcqP2tdaUGB0+0lng= github.com/libp2p/go-yamux/v3 v3.1.1/go.mod h1:jeLEQgLXqE2YqX1ilAClIfCMDY+0uXQUKmmb/qp0gT4= +github.com/libp2p/go-yamux/v3 v3.1.2 h1:lNEy28MBk1HavUAlzKgShp+F6mn/ea1nDYWftZhFW9Q= +github.com/libp2p/go-yamux/v3 v3.1.2/go.mod h1:jeLEQgLXqE2YqX1ilAClIfCMDY+0uXQUKmmb/qp0gT4= github.com/libp2p/zeroconf/v2 v2.1.1 h1:XAuSczA96MYkVwH+LqqqCUZb2yH3krobMJ1YE+0hG2s= github.com/libp2p/zeroconf/v2 v2.1.1/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= From 6e1de05cd1cfba669406d906e5615d69c48f3c12 Mon Sep 17 00:00:00 2001 From: Adin Schmahmann Date: Wed, 8 Jun 2022 15:33:06 -0400 Subject: [PATCH 23/25] chore: bump Go to 1.18.3 (#9021) (cherry picked from commit 9db6641efd46f48a3596409009f8001bad4d5917) --- .circleci/main.yml | 10 +++++----- Dockerfile | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.circleci/main.yml b/.circleci/main.yml index 18c5d55cd..49591d50c 100644 --- a/.circleci/main.yml +++ b/.circleci/main.yml @@ -37,7 +37,7 @@ default_environment: &default_environment executors: golang: docker: - - image: cimg/go:1.18.1 + - image: cimg/go:1.18.3 working_directory: ~/ipfs/go-ipfs environment: <<: *default_environment @@ -62,7 +62,7 @@ executors: E2E_IPFSD_TYPE: go dockerizer: docker: - - image: cimg/go:1.18.1 + - image: cimg/go:1.18.3 environment: IMAGE_NAME: ipfs/go-ipfs WIP_IMAGE_TAG: wip @@ -162,8 +162,8 @@ jobs: - run: sudo apt update - run: | mkdir ~/localgo && cd ~/localgo - wget https://golang.org/dl/go1.18.1.linux-amd64.tar.gz - tar xfz go1.18.1.linux-amd64.tar.gz + wget https://golang.org/dl/go1.18.3.linux-amd64.tar.gz + tar xfz go1.18.3.linux-amd64.tar.gz echo "export PATH=$(pwd)/go/bin:\$PATH" >> ~/.bashrc - run: go version - run: sudo apt install socat net-tools @@ -229,7 +229,7 @@ jobs: - *store_gomod interop: docker: - - image: cimg/go:1.18.1-node + - image: cimg/go:1.18.3-node parallelism: 4 resource_class: large steps: diff --git a/Dockerfile b/Dockerfile index 81d438252..913cde19b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Note: when updating the go minor version here, also update the go-channel in snap/snapcraft.yml -FROM golang:1.18.1-buster +FROM golang:1.18.3-buster LABEL maintainer="Steven Allen " # Install deps From 56145237bb3d636448ab0d54b267958279b622c8 Mon Sep 17 00:00:00 2001 From: Gus Eggert Date: Wed, 8 Jun 2022 13:52:58 -0400 Subject: [PATCH 24/25] docs: v0.13.0 release notes --- CHANGELOG.md | 155 +++++++++++++++++++++++---------------------------- 1 file changed, 71 insertions(+), 84 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 66c966b99..fd796ff66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -298,9 +298,25 @@ The more fully featured yamux stream multiplexer is now prioritized over mplex f
Full Changelog - - github.com/ipfs/go-ipfs: - - docs: v0.13.0 changelog + - feat: upgrade to go-libp2p-kad-dht@v0.16.0 (#9005) ([ipfs/go-ipfs#9005](https://github.com/ipfs/go-ipfs/pull/9005)) + - docs: fix typo in the `swarm/peering` help text + - feat: disable resource manager by default (#9003) ([ipfs/go-ipfs#9003](https://github.com/ipfs/go-ipfs/pull/9003)) + - fix: adjust rcmgr limits for accelerated DHT client rt refresh (#8982) ([ipfs/go-ipfs#8982](https://github.com/ipfs/go-ipfs/pull/8982)) + - fix(ci): make go-ipfs-as-a-library work without external peers (#8978) ([ipfs/go-ipfs#8978](https://github.com/ipfs/go-ipfs/pull/8978)) + - feat: log when resource manager limits are exceeded (#8980) ([ipfs/go-ipfs#8980](https://github.com/ipfs/go-ipfs/pull/8980)) + - fix: JS caching via Access-Control-Expose-Headers (#8984) ([ipfs/go-ipfs#8984](https://github.com/ipfs/go-ipfs/pull/8984)) + - docs: fix abstractions typo + - fix: hanging goroutine in get fileArchive handler + - fix(node/libp2p): disable rcmgr checkImplicitDefaults ([ipfs/go-ipfs#8965](https://github.com/ipfs/go-ipfs/pull/8965)) + - pubsub multibase encoding (#8933) ([ipfs/go-ipfs#8933](https://github.com/ipfs/go-ipfs/pull/8933)) + - 'pin rm' helptext: rewrite description as object is not removed from local storage (immediately) ([ipfs/go-ipfs#8947](https://github.com/ipfs/go-ipfs/pull/8947)) + - ([ipfs/go-ipfs#8934](https://github.com/ipfs/go-ipfs/pull/8934)) + - Add instructions to resolve repo migration error (#8946) ([ipfs/go-ipfs#8946](https://github.com/ipfs/go-ipfs/pull/8946)) + - fix: use path instead of filepath for asset embeds to support Windows + - Release v0.13.0-rc1 + - docs: v0.13.0 changelog ([ipfs/go-ipfs#8941](https://github.com/ipfs/go-ipfs/pull/8941)) + - chore: build with go 1.18.1 ([ipfs/go-ipfs#8932](https://github.com/ipfs/go-ipfs/pull/8932)) - docs(tracing): update env var docs for new tracing env vars - feat: enable Resource Manager by default - chore: Update test/dependencies to match go-ipfs dependencies. (#8928) ([ipfs/go-ipfs#8928](https://github.com/ipfs/go-ipfs/pull/8928)) @@ -350,8 +366,7 @@ The more fully featured yamux stream multiplexer is now prioritized over mplex f - feat: add gateway histogram metrics (#8443) ([ipfs/go-ipfs#8443](https://github.com/ipfs/go-ipfs/pull/8443)) - ErrNotFound changes: bubble tagged libraries. ([ipfs/go-ipfs#8803](https://github.com/ipfs/go-ipfs/pull/8803)) - Fix typos - - Bubble ErrNotFound improvements. - ([ipfs/go-ipfs#8757](https://github.com/ipfs/go-ipfs/pull/8757)) + ([ipfs/go-ipfs#8757](https://github.com/ipfs/go-ipfs/pull/8757)) - feat(gateway): Block and CAR response formats (#8758) ([ipfs/go-ipfs#8758](https://github.com/ipfs/go-ipfs/pull/8758)) - fix: allow ipfs-companion browser extension to access RPC API (#8690) ([ipfs/go-ipfs#8690](https://github.com/ipfs/go-ipfs/pull/8690)) - fix(core/node): unwrap fx error in node construction ([ipfs/go-ipfs#8638](https://github.com/ipfs/go-ipfs/pull/8638)) @@ -363,8 +378,7 @@ The more fully featured yamux stream multiplexer is now prioritized over mplex f - docs: note the default reprovider strategy as all (#8603) ([ipfs/go-ipfs#8603](https://github.com/ipfs/go-ipfs/pull/8603)) - fix: listen on loopback for API and gateway ports in docker-compose.yaml (#8773) ([ipfs/go-ipfs#8773](https://github.com/ipfs/go-ipfs/pull/8773)) - fix(discovery): fix daemon not starting due to mdns startup failure (#8704) ([ipfs/go-ipfs#8704](https://github.com/ipfs/go-ipfs/pull/8704)) - - Move go-ipfs-config back into go-ipfs, - ([ipfs/go-ipfs#8756](https://github.com/ipfs/go-ipfs/pull/8756)) + ([ipfs/go-ipfs#8756](https://github.com/ipfs/go-ipfs/pull/8756)) - feat: ipfs-webui v2.15 (#8712) ([ipfs/go-ipfs#8712](https://github.com/ipfs/go-ipfs/pull/8712)) - feat: X-Ipfs-Roots for smarter HTTP caches (#8720) ([ipfs/go-ipfs#8720](https://github.com/ipfs/go-ipfs/pull/8720)) - chore: add instructions for Chocolatey release @@ -403,6 +417,20 @@ The more fully featured yamux stream multiplexer is now prioritized over mplex f - v0.3.0 - s/log/logger - Use ipld.ErrNotFound instead of ErrNotFound +- github.com/ipfs/go-cid (v0.1.0 -> v0.2.0): + - fix: remove invalid multicodec2string mappings (#137) ([ipfs/go-cid#137](https://github.com/ipfs/go-cid/pull/137)) + - sync: update CI config files (#136) ([ipfs/go-cid#136](https://github.com/ipfs/go-cid/pull/136)) + - Benchmark existing ways to check for `IDENTITY` CIDs + - avoid double alloc in NewCidV1 + - sync: update CI config files ([ipfs/go-cid#131](https://github.com/ipfs/go-cid/pull/131)) +- github.com/ipfs/go-cidutil (v0.0.2 -> v0.1.0): + ([ipfs/go-cidutil#36](https://github.com/ipfs/go-cidutil/pull/36)) + - sync: update CI config files ([ipfs/go-cidutil#35](https://github.com/ipfs/go-cidutil/pull/35)) + - sync: update CI config files (#34) ([ipfs/go-cidutil#34](https://github.com/ipfs/go-cidutil/pull/34)) + - fix staticcheck ([ipfs/go-cidutil#31](https://github.com/ipfs/go-cidutil/pull/31)) + - add license file so it can be found by go-licenses ([ipfs/go-cidutil#27](https://github.com/ipfs/go-cidutil/pull/27)) + - test: fix for base32 switch ([ipfs/go-cidutil#16](https://github.com/ipfs/go-cidutil/pull/16)) + - doc: add a lead maintainer - github.com/ipfs/go-filestore (v1.1.0 -> v1.2.0): - v1.2.0 - refactor: follow the happy left practice in Filestore.DeleteBlock @@ -555,43 +583,6 @@ The more fully featured yamux stream multiplexer is now prioritized over mplex f - v0.6.0 - Update tests to use ipld.IsNotFound to check for notfound errors - sync: update CI config files (#79) ([ipfs/interface-go-ipfs-core#79](https://github.com/ipfs/interface-go-ipfs-core/pull/79)) -- github.com/ipld/go-car/v2 (null -> v2.1.1): - - Update v2 to context datastores (#275) ([ipld/go-car#275](https://github.com/ipld/go-car/pull/275)) - - update context datastore ([ipld/go-car#273](https://github.com/ipld/go-car/pull/273)) - - Traversal-based car creation (#269) ([ipld/go-car#269](https://github.com/ipld/go-car/pull/269)) - - Seek to start before index generation in `ReadOnly` blockstore - - support extraction of unixfs content stored in car files (#263) ([ipld/go-car#263](https://github.com/ipld/go-car/pull/263)) - - Add a barebones readme to the car CLI (#262) ([ipld/go-car#262](https://github.com/ipld/go-car/pull/262)) - - sync: update CI config files (#261) ([ipld/go-car#261](https://github.com/ipld/go-car/pull/261)) - - fix!: use -version=n instead of -v1 for index command - - feat: fix get-dag and add version=1 option - - creation of car from file / directory (#246) ([ipld/go-car#246](https://github.com/ipld/go-car/pull/246)) - - forEach iterates over index in stable order (#258) ([ipld/go-car#258](https://github.com/ipld/go-car/pull/258)) - - Expose selector traversal options for SelectiveCar ([ipld/go-car#251](https://github.com/ipld/go-car/pull/251)) - - Implement API to allow replacing root CIDs in a CARv1 or CARv2 - - blockstore: OpenReadWrite should not modify if it refuses to resume - - clarify the relation between StoreIdentityCIDs and SetFullyIndexed - - Implement options to handle `IDENTITY` CIDs gracefully - - Combine API options for simplicity and logical coherence - - Add test script for car verify (#236) ([ipld/go-car#236](https://github.com/ipld/go-car/pull/236)) - - cmd/car: add first testscript tests - - integrate `car/` cli into `cmd/car` (#233) ([ipld/go-car#233](https://github.com/ipld/go-car/pull/233)) - - Add `car get-dag` command (#232) ([ipld/go-car#232](https://github.com/ipld/go-car/pull/232)) - - Separate CLI to separate module (#231) ([ipld/go-car#231](https://github.com/ipld/go-car/pull/231)) - - add `get block` to car cli (#230) ([ipld/go-car#230](https://github.com/ipld/go-car/pull/230)) - - use file size when loading from v1 car (#229) ([ipld/go-car#229](https://github.com/ipld/go-car/pull/229)) - - add interface describing iteration (#228) ([ipld/go-car#228](https://github.com/ipld/go-car/pull/228)) - - Add `list` and `filter` commands (#227) ([ipld/go-car#227](https://github.com/ipld/go-car/pull/227)) - - Add `car split` command (#226) ([ipld/go-car#226](https://github.com/ipld/go-car/pull/226)) - - Make `MultihashIndexSorted` the default index codec for CARv2 - - Add carve utility for updating the index of a car{v1,v2} file (#219) ([ipld/go-car#219](https://github.com/ipld/go-car/pull/219)) - - Ignore records with `IDENTITY` CID in `IndexSorted` - - Fix index GetAll infinite loop if function always returns `true` - - Expose the ability to iterate over records in `MultihasIndexSorted` - - avoid another alloc per read byte - - avoid allocating on every byte read - - Implement new index type that also includes mutltihash code - - Return `nil` as Index reader when reading indexless CARv2 - github.com/ipld/go-codec-dagpb (v1.3.2 -> v1.4.0): - bump to v1.4.0 given that we updated ipld-prime - add a decode-then-encode roundtrip fuzzer @@ -640,8 +631,6 @@ The more fully featured yamux stream multiplexer is now prioritized over mplex f - Update to context datastores (#312) ([ipld/go-ipld-prime#312](https://github.com/ipld/go-ipld-prime/pull/312)) - schema: add support for struct tuple reprs - Allow parsing padding in dag-json bytes fields (#309) ([ipld/go-ipld-prime#309](https://github.com/ipld/go-ipld-prime/pull/309)) -- github.com/ipld/go-ipld-prime/storage/bsadapter (null -> v0.0.0-20211210234204-ce2a1c70cd73): - failed to fetch repo - github.com/libp2p/go-doh-resolver (v0.3.1 -> v0.4.0): - Release v0.4.0 (#16) ([libp2p/go-doh-resolver#16](https://github.com/libp2p/go-doh-resolver/pull/16)) - sync: update CI config files (#14) ([libp2p/go-doh-resolver#14](https://github.com/libp2p/go-doh-resolver/pull/14)) @@ -649,7 +638,11 @@ The more fully featured yamux stream multiplexer is now prioritized over mplex f - Perform test locally instead of using a live dns resolution ([libp2p/go-doh-resolver#13](https://github.com/libp2p/go-doh-resolver/pull/13)) - sync: update CI config files (#7) ([libp2p/go-doh-resolver#7](https://github.com/libp2p/go-doh-resolver/pull/7)) - fix staticcheck ([libp2p/go-doh-resolver#6](https://github.com/libp2p/go-doh-resolver/pull/6)) -- github.com/libp2p/go-libp2p (v0.16.0 -> v0.19.1): +- github.com/libp2p/go-libp2p (v0.16.0 -> v0.19.4): + - update go-yamux to v3.1.2, release v0.19.4 (#1590) ([libp2p/go-libp2p#1590](https://github.com/libp2p/go-libp2p/pull/1590)) + - update quic-go to v0.27.1, release v0.19.3 (#1518) ([libp2p/go-libp2p#1518](https://github.com/libp2p/go-libp2p/pull/1518)) + - release v0.19.2 + - holepunch: fix incorrect message type for the SYNC message (#1478) ([libp2p/go-libp2p#1478](https://github.com/libp2p/go-libp2p/pull/1478)) - fix race condition in holepunch service, release v0.19.1 ([libp2p/go-libp2p#1474](https://github.com/libp2p/go-libp2p/pull/1474)) - release v0.19.0 (#1408) ([libp2p/go-libp2p#1408](https://github.com/libp2p/go-libp2p/pull/1408)) - Close resource manager when host closes (#1343) ([libp2p/go-libp2p#1343](https://github.com/libp2p/go-libp2p/pull/1343)) @@ -757,6 +750,12 @@ The more fully featured yamux stream multiplexer is now prioritized over mplex f - release v0.12.0 (#223) ([libp2p/go-libp2p-core#223](https://github.com/libp2p/go-libp2p-core/pull/223)) - generate ecdsa public key from an input public key (#219) ([libp2p/go-libp2p-core#219](https://github.com/libp2p/go-libp2p-core/pull/219)) - add RemovePeer method to PeerMetadata, Metrics, ProtoBook and Keybook (#218) ([libp2p/go-libp2p-core#218](https://github.com/libp2p/go-libp2p-core/pull/218)) +- github.com/libp2p/go-libp2p-kad-dht (v0.15.0 -> v0.16.0): + - Version 0.16.0 (#774) ([libp2p/go-libp2p-kad-dht#774](https://github.com/libp2p/go-libp2p-kad-dht/pull/774)) + - feat: add error log when resource manager throttles crawler (#772) ([libp2p/go-libp2p-kad-dht#772](https://github.com/libp2p/go-libp2p-kad-dht/pull/772)) + - fix: incorrect format handling ([libp2p/go-libp2p-kad-dht#771](https://github.com/libp2p/go-libp2p-kad-dht/pull/771)) + - Upgrade to go-libp2p v0.16.0 (#756) ([libp2p/go-libp2p-kad-dht#756](https://github.com/libp2p/go-libp2p-kad-dht/pull/756)) + - sync: update CI config files ([libp2p/go-libp2p-kad-dht#758](https://github.com/libp2p/go-libp2p-kad-dht/pull/758)) - github.com/libp2p/go-libp2p-mplex (v0.4.1 -> v0.7.0): - release v0.7.0 (#36) ([libp2p/go-libp2p-mplex#36](https://github.com/libp2p/go-libp2p-mplex/pull/36)) - release v0.6.0 (#32) ([libp2p/go-libp2p-mplex#32](https://github.com/libp2p/go-libp2p-mplex/pull/32)) @@ -916,22 +915,8 @@ The more fully featured yamux stream multiplexer is now prioritized over mplex f - use the transport.Upgrader interface ([libp2p/go-ws-transport#110](https://github.com/libp2p/go-ws-transport/pull/110)) - sync: update CI config files (#108) ([libp2p/go-ws-transport#108](https://github.com/libp2p/go-ws-transport/pull/108)) - sync: update CI config files (#106) ([libp2p/go-ws-transport#106](https://github.com/libp2p/go-ws-transport/pull/106)) -- github.com/libp2p/go-yamux/v3 (null -> v3.1.1): - - release v3.1.1 (#88) ([libp2p/go-yamux#88](https://github.com/libp2p/go-yamux/pull/88)) - - feat: catch panics in yamux send/receive loops ([libp2p/go-yamux#86](https://github.com/libp2p/go-yamux/pull/86)) - - release v3.1.0 (#83) ([libp2p/go-yamux#83](https://github.com/libp2p/go-yamux/pull/83)) - - fix flaky TestPing test on Windows (#84) ([libp2p/go-yamux#84](https://github.com/libp2p/go-yamux/pull/84)) - - correctly release memory when the connection is closed (#81) ([libp2p/go-yamux#81](https://github.com/libp2p/go-yamux/pull/81)) - - release v3.0.2 ([libp2p/go-yamux#78](https://github.com/libp2p/go-yamux/pull/78)) - - fix memory accounting for window updates ([libp2p/go-yamux#77](https://github.com/libp2p/go-yamux/pull/77)) - - release v3.0.1 (#76) ([libp2p/go-yamux#76](https://github.com/libp2p/go-yamux/pull/76)) - - release v3.0.0 (#74) ([libp2p/go-yamux#74](https://github.com/libp2p/go-yamux/pull/74)) - - add a MemoryManager ([libp2p/go-yamux#69](https://github.com/libp2p/go-yamux/pull/69)) - - fix: ensure that pings don't get stuck behind writes ([libp2p/go-yamux#71](https://github.com/libp2p/go-yamux/pull/71)) - - sync: update CI config files (#68) ([libp2p/go-yamux#68](https://github.com/libp2p/go-yamux/pull/68)) - - limit the number of concurrent incoming streams ([libp2p/go-yamux#66](https://github.com/libp2p/go-yamux/pull/66)) - - drastically reduce allocations in ring buffer implementation (#64) ([libp2p/go-yamux#64](https://github.com/libp2p/go-yamux/pull/64)) -- github.com/lucas-clemente/quic-go (v0.24.0 -> v0.27.0): +- github.com/lucas-clemente/quic-go (v0.24.0 -> v0.27.1): + - don't send path MTU probe packets on a timer - stop using the deprecated net.Error.Temporary, update golangci-lint to v1.45.2 ([lucas-clemente/quic-go#3367](https://github.com/lucas-clemente/quic-go/pull/3367)) - add support for serializing Extended CONNECT requests (#3360) ([lucas-clemente/quic-go#3360](https://github.com/lucas-clemente/quic-go/pull/3360)) - improve the error thrown when building with an unsupported Go version ([lucas-clemente/quic-go#3364](https://github.com/lucas-clemente/quic-go/pull/3364)) @@ -991,44 +976,42 @@ The more fully featured yamux stream multiplexer is now prioritized over mplex f - don't commit the fuzzing binary ([multiformats/go-multistream#74](https://github.com/multiformats/go-multistream/pull/74)) - sync: update CI config files (#71) ([multiformats/go-multistream#71](https://github.com/multiformats/go-multistream/pull/71)) - remove Makefile ([multiformats/go-multistream#67](https://github.com/multiformats/go-multistream/pull/67)) -
### ❀ Contributors - | Contributor | Commits | Lines ± | Files Changed | |-------------|---------|---------|---------------| -| Marten Seemann | 350 | +14631/-12574 | 847 | -| Rod Vagg | 36 | +9362/-4300 | 231 | -| vyzo | 135 | +7963/-1785 | 233 | +| Marten Seemann | 347 | +14453/-12552 | 842 | +| Rod Vagg | 28 | +8848/-4033 | 214 | +| vyzo | 133 | +7959/-1783 | 231 | | hannahhoward | 40 | +3761/-1652 | 175 | -| Will | 26 | +4771/-404 | 118 | | Will Scott | 39 | +2885/-1784 | 93 | -| Daniel MartĂ­ | 36 | +3163/-996 | 114 | -| Adin Schmahmann | 43 | +3346/-522 | 114 | -| Steven Allen | 87 | +2465/-867 | 135 | -| Marcin Rataj | 26 | +2257/-815 | 62 | -| Masih H. Derkani | 14 | +2068/-861 | 71 | -| Gus Eggert | 22 | +2197/-680 | 94 | -| Lucas Molas | 26 | +1596/-576 | 88 | +| Daniel MartĂ­ | 32 | +3043/-969 | 103 | +| Adin Schmahmann | 48 | +3439/-536 | 121 | +| Gus Eggert | 29 | +2644/-788 | 123 | +| Steven Allen | 87 | +2417/-840 | 135 | +| Marcin Rataj | 29 | +2312/-942 | 75 | +| Will | 11 | +2520/-62 | 56 | +| Lucas Molas | 28 | +1602/-578 | 90 | | RaĂșl Kripalani | 18 | +1519/-271 | 38 | | Brian Tiger Chow | 20 | +833/-379 | 40 | +| Masih H. Derkani | 5 | +514/-460 | 8 | | Jeromy Johnson | 53 | +646/-302 | 83 | | Ɓukasz Magiera | 26 | +592/-245 | 43 | | Artem Mikheev | 2 | +616/-120 | 5 | | Franky W | 2 | +49/-525 | 9 | | Laurent Senta | 3 | +468/-82 | 52 | -| Hector Sanjuan | 29 | +245/-176 | 58 | +| Hector Sanjuan | 32 | +253/-187 | 62 | | Juan Batiz-Benet | 8 | +285/-80 | 18 | | Justin Johnson | 2 | +181/-88 | 2 | | Thibault Meunier | 5 | +216/-28 | 8 | -| Aayush Rajasekaran | 2 | +133/-103 | 11 | | James Wetter | 2 | +234/-1 | 2 | +| web3-bot | 36 | +158/-66 | 62 | | gammazero | 7 | +140/-84 | 12 | -| web3-bot | 35 | +157/-66 | 61 | | Rachel Chen | 2 | +165/-57 | 17 | +| Jorropo | 18 | +108/-99 | 26 | | Toby | 2 | +107/-86 | 11 | -| Jorropo | 16 | +97/-96 | 24 | +| Antonio Navarro Perez | 4 | +82/-103 | 9 | | Dominic Della Valle | 4 | +148/-33 | 6 | | Ian Davis | 2 | +152/-28 | 6 | | Kyle Huntsman | 2 | +172/-6 | 5 | @@ -1037,7 +1020,6 @@ The more fully featured yamux stream multiplexer is now prioritized over mplex f | Lars Gierth | 12 | +63/-54 | 20 | | Eric Myhre | 3 | +95/-15 | 8 | | Caian Benedicto | 1 | +69/-12 | 6 | -| whyrusleeping | 2 | +50/-26 | 7 | | Raúl Kripalani | 2 | +63/-13 | 2 | | Anton Petrov | 1 | +73/-0 | 1 | | hunjixin | 2 | +67/-2 | 5 | @@ -1048,22 +1030,23 @@ The more fully featured yamux stream multiplexer is now prioritized over mplex f | Manuel Alonso | 1 | +42/-9 | 2 | | Jakub Sztandera | 10 | +37/-13 | 13 | | Aarsh Shah | 1 | +39/-5 | 2 | -| pymq | 1 | +32/-8 | 2 | | Dave Justice | 1 | +32/-4 | 2 | | Tommi Virtanen | 3 | +23/-9 | 4 | | tarekbadr | 1 | +30/-1 | 1 | +| whyrusleeping | 1 | +26/-4 | 3 | | Petar Maymounkov | 2 | +30/-0 | 4 | -| Antonio Navarro Perez | 2 | +15/-13 | 7 | | rht | 3 | +17/-10 | 4 | | Miguel Mota | 1 | +23/-0 | 1 | | Manfred Touron | 1 | +21/-2 | 2 | | watjurk | 1 | +17/-5 | 1 | | SukkaW | 1 | +11/-11 | 5 | +| Nicholas Bollweg | 1 | +21/-0 | 1 | | Ho-Sheng Hsiao | 2 | +11/-10 | 6 | | chblodg | 1 | +18/-2 | 1 | | Friedel Ziegelmayer | 2 | +18/-0 | 2 | | Shu Shen | 2 | +15/-2 | 3 | | Peter Rabbitson | 1 | +15/-2 | 1 | +| galargh | 2 | +15/-0 | 2 | | ᮍᮀᮛᮛ ʙᎇʟʟ | 3 | +13/-1 | 4 | | aarshkshah1992 | 3 | +12/-2 | 3 | | RubenKelevra | 4 | +5/-8 | 5 | @@ -1074,18 +1057,22 @@ The more fully featured yamux stream multiplexer is now prioritized over mplex f | Elijah | 1 | +10/-0 | 1 | | Dimitris Apostolou | 2 | +5/-5 | 5 | | Michael Avila | 3 | +8/-1 | 4 | +| siiky | 3 | +4/-4 | 3 | | Somajit | 1 | +4/-4 | 1 | | Sherod Taylor | 1 | +0/-8 | 2 | | EclĂ©sio Junior | 1 | +8/-0 | 1 | | godcong | 3 | +4/-3 | 3 | +| Piotr Galar | 3 | +3/-4 | 3 | | jwh | 1 | +6/-0 | 2 | +| dependabot[bot] | 1 | +3/-3 | 1 | | Volker Mische | 1 | +4/-2 | 1 | +| Aayush Rajasekaran | 1 | +3/-3 | 1 | | rene | 2 | +3/-2 | 2 | | keks | 1 | +5/-0 | 1 | | Hlib | 1 | +4/-1 | 2 | | Arash Payan | 1 | +5/-0 | 1 | -| siiky | 1 | +2/-2 | 1 | | Wayback Archiver | 1 | +2/-2 | 1 | +| T Mo | 1 | +2/-2 | 1 | | Ju Huo | 1 | +2/-2 | 1 | | Ivan | 2 | +2/-2 | 2 | | Ettore Di Giacinto | 2 | +3/-1 | 2 | @@ -1102,12 +1089,12 @@ The more fully featured yamux stream multiplexer is now prioritized over mplex f | Glenn | 1 | +1/-1 | 1 | | George Antoniadis | 1 | +1/-1 | 1 | | David Florness | 1 | +1/-1 | 1 | +| Daniel Norman | 1 | +1/-1 | 1 | | Coenie Beyers | 1 | +1/-1 | 1 | | Benedikt Spies | 1 | +1/-1 | 1 | | Abdul Rauf | 1 | +1/-1 | 1 | | makeworld | 1 | +1/-0 | 1 | | ignoramous | 1 | +0/-1 | 1 | -| galargh | 1 | +1/-0 | 1 | | Omicron166 | 1 | +0/-1 | 1 | | Jan Winkelmann | 1 | +1/-0 | 1 | | Dr Ian Preston | 1 | +1/-0 | 1 | From 3b88b441b02c48a55d34c158706a4592db5e2eac Mon Sep 17 00:00:00 2001 From: Gus Eggert Date: Wed, 8 Jun 2022 13:53:24 -0400 Subject: [PATCH 25/25] Release v0.13.0 --- version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.go b/version.go index 9bdf2c6fe..944af1c38 100644 --- a/version.go +++ b/version.go @@ -11,7 +11,7 @@ import ( var CurrentCommit string // CurrentVersionNumber is the current application's version literal -const CurrentVersionNumber = "0.13.0-rc1" +const CurrentVersionNumber = "0.13.0" const ApiVersion = "/go-ipfs/" + CurrentVersionNumber + "/"