Commit Graph

527 Commits

Author SHA1 Message Date
Henrique Dias
7bdb341132
feat: fast directory listings with DAG Size column (#9481)
Co-authored-by: Marcin Rataj <lidel@lidel.org>
2022-12-12 21:45:13 +01:00
Marcin Rataj
3a3a97100c feat: go-libp2p-kad-dht with expiration 48h
https://github.com/libp2p/go-libp2p-kad-dht/releases/tag/v0.20.0
(cherry picked from commit f31d524d14)
2022-12-12 03:47:17 +01:00
Jorropo
deacafd178 chore: update go-libp2p to v0.24.1 2022-12-12 03:47:17 +01:00
Jorropo
76e0caa936 fix: remove the imports work-around
It seems to be fine now that everything has been updated.
2022-12-12 03:47:17 +01:00
Jorropo
f08b439d48 update go-libp2p to v0.24.0 2022-12-12 03:47:17 +01:00
Marten Seemann
931a9df8a6 stop using the deprecated go-libp2p-loggables package 2022-12-12 03:47:17 +01:00
Gus Eggert
5e5d15ae1e
chore: upgrade libipfs for routing HTTP API schema changes (#9477) 2022-12-07 17:34:00 -05:00
Antonio Navarro Perez
3185dee22a Update libipfs dependency. 2022-12-07 16:34:59 +01:00
Antonio Navarro Perez
f0d720cd55 Update go-libipfs dep
Signed-off-by: Antonio Navarro Perez <antnavper@gmail.com>
2022-12-07 16:34:59 +01:00
Antonio Navarro Perez
df828c0a47 feature: delegated-routing: Add HTTP delegated routing.
Signed-off-by: Antonio Navarro Perez <antnavper@gmail.com>
2022-12-07 16:34:59 +01:00
Gus Eggert
b9a4d4592d chore: migrate ipfs/tar-utils to libipfs 2022-12-05 21:28:30 -05:00
Jorropo
4d4841f41c
Merge pull request #9318 from ipfs/rvagg/go-merkledag-0.8 2022-12-05 15:15:12 +01:00
Antonio Navarro Perez
5283c6f8b5 chore: Update go-routing-helpers dependency
It will avoid a deadlock when using parallel router to compose routers.

Signed-off-by: Antonio Navarro Perez <antnavper@gmail.com>
2022-12-02 13:42:28 -05:00
Rod Vagg
7d0ea08289
deps: go-merkledag@v0.8.1 2022-12-02 10:16:15 +11:00
Mohsin Zaidi
51f60ea05a
feat(config): Pubsub.SeenMessagesTTL (#9372)
Co-authored-by: Marcin Rataj <lidel@lidel.org>
2022-11-29 00:05:44 +01:00
Antonio Navarro Perez
6f5e226de6 fix: update go-unixfs lib to v0.4.1
Signed-off-by: Antonio Navarro Perez <antnavper@gmail.com>
2022-11-15 21:51:43 +01:00
Antonio Navarro Perez
9da7f3a02d
Update to v0.23.4
Signed-off-by: Antonio Navarro Perez <antnavper@gmail.com>
2022-11-10 10:49:08 -05:00
Antonio Navarro Perez
3550758035
chore: Update go-libp2p to v0.23.3
Signed-off-by: Antonio Navarro Perez <antnavper@gmail.com>
2022-11-10 10:48:07 -05:00
Antonio Navarro Perez
254d81a9d5
feat: Improve ResourceManager UX (#9338)
This PR adds several new functionalities to make easier the usage of ResourceManager:

- Now resource manager logs when resources are exceeded are on ERROR instead of warning.
- The resources exceeded error now shows what kind of limit was reached and the scope.
- When there was no limit exceeded, we print a message for the user saying that limits are not exceeded anymore.
- Added `swarm limit all` command to show all set limits with the same format as `swarm stats all`
- Added `min-used-limit-perc` option to `swarm stats all` to only show stats that are above a specific percentage
- Simplify a lot default values.
- **Enable ResourceManager by default.**

Output example:
```
2022-11-09T10:51:40.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:59      Consider inspecting logs and raising the resource manager limits. Documentation: https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmresourcemgr
2022-11-09T10:51:50.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:55      Resource limits were exceeded 483095 times with error "transient: cannot reserve inbound stream: resource limit exceeded".
2022-11-09T10:51:50.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:59      Consider inspecting logs and raising the resource manager limits. Documentation: https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmresourcemgr
2022-11-09T10:52:00.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:55      Resource limits were exceeded 455294 times with error "transient: cannot reserve inbound stream: resource limit exceeded".
2022-11-09T10:52:00.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:59      Consider inspecting logs and raising the resource manager limits. Documentation: https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmresourcemgr
2022-11-09T10:52:10.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:55      Resource limits were exceeded 471384 times with error "transient: cannot reserve inbound stream: resource limit exceeded".
2022-11-09T10:52:10.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:59      Consider inspecting logs and raising the resource manager limits. Documentation: https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmresourcemgr
2022-11-09T10:52:20.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:55      Resource limits were exceeded 8 times with error "peer:12D3KooWKqcaBtcmZKLKCCoDPBuA6AXGJMNrLQUPPMsA5Q6D1eG6: cannot reserve inbound stream: resource limit exceeded".
2022-11-09T10:52:20.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:55      Resource limits were exceeded 192 times with error "peer:12D3KooWPjetWPGQUih9LZTGHdyAM9fKaXtUxDyBhA93E3JAWCXj: cannot reserve inbound stream: resource limit exceeded".
2022-11-09T10:52:20.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:55      Resource limits were exceeded 469746 times with error "transient: cannot reserve inbound stream: resource limit exceeded".
2022-11-09T10:52:20.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:59      Consider inspecting logs and raising the resource manager limits. Documentation: https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmresourcemgr
2022-11-09T10:52:30.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:55      Resource limits were exceeded 484137 times with error "transient: cannot reserve inbound stream: resource limit exceeded".
2022-11-09T10:52:30.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:55      Resource limits were exceeded 29 times with error "peer:12D3KooWPjetWPGQUih9LZTGHdyAM9fKaXtUxDyBhA93E3JAWCXj: cannot reserve inbound stream: resource limit exceeded".
2022-11-09T10:52:30.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:59      Consider inspecting logs and raising the resource manager limits. Documentation: https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmresourcemgr
2022-11-09T10:52:40.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:55      Resource limits were exceeded 468843 times with error "transient: cannot reserve inbound stream: resource limit exceeded".
2022-11-09T10:52:40.566+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:59      Consider inspecting logs and raising the resource manager limits. Documentation: https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmresourcemgr
2022-11-09T10:52:50.566+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:55      Resource limits were exceeded 366638 times with error "transient: cannot reserve inbound stream: resource limit exceeded".
2022-11-09T10:52:50.566+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:59      Consider inspecting logs and raising the resource manager limits. Documentation: https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmresourcemgr
2022-11-09T10:53:00.566+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:55      Resource limits were exceeded 405526 times with error "transient: cannot reserve inbound stream: resource limit exceeded".
2022-11-09T10:53:00.566+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:55      Resource limits were exceeded 107 times with error "peer:12D3KooWQZQCwevTDGhkE9iGYk5sBzWRDUSX68oyrcfM9tXyrs2Q: cannot reserve inbound stream: resource limit exceeded".
2022-11-09T10:53:00.566+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:59      Consider inspecting logs and raising the resource manager limits. Documentation: https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmresourcemgr
2022-11-09T10:53:10.566+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:55      Resource limits were exceeded 336923 times with error "transient: cannot reserve inbound stream: resource limit exceeded".
2022-11-09T10:53:10.566+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:59      Consider inspecting logs and raising the resource manager limits. Documentation: https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmresourcemgr
2022-11-09T10:53:20.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:55      Resource limits were exceeded 71 times with error "transient: cannot reserve inbound stream: resource limit exceeded".
2022-11-09T10:53:20.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:59      Consider inspecting logs and raising the resource manager limits. Documentation: https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmresourcemgr
2022-11-09T10:53:30.565+0100    ERROR   resourcemanager libp2p/rcmgr_logging.go:64      Resrouce limits are no longer being exceeded.

```
## Validation tests

- Accelerated DHT client runs with no errors when ResourceManager is active. No problems were observed.
- Running an attack with 200 connections and 1M streams using yamux protocol. Node was usable during the attack. With ResourceManager deactivated, the node was killed by the OS because of the amount of memory consumed.
	- Actions done when the attack was active:
		- Add files 
		- Force a reprovide
		- Use the gateway to resolve an IPNS address.

It closes #9001 
It closes #9351
It closes #9322
2022-11-10 12:25:57 +01:00
Henrique Dias
a210abd743
feat(gateway): TAR response format (#9029)
Implementation of IPIP-288 (https://github.com/ipfs/specs/pull/288)

Co-authored-by: Marcin Rataj <lidel@lidel.org>
2022-11-09 19:20:33 +01:00
Marcin Rataj
d69f7a5ac9 chore: go-multicodec v0.7.0
https://github.com/multiformats/go-multicodec/releases/tag/v0.7.0
2022-11-08 18:33:36 +01:00
Gus Eggert
8c72ea909a
feat: add delegated routing metrics (#9354) 2022-10-19 09:50:30 -04:00
Rod Vagg
9e3745ebeb deps: upgrade go-ipld-prime to v0.19.0
Ref: https://github.com/ipld/go-ipld-prime/releases/tag/v0.19.0
2022-10-14 05:23:43 +02:00
Jorropo
baccaef1b5
Merge pull request #9293 from Jorropo/webtransport
feat: add webtransport as an optin transport
2022-09-23 20:09:33 +02:00
Jorropo
8baec10146 feat: add webtransport as an optin transport 2022-09-23 19:50:55 +02:00
Justin Johnson
bcaacdd6c3
feat(gateway): _redirects file support (#8890)
https://github.com/ipfs/kubo/pull/8890
https://github.com/ipfs/specs/pull/290
2022-09-23 18:44:19 +02:00
Antonio Navarro Perez
d1b9e41fc2
feat: Delegated routing with custom configuration. (#9274)
New multi-router configuration system based on https://hackmd.io/G1KRDEX5T3qyfoBMkIrBew#Methods

- Added a new routing type: "custom"
- Added specific struct types for different Routers (instead of map[string]interface{})
- Added `Duration` config type, to make easier time string parsing
- Added config documentation.
- Use the latest go-delegated-routing library version with GET support.
- Added changelog notes for this feature.

It:
- closes #9157
- closes #9079
- closes #9186
2022-09-22 15:47:45 +02:00
Jorropo
74aaf37cec chore: bump go-libp2p v0.23.1
This does not include any WebTransport config code in Kubo, this will be done later in an other PR.
2022-09-21 23:16:03 +02:00
Marcin Rataj
b6b97d90ac fix: require IPNS V2 signatures 2022-09-21 01:09:00 +02:00
Jorropo
aeaf57734a chore: bump go-bitswap v0.10.2 2022-09-13 19:21:18 +02:00
Jorropo
196887cbe5 chore: bump go-libp2p v0.22.0 & go1.18&go1.19
Fixes: #9225
2022-09-09 17:09:38 +02:00
Jorropo
849e0478b5 chore: bump go-pinning-service-http-client v0.1.2 to include up to nano precision 2022-09-01 15:36:25 +02:00
Jorropo
1236eb0f58 chore: update github.com/gabriel-vasile/mimetype
See the release notes: https://github.com/gabriel-vasile/mimetype/releases/tag/v1.4.1

This is a valuable release with already public security fixes (which don't affect us AFAIT but better safe than sorry).
More mimetypes and bug fixes.
2022-08-17 02:19:18 +02:00
Marcin Rataj
a42848ac62 chore: switch back to goleveldb v1.0.0
https://github.com/ipfs/kubo/pull/9074/files?diff=split&w=1#diff-33ef32bf6c23acb95f5902d7097b7a1d5128ca061167ec0716715b0b9eeaa5f6R97
2022-08-17 00:38:51 +02:00
Marco Munizaga
831135cc9b Update go-libp2p-kad-dht to v0.17.0 2022-08-15 14:14:00 -07:00
Marco Munizaga
3ed83e485b Update go-libp2p-resource-manager to v0.5.3 2022-08-15 14:12:21 -07:00
Marco Munizaga
3f42d96952 Use newer rcmgr 2022-08-15 14:12:21 -07:00
Marco Munizaga
629245a637 Use released version of rcmgr, use specific commit for kad-dht 2022-08-15 14:12:21 -07:00
Marco Munizaga
0c58d6e32b Use released version of go-libp2p v0.21; 2022-08-15 14:12:21 -07:00
Marco Munizaga
0b3c7bcc74 mod tidy 2022-08-15 14:12:21 -07:00
Marco Munizaga
dffdd35d99 Update go-libp2p to latest master 2022-08-15 14:12:21 -07:00
Marco Munizaga
f4f4128b9f Update rcmgr dep 2022-08-15 14:12:21 -07:00
Marco Munizaga
68d9073d29 Use RC version 2022-08-15 14:12:21 -07:00
Marten Seemann
c3589a1728 WIP rcmgr auto limit scaling 2022-08-15 14:12:18 -07:00
Jorropo
f9410dc99d chore: bump go-bitswap to use the splited code with polyfill 2022-08-13 20:22:49 +00:00
Gus Eggert
310dca55dd feat: add fx options plugin
This adds a plugin interface that lets the plugin modify the fx
options that are passed to fx when the app is initialized. This means
plugins can inject their own implementations of IPFS interfaces. This
enables granular customization of go-ipfs behavior by plugins, such
as:

- Bitswap with custom filters (e.g. for CID blocking) Custom interface

- implementations such as Pinner or DAGService

- Dynamic configuration of libp2p ...

One downside of this is that we're exposing the entire dependency
graph, init hooks, initialization, etc. to users, so this comes with a
caveat that we reserve the right to make breaking changes to the graph
structure and initialization logic (although this historically happens
rarely). If these things are changed, we should mention them in
release notes and changelogs though, since they could impact users of
this plugin interface.

I'm not particularly fond of DI frameworks (and neither are some of
the folks work on/near go-ipfs), but it seems unlikely that somebody
will rewrite the dependency wiring and lifecycle hooks of go-ipfs, and
add dynamic extension points, so this seems like a palatable
compromise.

There are also problems that we should clean up in how model the
go-ipfs app in fx, such as:

- We make extensive use of nested fx.Options, which fx itself
discourages because it "limits the user's ability to customize their
application". It should be easy to flatten these out into a single
[]fx.Option slice.

- We pass around a list of opaque libp2p opts, which makes it hard to
customize after-the-fact...we should consider naming each of these
opts and providing them to fx as proper dependencies, so that they can
be explicitly overridden.

- We call fx.Invoke() in some places with anonymous functions. We
should instead only pass exported functions to fx.Invoke(), so that
they have exported names, which would make it easier to remove/augment
the invocations that happen when the app is initialized.

These aren't blocking issues, they just make it harder and more
brittle to customize go-ipfs with this plugin.
2022-08-12 17:04:29 -04:00
Claudia Richoux
2fb7437e2a feat: add blake3 support
Support hashes from 20 <= x <= 128 bytes, but does not yet have any option to generate anything else than 32 bytes hashes.

This will be forward compatible when we add such option.
2022-08-12 16:45:42 +00:00
Jorropo
7ec0c245a4 chore: bump go-blockservice to only do put onces
Fixes: #7956
2022-07-28 14:41:46 +00:00
dependabot[bot]
a3bdea4ed4 build(deps): bump go.uber.org/dig from 1.14.0 to 1.14.1
Bumps [go.uber.org/dig](https://github.com/uber-go/dig) from 1.14.0 to 1.14.1.
- [Release notes](https://github.com/uber-go/dig/releases)
- [Changelog](https://github.com/uber-go/dig/blob/master/CHANGELOG.md)
- [Commits](https://github.com/uber-go/dig/compare/v1.14.0...v1.14.1)

---
updated-dependencies:
- dependency-name: go.uber.org/dig
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 15:45:11 +00:00
dependabot[bot]
8bc466f2ed build(deps): bump github.com/ipld/go-codec-dagpb from 1.4.0 to 1.4.1
Bumps [github.com/ipld/go-codec-dagpb](https://github.com/ipld/go-codec-dagpb) from 1.4.0 to 1.4.1.
- [Release notes](https://github.com/ipld/go-codec-dagpb/releases)
- [Commits](https://github.com/ipld/go-codec-dagpb/compare/v1.4.0...v1.4.1)

---
updated-dependencies:
- dependency-name: github.com/ipld/go-codec-dagpb
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 15:32:02 +00:00