Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v0.27.7 #2374

Merged
merged 3 commits into from
Jun 19, 2023
Merged

Release v0.27.7 #2374

merged 3 commits into from
Jun 19, 2023

Conversation

MarcoPolo
Copy link
Collaborator

Fixes a deadlock that can occur when consumers don't pull from an event channel because they're waiting for the swarm conns lock.

Jorropo and others added 2 commits June 16, 2023 12:04
* fix: in the swarm move Connectedness emit after releasing conns

go-libp2p-kad-dht now listen to both EvtPeerIdentificationCompleted and EvtPeerConnectednessChanged
and EvtPeerIdentificationCompleted calls .ConnsToPeer inorder to do some filtering.

However it happens that it deadlocks because if the swarm is trying to emit a EvtPeerConnectednessChanged
while the subscriber is trying to process an EvtPeerIdentificationCompleted, the subscriber is stuck on
s.conns.RLock() while the swarm wont release it before having sent EvtPeerConnectednessChanged.
Deadlock !

I havn't confirmed this fixes my bug given this takes time to reproduce, I'll startup a new experiment soon.

* Fix other deadlock and add a test

* Make test a little faster

* Bind on localhost

---------

Co-authored-by: Marco Munizaga <git@marcopolo.io>
@github-actions
Copy link

Suggested version: v0.27.7

Comparing to: v0.27.6 (diff)

Changes in go.mod file(s):

(empty)

gorelease says:

gorelease: preparing to load packages for github.com/libp2p/go-libp2p: looking for missing dependencies: go: downloading github.com/libp2p/go-libp2p v0.22.0
go: downloading github.com/libp2p/go-openssl v0.1.0
go: downloading github.com/hashicorp/golang-lru v0.5.4
go: downloading go.opencensus.io v0.23.0
go: downloading github.com/libp2p/go-yamux/v3 v3.1.2
go: downloading github.com/lucas-clemente/quic-go v0.28.1
go: downloading github.com/gorilla/websocket v1.5.0
go: downloading github.com/mattn/go-pointer v0.0.1
go: downloading github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572
go: downloading github.com/cheekybits/genny v1.0.0
go: downloading github.com/marten-seemann/qtls-go1-16 v0.1.5
go: downloading github.com/marten-seemann/qtls-go1-17 v0.1.2
go: downloading github.com/marten-seemann/qtls-go1-18 v0.1.2
go: downloading github.com/marten-seemann/qtls-go1-19 v0.1.0
go: downloading github.com/nxadm/tail v1.4.8
go: downloading gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7
go: downloading github.com/libp2p/go-libp2p v0.28.0
go: downloading golang.org/x/tools v0.9.1
go: downloading github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0
go: downloading github.com/minio/sha256-simd v1.0.1
go: downloading github.com/multiformats/go-multicodec v0.9.0
go: downloading github.com/multiformats/go-multihash v0.2.2
go: downloading golang.org/x/sync v0.2.0
go: downloading github.com/benbjohnson/clock v1.3.5
go: downloading golang.org/x/sys v0.8.0
go: downloading github.com/libp2p/go-nat v0.2.0
go: downloading github.com/libp2p/go-reuseport v0.3.0
go: downloading github.com/klauspost/compress v1.16.5
go: downloading github.com/quic-go/webtransport-go v0.5.3
go: downloading github.com/miekg/dns v1.1.54
go: downloading github.com/prometheus/client_model v0.4.0
go: downloading go.uber.org/dig v1.17.0
go: downloading github.com/mattn/go-isatty v0.0.19
go: downloading github.com/onsi/ginkgo/v2 v2.9.7
go: downloading golang.org/x/net v0.10.0
go: downloading github.com/klauspost/cpuid/v2 v2.2.5
go: downloading github.com/huin/goupnp v1.2.0
go: downloading go.uber.org/atomic v1.11.0
go: downloading golang.org/x/text v0.9.0
go: downloading lukechampine.com/blake3 v1.2.1
go: downloading github.com/google/pprof v0.0.0-20230602150820-91b7bce49751
gorelease-load-module imports
	github.com/libp2p/go-libp2p/p2p/test/websocket: cannot find module providing package github.com/libp2p/go-libp2p/p2p/test/websocket
go: downloading github.com/decred/dcrd/crypto/blake256 v1.0.1
go: downloading github.com/go-logr/logr v1.2.4
go: downloading github.com/onsi/gomega v1.27.7
go: module github.com/golang/protobuf is deprecated: Use the "google.golang.org/protobuf" module instead.

gocompat says:

Your branch is up to date with 'origin/release-v027'.

Cutting a Release (when not on master)

This PR is targeting release-v027, which is not the default branch.
If you wish to cut a release once this PR is merged, please add the release label to this PR.

Cutting a Release (and modifying non-markdown files)

This PR is modifying both version.json and non-markdown files.
The Release Checker is not able to analyse files that are not checked in to release-v027. This might cause the above analysis to be inaccurate.
Please consider performing all the code changes in a separate PR before cutting the release.

Automatically created GitHub Release

A draft GitHub Release has been created.
It is going to be published when this PR is merged.
You can modify its' body to include any release notes you wish to include with the release.

@marten-seemann
Copy link
Contributor

Wrong order of commits, not sure if it matters. Would be safer to put the release commit at the end.

@MarcoPolo
Copy link
Collaborator Author

Will squash

@MarcoPolo
Copy link
Collaborator Author

We agreed on this over a sync call.

@MarcoPolo MarcoPolo merged commit 68ad5ea into release-v027 Jun 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants