Commit Graph

14128 Commits

Author SHA1 Message Date
Henrique Dias
366546aae2
docs: add ipfs pubsub deprecation reminder to changelog (#9827) 2023-04-25 09:55:40 +02:00
Piotr Galar
f812f82574
ci: update apt before installing deps (#9831) 2023-04-24 09:44:27 +02:00
Marco Munizaga
78895a1184
deps: bump go-libp2p to v0.27.1 (#9816)
Co-authored-by: Jorropo <jorropo.pgm@gmail.com>
2023-04-14 09:09:51 +00:00
Steve Loeppky
0d38c369fd
docs: preparing 0.20 changelog for release (#9799)
Co-authored-by: Gus Eggert <gus@gus.dev>
Co-authored-by: Marcin Rataj <lidel@lidel.org>
Co-authored-by: Henrique Dias <hacdias@gmail.com>
2023-04-13 13:59:08 +00:00
Gus Eggert
3a15a0fc55
test: fix Docker tests in GH Actions (#9812)
GH Actions recently changed their Docker build implementation and it
has a different output than previously, causing the tests that parse
its output to fail.

This switches the test to not parse Docker build output. The parsing
was used to extract the image ID while still showing logs. A better
way to show logs and still know the image ID is to tag it, which is
what this now does.

This also renames the Docker tests so that they run earlier. This
takes better advantage of the fact that the sharness tests are run in
parallel. Since the Docker test are quite long, and are at the end of
the list, the test runner is not running other tests in parallel while
the Docker tests are running.
2023-04-12 09:03:11 +02:00
Henrique Dias
f7cab554f9
feat: boxo tracing and traceparent support (#9811)
https://www.w3.org/TR/trace-context/
https://github.com/ipfs/bifrost-gateway/issues/68
2023-04-11 23:51:02 +00:00
Gus Eggert
03a98280e3 test: port twonode test to Go, remove multinode test
The multinode test is effectively the same as the twonode test. There
are some problems with it too: it *looks* like it's testing the
Websocket transport with the "listentype,ws" IPTB attribute, but that
attribute doesn't actually exist in ipfs/iptb-plugins, so it does
nothing, so that test actually just runs the same test twice (Yamux
disabled). Furthermore, this is just the same test as in the mplex
twonode test. So this just removes the useless multinode test
entirely.

Also, this removes the part of the twonode test that checks the amount
of data transferred over Bitswap. This is an implementation detail of
Bitswap, it's not appropriate to test this in an end-to-end test as it
depends on algorithmic details of how Bitswap works, and has nothing
to do with transports. This is probably more appropriate as a perf or
benchmark test of Bitswap.

This also moves equivalent functionality from jbenet/go-random-files
into the testutils package. This just copies the code and modifies it
slightly for better ergonomics.
2023-04-10 14:57:15 -04:00
Gus Eggert
a97bf4271d
chore: set kubo-maintainers as default code owners (#9808) 2023-04-10 03:59:40 -07:00
Piotr Galar
c58aadb887
chore: update version (#9805) 2023-04-07 09:28:40 +02:00
Marten Seemann
3c363eb658 update go-libp2p to v0.27.0 2023-04-06 23:15:33 +02:00
Dennis Trautwein
cb2e109e4d docs: add optimistic provide feature description 2023-04-06 16:49:46 -04:00
Gus Eggert
0e55ca9377 feat: add experimental optimistic provide
This adds the ability to enable "optimistic provide" to the default
DHT client, which enables faster provides and reprovides.

For more information about optimistic provide, see:

https://protocollabs.notion.site/Optimistic-Provide-2c79745820fa45649d48de038516b814

Note that this feature only works when using non-custom router
types. This does not include the ability to enable optimistic provide
on custom routers for now, to minimize the footprint of this
experimental feature. We intend on continuing to test this and improve
the UX, which may or may not involve adding configuration for it to
custom routers. We also plan on refactoring/redesigning custom routers
more broadly so I don't want this to add more effort for maintainers
and confusion for users.
2023-04-06 16:49:46 -04:00
Marcin Rataj
6f08cdedc0
fix(ci): speed up docker build (#9800)
trying two things:
- speed up arm build by allowing cross-comp from go instead of slow QEMU
- take a stab at caching buildx layers, without infinite growth

This fix was laready applied in
14cfa48bed
and reduced build time from 20m to 3m.
2023-04-06 20:53:52 +02:00
Henrique Dias
c6a59c9cc1
feat(tracing): use OTEL_PROPAGATORS as per OTel spec (#9801) 2023-04-06 16:36:15 +02:00
Henrique Dias
1958510b3e
docs: fix jaeger command (#9797) 2023-04-06 11:30:20 +02:00
Piotr Galar
f18a69eced
Merge Release: v0.19.1 (#9794)
* chore: update version

* chore: update go-libp2p to v0.26.4

* fix: remove timeout on default DHT operations (#9783)

* fix: remove timeout on default DHT operations

This removes the timeout by default for DHT operations. In particular
this causes issues with ProvideMany requests which can take an
indeterminate amount of time, but really these should just respect
context timeouts by default. Users can still specify timeouts here if
they want, but by default they will be set to "0" which means "no
timeout".

This is unlikely to break existing users of custom routing, because
there was previously no utility in configuring a router with timeout=0
because that would cause the router to immediately fail, so it is
unlikely (and incorrect) if anybody was using timeout=0.

* fix: remove 5m timeout on ProvideManyRouter

For context see
5fda291b66

---------

Co-authored-by: Marcin Rataj <lidel@lidel.org>

* chore: bump go-blockservice to v0.5.1

* chore: update version

* chore: update changelog for v0.19

---------

Co-authored-by: Jorropo <jorropo.pgm@gmail.com>
Co-authored-by: Gus Eggert <gus@gus.dev>
Co-authored-by: Marcin Rataj <lidel@lidel.org>
2023-04-05 22:42:09 +02:00
Gus Eggert
7cff6b9359
chore: upgrade boxo to v0.8.0 (#9793) 2023-04-05 16:48:39 +00:00
Piotr Galar
0ec22f4add
chore: update deps after v0.19.0 release (#9744)
Co-authored-by: Henrique Dias <hacdias@gmail.com>
2023-04-05 12:02:20 +00:00
Gus Eggert
1b3e4438fc
chore: upgrade OpenTelemetry dependencies (#9736) 2023-04-05 11:44:14 +00:00
Gus Eggert
fd830b3c1a
test: fix flaky content routing over HTTP test (#9772) 2023-04-05 11:10:32 +00:00
Gus Eggert
f5bcaaecc1
test: use self hosted runner for go tests (#9792) 2023-04-05 12:59:49 +02:00
Hector Sanjuan
027c5b1a09
feat: allow injecting custom path resolvers (#9750)
In order to make it possible to easily-overwrite the path Resolvers (i.e. via
plugins), this creates resolvers as part of the Node rather than creating them
ad-hoc.
2023-04-04 18:11:32 +00:00
Gus Eggert
68ee5e61a8
feat: add changelog entry for router timeouts for v0.19.1 (#9784)
* feat: add changelog entry for router timeouts for v0.19.1

* Apply suggestions from code review

Co-authored-by: Steve Loeppky <biglep@protocol.ai>

---------

Co-authored-by: Steve Loeppky <biglep@protocol.ai>
2023-04-03 11:21:53 -04:00
Marcin Rataj
d1713ca28e
feat(gw): new metrics and HTTP range support (#9786)
Co-authored-by: Henrique Dias <hacdias@gmail.com>
2023-04-03 08:17:07 +00:00
Henrique Dias
55587d8e41
feat!: make --empty-repo default (#9758)
Context:
https://github.com/ipfs/kubo/pull/9758#pullrequestreview-1366898875
2023-03-31 15:06:23 +02:00
Piotr Galar
c81d2da871
ci: add gateway-conformance tests for kubo-gateway (#9780) 2023-03-31 12:07:23 +02:00
galargh
95dd93b243 ci: ignore js-js interop test cases 2023-03-31 09:29:09 +02:00
Gus Eggert
a09c8df24d
fix: remove timeout on default DHT operations (#9783)
* fix: remove timeout on default DHT operations

This removes the timeout by default for DHT operations. In particular
this causes issues with ProvideMany requests which can take an
indeterminate amount of time, but really these should just respect
context timeouts by default. Users can still specify timeouts here if
they want, but by default they will be set to "0" which means "no
timeout".

This is unlikely to break existing users of custom routing, because
there was previously no utility in configuring a router with timeout=0
because that would cause the router to immediately fail, so it is
unlikely (and incorrect) if anybody was using timeout=0.

* fix: remove 5m timeout on ProvideManyRouter

For context see
5fda291b66

---------

Co-authored-by: Marcin Rataj <lidel@lidel.org>
2023-03-30 16:08:43 -04:00
Adin Schmahmann
353dd49be2
refactor: switch gateway code to new API from go-libipfs (#9681)
Co-authored-by: Marcin Rataj <lidel@lidel.org>
Co-authored-by: Henrique Dias <hacdias@gmail.com>
2023-03-30 13:20:37 +00:00
Gus Eggert
ebdca5cf02
test: cancel workflows on same branch when new commit is added (#9771)
This is pretty common when working through PRs and ends up causing
tons of in-flight GitHub Actions workflows running because they aren't
currently canceled when a new commit is added. This will cancel
previous runs if a new commit is added on a branch (which is the
behavior we had on CircleCI).
2023-03-30 07:58:12 -04:00
Gus Eggert
a24cfb89a5
test: port remote pinning tests to Go (#9720)
This also means that rb-pinning-service-api is no longer required for
running remote pinning tests. This alone saves at least 3 minutes in
test runtime in CI because we don't need to checkout the repo, build
the Docker image, run it, etc.

Instead this implements a simple pinning service in Go that the test
runs in-process, with a callback that can be used to control the async
behavior of the pinning service (e.g. simulate work happening
asynchronously like transitioning from "queued" -> "pinning" ->
"pinned").

This also adds an environment variable to Kubo to control the MFS
remote pin polling interval, so that we don't have to wait 30 seconds
in the test for MFS changes to be repinned. This is purely for tests
so I don't think we should document this.

This entire test suite runs in around 2.5 sec on my laptop, compared to
the existing 3+ minutes in CI.
2023-03-30 07:46:35 -04:00
Arthur Gavazza
e89cce63fd
feat: add identify option to swarm peers command
Fixes #9578
2023-03-30 04:34:57 +00:00
Gus Eggert
9fb09dd398
test: port routing DHT tests to Go (#9709) 2023-03-29 19:28:55 -04:00
Gus Eggert
f4d361dd4e
test: fix autoclient flakiness (#9769)
The test trims all whitespace bytes from the output of 'ipfs cat' but
if the random bytes end in a whitespace char then it trims that too,
resulting in random test failure.

Instead this updates the test harness to only trim a single trailing
newline char, so that it doesn't end up chomping legitimate output.
2023-03-29 11:56:25 -04:00
Gus Eggert
6ebbd9d39b
test: skip flaky pubsub test (#9770)
This test flakes very often and we plan on removing this feature
entirely, so disabling this test since its failures are pretty disruptive.
2023-03-29 11:56:11 -04:00
Jorropo
3ab1086f71 chore: migrate go-libipfs to boxo
Resolves #9677, #9676, #9675, #9736
2023-03-28 22:05:25 -04:00
Jorropo
1e3b6c9857 feat: add tracing to the commands client 2023-03-28 22:05:25 -04:00
Jorropo
2bd6d22617 chore: bump sharness-deps for go 1.20 2023-03-28 22:05:25 -04:00
Jorropo
405b1d2dcd chore: update go-libp2p to v0.26.4 2023-03-28 00:49:39 +02:00
Gus Eggert
4c49967d9c feat: add client-side metrics for routing-v1 client 2023-03-27 18:19:28 -04:00
Gus Eggert
60ba0b1821 test: increase max wait time for peering assertion
The peering test is flaky and fails waiting for peers to be connected
to each other, I don't know if this will fix it, but worth trying.
2023-03-27 23:32:04 +02:00
Henrique Dias
88d431c812
feat: remove writable gateway (#9743)
Co-authored-by: Marcin Rataj <lidel@lidel.org>
2023-03-27 15:19:55 +02:00
Piotr Galar
bf7d0fc99d
Merge pull request #9484 from ipfs/process-improvement-v0.18.0
Process Improvement: v0.18.0
2023-03-27 10:50:59 +02:00
Jorropo
bb020ea1ef fix: deadlock while racing ipfs dag import and ipfs repo gc
This fixes a deadlock introduced in 1457b4fd4a.

We can't use the coreapi here because it will try to take the PinLock (RLock) again, so revert this small part of 1457b4fd4a.

This used cause a deadlock when concurrently running `ipfs dag import` concurrently with the GC.

The bug is that `ipfs dag import` takes an RLock with the PinLock.
*the cars are imported, leaving a wide window of time*
Then GC Takes a Lock on that same RWMutex while taking the GC Lock (it  blocks because it waits for the RLock to be released).
Then the car imports are finished and `ipfs dag import` tries to aqcuire the PinLock (doing an RLock) again in `Api().Pin`.

However at this point the RWMutex is starved, the runtime put a fence in front of RLocks if a Lock has been waiting for too lock (else you could have an endless stream of RLock / RUnlock forever delaying a Lock to ever go through).

The issue is that `ipfs dag import`'s original RLock which is blocking everyone will be released once it returns, which only happens when `Api().Pin` completes.

So we have a deadlock (ABA kind ?), because `ipfs dag import` waits on the GC Lock, which waits on `ipfs dag import`.

Calling the Pinner directly does not acquire the PinLock again, and thus does not have this issue.
2023-03-26 05:40:18 +02:00
Michael Muré
1457b4fd4a
feat: improve dag/import (#9721)
- don't bypass the CoreApi
- don't use a goroutine and return channel for `importWorker`, when what's happening is really just a synchronous call
- only `PinLock()` when we are going to pin
- use `cid.Set` instead of an explicit map
- fail the request early if any pinning fail, no need to try to pin more if the request failed already
2023-03-22 03:06:40 +01:00
Piotr Galar
668d0b2fa4
Merge pull request #9687 from ipfs/no-circleci
ci: remove circleci config
2023-03-21 16:34:41 +01:00
galargh
fb80af5180 fix: ensure unique job names across all GHA workflows 2023-03-21 15:50:43 +01:00
galargh
d45d8ecdad ci: simplify codeql worfklow 2023-03-21 15:01:17 +01:00
galargh
64d3c153cb Revert "ci: rename gha workflow files to match workflow names"
This reverts commit d164129258f456fb70dc709b59d743a8aed57cc2.
2023-03-21 14:59:51 +01:00
galargh
a8f2c12f71 ci: rename gha workflow files to match workflow names 2023-03-21 14:59:32 +01:00