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 0.6.0 #7347

Closed
66 of 77 tasks
Stebalien opened this issue May 21, 2020 · 25 comments
Closed
66 of 77 tasks

Release 0.6.0 #7347

Stebalien opened this issue May 21, 2020 · 25 comments
Labels
topic/release Topic release
Milestone

Comments

@Stebalien
Copy link
Member

Stebalien commented May 21, 2020

go-ipfs 0.6.0 Release

RC7: https://dist.ipfs.io/go-ipfs/v0.6.0-rc7

🗺 What's left for release

🚢 Estimated shipping date

June 9th, 2020

🔦 Highlights

  • QUIC is enabled by default. Currently using QUIC draft 27 but we plan on releasing with QUIC draft 28 (assuming it fairs well in testing).
  • New security transport, Noise. It's experimental (will only be used as a fallback by default) but still enabled by default. It will replace SECIO as the cross-implementation security transport in a future release.
  • New pubsub release with an all-new gossipsub version.
  • Peering subsystem to establish and maintain persistent connections to to specific peers ("friends").
  • ipfs-404.html 404 page support Gateway renders pretty 404 pages if available #4233.
  • Advertise fewer addresses in libp2p.

MIGRATION

This release contains a small config migration to enable QUIC by default. This migration will:

  • Normalize multiaddrs in the bootstrap list to use the /p2p/Qm... syntax for multiaddrs instead of the /ipfs/Qm... syntax.
  • Add QUIC addresses for the default bootstrapers, as necessary. If you've removed the default bootstrappers from your bootstrap config, the migration won't add them back.
  • Add a QUIC listener address to mirror any TCP addresses present in your config. For example, if you're listening on /ip4/0.0.0.0/tcp/1234, this migration will add a listen address for /ip4/0.0.0.0/udp/1234/quic.

Changelog

Full Changelog
  • github.com/ipfs/go-ipfs:
  • github.com/ipfs/go-bitswap (v0.2.13 -> v0.2.15):
  • github.com/ipfs/go-ipfs-cmds (v0.2.2 -> v0.2.9):
  • github.com/ipfs/go-ipfs-config (v0.5.3 -> v0.7.1):
  • github.com/ipfs/go-log/v2 (v2.0.5 -> v2.0.8):
    failed to fetch repo
  • github.com/ipfs/go-mfs (v0.1.1 -> v0.1.2):
    • Fix incorrect mutex unlock call in File.Open (ipfs/go-mfs#82)
    • Add autocomment configuration
    • Add standard issue template
    • test: add Directory.ListNames test (ipfs/go-mfs#81)
    • doc: add a lead maintainer
    • Update README.md with newer travis badge (ipfs/go-mfs#78)
  • github.com/ipfs/interface-go-ipfs-core (v0.2.7 -> v0.3.0):
  • github.com/jbenet/go-is-domain (v1.0.3 -> v1.0.5):
  • github.com/libp2p/go-addr-util (v0.0.1 -> v0.0.2):
    • farewell gx; thanks for serving us well.
    • lol, save the file first
    • fix discuss badge
    • add discuss link to readme
    • fix: fdcostly should take only the prefix into account (libp2p/go-addr-util#5)
    • add gomod support // tag v0.0.1 (libp2p/go-addr-util#17)
  • github.com/libp2p/go-libp2p (v0.8.3 -> v0.9.2):
  • github.com/libp2p/go-libp2p-autonat (v0.2.2 -> v0.2.3):
  • github.com/libp2p/go-libp2p-blankhost (v0.1.4 -> v0.1.6):
  • github.com/libp2p/go-libp2p-connmgr (v0.2.1 -> v0.2.3):
  • github.com/libp2p/go-libp2p-core (v0.5.3 -> v0.5.6):
  • github.com/libp2p/go-libp2p-kad-dht (v0.7.11 -> v0.8.0):
  • github.com/libp2p/go-libp2p-kbucket (v0.4.1 -> v0.4.2):
  • github.com/libp2p/go-libp2p-noise (null -> v0.1.1):
  • github.com/libp2p/go-libp2p-peerstore (v0.2.3 -> v0.2.4):
  • github.com/libp2p/go-libp2p-pubsub (v0.2.7 -> v0.3.0):
    • add doc comment for GossipSubDout
    • fix typo
    • add note about opp. graft threshold
    • stop using term "gossip mesh"
    • add doc comments to gossipsub constants
    • sleep longer for travis
    • sleep in test after bumping fake clock
    • rm empty slice alloc
    • better range check for expected value in test
    • loosen test expectations to appease travis
    • this is getting a bit silly
    • play with test timing on travis
    • add delay in TestTagTracerDeliveryTags
    • even fewer peers in connmgr test
    • use fewer peers in connmgr test
    • inline decayingDeliveryTag method into addDeliveryTag
    • close decaying tags when leaving topic
    • rm misleading comment
    • sort imports
    • check reject reason before deleting near-first state
    • update dependencies and use preset decay fns
    • use map to track near-first deliveries in tagTracer
    • free up drec.peers when we're done with it
    • add delivery tags for "near-first" msg deliveries
    • bump blankhost to 0.1.6
    • lock for reading in bumpDeliveryTag
    • add nil check for decayer
    • increase decaying tag interval
    • test delivery tags vs sybil storm
    • bump connmgr dep to latest PR commit
    • unit tests for tagTracer
    • add tagTracer to apply connmgr tags
    • temporarily depend on PR commits
    • track discovery API change
    • use the proto we already have in AddPeer to determine whether the connection houses the stream
    • only count an outbound connection if it has a pubsub stream
    • cache scores throughout the heartbeat
    • maintain outboud peer quota
    • precompute outbound peers on AddPeer, add Dout
    • only allow GRAFT from outbound peers when we are at or over Dhi
    • check if already in the mesh in handleGraft to support concurrent grafting
    • [blacklist] Use .Has check before add in time cached version - adjust signature
    • [validation] Use label for break
    • [validation] break not used correct - need return or give label, i choose return
    • deflake TestGossipsubAttackSpamIHAVE
    • update tests for quadratic p4
    • make p4 quadratic
    • update IHAVE spam test to test for behavioural tests because of broken promises
    • add test for gossip_tracer
    • update godoc for P7
    • gossip tracer implementation
    • gossip tracer preliminaries
    • extended internal tracing for multiple objects, not just score
    • try to deflake MeshFailure test; travis managed to fail on this
    • godoc
    • better backoff handling
    • add backoff to PRUNE messages
    • extend behaviour penalty test to ensure coverage
    • fix test for behaviour penalty validation
    • fix typo
    • incorporate p7 into score
    • add p7 configuration to score parameters
    • factor out doSendRPC and doDropRPC methods
    • only call fragmentRPC if we're over the size limit
    • close stream in test
    • split large IWANT / IHAVE messages, add unit test
    • fix prune message in test
    • try to send control messages in one RPC when fragmenting
    • fix race condition in rpc fragmentation test
    • rewrite test for rpc fragmentation
    • fragment large RPCs in sendRPC
    • downgrade graylist Warn log to Info
    • downgrade tracer Error logs to Warn
    • use log.Warn instead of Warning
    • add defensive checks for potentially duplicate traces
    • add some more validator tests
    • add comment about validationThrottled suerpseding ValidationIgnore
    • fix apparent flakiness in test
    • fix typo
    • add test exercising score integration with extended validation
    • add test for multitopic validation with extended validation interface
    • add test for rejections with ignore validator decision
    • implement extended validator support
    • Prevent multiple invocations of relay cancel function
    • Move counter incrementing before announce
    • Fix race in the TestTopicRelayReuse
    • Merge stop announcing conditions
    • Tests for topic relay
    • Relay incoming messages
    • Topic relay discovery
    • Topic relay cancelling
    • Topic relay support
    • add defaults for DecayInterval and DecayToZero
    • add utility function for computing score parameter decays
    • fix typo
    • add tests for message rejection paths
    • fix bug in penalties from message rejection
    • add test for peer score inspection
    • be less dependent on accurate time calculations in test
    • relax message delivery requirements for randomsub tests
    • make randomsub test reliable
    • add network size argument to randomsub
    • add randomsub test
    • add sqrt behaviour to randomsub
    • Score tests (mount on case insensitive filesystems #288) (libp2p/go-libp2p-pubsub#288)
    • reify fanoutTTL in the GossipSubRouter struct
    • add test for invalid message author
    • increase delay for TestPeerDisconnect
    • increase travis friendliness for new tests
    • add test for multi-topic validation
    • add test for assorted validation options that were not covered
    • add test for assorted pubsub options that were not covered
    • fix broken WithMessageAuthor option
    • add test for announce retry
    • improve reliability of star topology tests
    • pull overlay parameters into the GossipSubRouter struct
    • make star topology tests more reliable
    • import grouping
    • add signed peer records only in the center of the star for signed peer record test
    • add test with signed peer records
    • restore coverage for score_params.go
    • validate that TimeInMeshQuantum is non-zero
    • fix the global variable mutation races
    • increase time to disconnect in floodsub disconnection test
    • a little bit more time to avoid races with restoring mutated config variables
    • add a heartbeat's worth of delay before restoring mutated globals
    • reduce prune backoff times for opportunistic grafting test
    • increase wait time for IWANT spam test to 1s
    • add test for opportunistic grafting
    • make initial delay for direct peer connections a variable
    • add direct test for gossipsub router's piggybackControl
    • rename tests for consistency
    • add test for negative scores below the gossip threshold
    • remove unnecessary length check
    • add test for gossipsub enough peers
    • add test for gossipsub flood publishing
    • add test for gossipsub direct peers
    • docs: one more badger
    • docs: fix badgers
    • close the remote tracer in test
    • fix close race in basicTracer
    • add test for tracers
    • add test for peer score parameter validation
    • update go-libp2p-discovery, go mod tidy
    • move validation tests to their own file
    • deflake TestValidatorOverload
    • truncate per peer message id lists
    • log counts in IHAVE flood protection measures
    • add backoff penalty for GRAFT floods
    • make maximum number of IHAVE messages accepted per heartbeat configurable
    • improve handling of IHAVE floods
    • fix data races in spam tests
    • rename gossipsub_attack_test to gossipsub_spam_test
    • fix GRAFT spam test
    • fix IHAVE spam test
    • Add IHAVE spam test
    • test: add test for invalid message spam
    • test: GRAFT spam and GRAFT backoff tests
    • test: add IWANT spam test
    • add protections from IHAVE floods
    • add protections from GRAFT floods
    • gomod tidy
    • fix IPv4 -vs- IPv6 address handling in peer address tracking
    • more rigorously defeat unspecified address gremlins
    • fix issue with unspecific IPv6 addrs in conn IP tracking
    • gomod: update go-multiaddr-net
    • fix bug in peerScore.setIPs
    • disable flaky and irrelevant tests
    • configurable number of peers for opportunistic grafting
    • fix typo
    • fix typo
    • opportunistic grafting
    • use a configurable variable for direct peer reconnect ticks
    • eagerly send gossip at the end heartbeat
    • comments and nits.
    • support direct peering agreements
    • update REAMDE
    • correctly attribute invalid message deliveries due to self origin rejection
    • better handling of message originating from self but forwarded by another peer
    • move self-publish check to pubsub
    • rename delivery_ constants to satisfy the camelcase worshipers and nitpickers
    • use named constants for tracing message rejection reasons
    • add IP whitelist for colocation factor penalty
    • use manet.ToIP instead of hand-rolling multiaddr to IP conversion
    • gomod: use go-multiaddr-net v0.1.3
    • don't forward messages with source ourselves but not published by ourselves
    • increase connection manager weight for mesh peers
    • only retain negative scores
    • topic score cap
    • godoc nits for parameter weights.
    • wrap topic param validation error
    • rename score debug option, address some comments around inspection
    • reraise GossipSubPrunePeers to 16
    • use a struct for aggregating score thresholds
    • make PX optional and disabled by default, gate by acceptPXThreshold
    • move score parameter types to their own file
    • gomod tidy
    • fix rebase artifacts
    • track heartbeat ticks, only clear backoff every 15.
    • check exact expiration date of backoff when pruning because of backoff
    • add backoff when pruning because of negative score
    • refresh backoff when pruning during the backoff period
    • shuffle IWANT list
    • add option to periodically inspect peer scores for debugging purposes
    • validate the threshold values
    • move score starting nil check inside the score implementation
    • short-circuit score computation in peer selection filters
    • distinguish throttled validation because of a full worker queue.
    • fix bug in WithEventTracer
    • peer score parameter validation
    • implement periodic maintenance
    • implement getIPs and refreshIPs
    • implement message delivery struct details
    • double check delivery to aboid duplicate counts
    • finetune sticky mesh failure penalty parameter
    • sticky mesh failure penalty parameter
    • clean up the logic of mesh delivery window
    • more logical code ordering
    • simplify duplicate mesh delivery tracking
    • comment cosmetics
    • track message delivery time within the validation pipeline
    • peer tracking
    • mesh tracking
    • minimize hash table accesses
    • message delivery tracking
    • respect the time in mesh cap
    • respec decay to zero parameter in counter decay
    • add nil check in Score function
    • fix peer IP tracking structure
    • peer score refresh: counter decay and mesh activation
    • peer score calculation
    • explicit Start for peer scoring to inject the router
    • peer score parameters
    • limit message retransmissions through IWANT requests
    • track peer (re)transmissions in message cache
    • adaptive gossip dissemination
    • select good peers for PX, tune the px related limits
    • allow gossipsub to graylist peers based on score
    • router.Publish doesn't need the source, it takes the whole message now
    • backoff when we prune too, refuse to reGRAFT backed off peers
    • increase D_score to 4
    • correctly implement flood publishing
    • implement flood publishing option
    • keep D peer when pruning for oversubscription
    • remove peers with negative score from fanout
    • hook score into heartbeat maintenance
    • heartbeat doPX is a more complex decision
    • filter peers with negative score in initial mesh on join
    • hook peer score into control message handlers
    • peer score scaffolding
    • hook the tracer for peer scoring
    • gomod: use go-libp2p-core@peer-records and go-libp2p-peerstore@certified-addrs
    • update PR branch dependencies
    • track changes to peer records in -core
    • gomod: use go-libp2p-core@peer-records and go-libp2p-peerstore@certified-addrs
    • fix: fix a busy loop while offline (Install sharness #278) (libp2p/go-libp2p-pubsub#278)
    • docs: update readme welcome message
    • docs: fix CI badges
    • docs: Tidy up (Swarm + Handshake Listen Addresses #271) (libp2p/go-libp2p-pubsub#271)
    • Update label-syncer.yml
    • Delete label-syncer.yml
    • gomod tidy
    • fix rebase artifacts
    • don't spawn a goroutine for scheduling connections
    • shuffle peers when limiting px set
    • add limit to the number of peers to connect to from px
    • connect to peers obtained through px
    • backoff grafting to peers that have pruned us
    • peer exchange on prune
    • protocol ID for gossipsub v1.1
    • gomod: use go-libp2p-core@peer-records and go-libp2p-peerstore@certified-addrs
    • renaming in error messages & local var
    • add missing continue to error case
    • fix import & var naming
    • update PR branch dependencies
    • track changes to peer records in -core
    • don't spawn a goroutine for scheduling connections
    • shuffle peers when limiting px set
    • add limit to the number of peers to connect to from px
    • make connection timeout a variable, set for 30s (instead of 10s)
    • extend star topology test to assert that no peer is left with a single connection
    • trace peer exchange
    • test prune px with a star topology
    • connect to peers obtained through px
    • backoff grafting to peers that have pruned us
    • peer exchange on prune
    • protocol ID for gossipsub v1.1
    • extend ControlPrune with peer exchange information
    • gomod: use go-libp2p-core@peer-records and go-libp2p-peerstore@certified-addrs
    • set sendTo to remote peer id in trace events (libp2p/go-libp2p-pubsub#268)
    • make wire protocol message size configurable. (Bitswap peer receives duplicate blocks #261) (libp2p/go-libp2p-pubsub#261)
  • github.com/libp2p/go-libp2p-pubsub-router (v0.2.1 -> v0.3.0):
  • github.com/libp2p/go-libp2p-quic-transport (v0.3.7 -> v0.4.1):
  • github.com/libp2p/go-libp2p-record (v0.1.2 -> v0.1.3):
  • github.com/libp2p/go-libp2p-swarm (v0.2.3 -> v0.2.5):
  • github.com/libp2p/go-libp2p-transport-upgrader (v0.2.0 -> v0.3.0):
  • github.com/libp2p/go-openssl (v0.0.4 -> v0.0.5):
  • github.com/libp2p/go-yamux (v1.3.5 -> v1.3.7):
  • github.com/lucas-clemente/quic-go (v0.15.7 -> v0.15.8):
  • github.com/multiformats/go-multiaddr (v0.2.1 -> v0.2.2):
  • github.com/multiformats/go-multibase (v0.0.2 -> v0.0.3):

✅ Release Checklist

For each RC published in each stage:

  • version string in version.go has been updated
  • tag commit with vX.Y.Z-rcN
  • upload to dist.ipfs.io
    1. Build: https://github.com/ipfs/distributions#usage.
    2. Pin the resulting release.
    3. Make a PR against ipfs/distributions with the updated versions, including the new hash in the PR comment.
    4. Ask the infra team to update the DNSLink record for dist.ipfs.io to point to the new distribution.
  • cut a pre-release on github and upload the result of the ipfs/distributions build in the previous step.
  • Announce the RC:

Checklist:

  • Stage 0 - Automated Testing
    • Feature freeze. If any "non-trivial" changes (see the footnotes of docs/releases.md for a definition) get added to the release, uncheck all the checkboxes and return to this stage.
    • Automated Testing (already tested in CI) - Ensure that all tests are passing, this includes:
  • Stage 1 - Internal Testing
    • CHANGELOG.md has been updated
    • Infrastructure Testing:
      • Deploy new version to a subset of Bootstrappers
      • Deploy new version to a subset of Gateways
      • Deploy new version to a subset of Preload nodes
      • Collect metrics every day. Work with the Infrastructure team to learn of any hiccup
    • IPFS Application Testing - Run the tests of the following applications:
  • Stage 2 - Community Dev Testing
    • Reach out to the IPFS early testers listed in docs/EARLY_TESTERS.md for testing this release (check when no more problems have been reported). If you'd like to be added to this list, please file a PR.
    • Reach out to on IRC for beta testers.
    • Run tests available in the following repos with the latest beta (check when all tests pass):
  • Stage 3 - Community Prod Testing
    • Documentation
    • Invite the IPFS early testers to deploy the release to part of their production infrastructure.
    • Invite the wider community through (link to the release issue):
  • Stage 4 - Release
    • Final preparation
      • Verify that version string in version.go has been updated
      • tag commit with vX.Y.Z
      • update release branch to point to release commit (git merge vX.Y.Z).
      • Release published
      • Cut a new ipfs-desktop release
    • Publish a Release Blog post (at minimum, a c&p of this release issue with all the highlights, API changes, link to changelog and thank yous)
    • Broadcasting (link to blog post)
  • Post-Release
    • Bump the version in version.go to vX.(Y+1).0-dev.
    • Create an issue using this release issue template for the next release.
    • Make sure any last-minute changelog updates from the blog post make it back into the CHANGELOG.

❤️ Contributors

Contributor Commits Lines ± Files Changed
vyzo 217 +7924/-2790 292
Aarsh Shah 25 +3864/-1482 107
Marten Seemann 39 +3486/-1525 61
Dirk McCormick 15 +2949/-985 43
Yusef Napora 66 +2622/-785 98
Steven Allen 84 +2328/-849 142
Raúl Kripalani 20 +2135/-706 53
Louis Thibault 2 +1111/-4 4
Will Scott 15 +717/-219 31
Hector Sanjuan 22 +619/-177 49
Michael Muré 7 +456/-213 17
dependabot-preview[bot] 46 +542/-57 92
David Dias 11 +426/-88 15
Lukasz Zimnoch 9 +361/-49 13
Peter Rabbitson 7 +247/-138 22
Jakub Sztandera 4 +157/-104 9
RubenKelevra 12 +83/-83 29
JP Hastings-Spital 1 +145/-0 2
Adin Schmahmann 7 +45/-32 9
Marcin Rataj 8 +24/-39 8
Tiger 5 +53/-8 6
Akira 2 +35/-19 2
Casey Chance 2 +31/-22 2
Alan Shaw 1 +44/-0 2
Jessica Schilling 4 +20/-19 7
Gowtham G 4 +22/-14 6
Edgar Aroutiounian 3 +16/-8 3
Peter Wu 2 +12/-9 2
Sawood Alam 2 +7/-7 2
mawei 2 +5/-5 2
decanus 1 +5/-5 1
Alfonso Montero 1 +1/-5 1
Johnny 1 +1/-1 1
Ganesh Prasad Kumble 1 +1/-1 1
Dominic Della Valle 1 +1/-1 1
Corbin Page 1 +1/-1 1
Bernhard M. Wiedemann 1 +1/-1 1

Would you like to contribute to the IPFS project and don't know how? Well, there are a few places you can get started:

⁉️ Do you have questions?

The best place to ask your questions about IPFS, how it works and what you can do with it is at discuss.ipfs.io. We are also available at the #ipfs channel on Freenode, which is also accessible through our Matrix bridge.

@Stebalien Stebalien added the topic/release Topic release label May 21, 2020
@Stebalien Stebalien added this to the go-ipfs 0.6 milestone May 21, 2020
@Stebalien Stebalien pinned this issue May 21, 2020
@RubenKelevra

This comment has been minimized.

@marten-seemann
Copy link
Member

@RubenKelevra That fix is already contained in v0.15.7, which was released with go-libp2p-quic-transport v0.3.7.

@RubenKelevra

This comment has been minimized.

@Stebalien
Copy link
Member Author

RC1 has been released: https://dist.ipfs.io/go-ipfs/v0.6.0-rc1

@Kubuxu Kubuxu unpinned this issue Jun 5, 2020
@Kubuxu Kubuxu pinned this issue Jun 5, 2020
@RubenKelevra

This comment has been minimized.

@RubenKelevra

This comment has been minimized.

@RubenKelevra

This comment has been minimized.

@RubenKelevra
Copy link
Contributor

@Stebalien wrote:

Although you're right, this could very much be a large cause of the "killing routers" problem. I also think there may be a simple solution we can get into the next release (attempting now).

Will we change the default settings in this release to include the server-filters, to fix #7300 and #3320 as well as #6932 and libp2p/go-libp2p#436? :)

@Stebalien
Copy link
Member Author

Unfortunately, those badger fixes haven't been backported to version 1 yet.

Will we change the default settings in this release to include the server-filters

No, unfortunately that would prevent nodes from dialing each other on a private network.

The proposed fix here is to avoid dialing private addresses as part of queries on the public DHT. However, that hasn't been implemented yet. But there are some tricky edge cases here and we haven't implemented it yet.

@RubenKelevra
Copy link
Contributor

RubenKelevra commented Jun 10, 2020

Well, local nodes are quite unlikely to find each other through the DHT. So it makes no sense to announce the private IPs at all, doesn't it? 🤔

The swarm filter on the other hand could be overruled by manual 'swarm connect' and peers which was found via mDNS.

If a user really wants to connect peers from the same or different private subnets, he/she should use either 'swarm connect' or add them to the bootstrap nodes list.

So it boils down to just filter IPs while learning them from other peers or reading them from the DHT.

@Stebalien
Copy link
Member Author

The proposed fix here is to avoid dialing private addresses as part of queries on the public DHT.

^^

@RubenKelevra

This comment has been minimized.

@RubenKelevra
Copy link
Contributor

Unfortunately, those badger fixes haven't been backported to version 1 yet.

I created a tracking issue upstream - they might not be aware :)

@Stebalien
Copy link
Member Author

Hello early testers, we now have a fully featured and tested RC online for public testing: https://dist.ipfs.io/go-ipfs/v0.6.0-rc6

Please be aware that this RC contains a config migration. It should run pretty much instantaneously, but it will add add QUIC listener addresses to your configs by default when upgrading from the previous release.

We also recommend that you try out the often requested "peering" (sometimes called friending, bonding, etc.) feature. This feature allows specifying a set of peers to keep open connections to at all times (useful for, e.g., connecting a gateway and a storage cluster).

Early Testers:

@DavidBurela
Copy link

The peering support makes me so happy.

@swedneck
Copy link
Contributor

Peering doesn't seem to work for me, unless i got the syntax completely wrong (a full example in the docs would help).

I just get Error: error loading plugins: failure to decode config: invalid character '}' looking for beginning of object key string

@Stebalien
Copy link
Member Author

@swedneck #7466?

@Stebalien
Copy link
Member Author

go-ipfs 0.6.0-rc7 is out with two changes:

  1. The config has a new Swarm.Transports section for configuring transports. You can use this to prefer or disable the new noise transport, or disable the new QUIC transport if necessary. This section replaces the Experimental.OverrideSecurityTransports option present in the last RC.
  2. Support for QUIC draft 29. Our QUIC implementation now supports both draft 28 and draft 29 to ease the transition for anyone testing the RCs. Go-ipfs 0.7.0 will support only draft 29 so make sure to upgrade to the final release when it's out.

This will almost certainly be the final RC in this release cycle. Please test widely. I'm hoping to cut a final release before the end of the week, if possible.

@DavidBurela
Copy link

It seems a migration isn't automatically run when upgrading to 0.6.0

I used ipfs-update to go from 0.5.1 -> 0.6.0-RC1 -> 0.6.0

0.6.0-RC1 was working fine.
But after moving to 0.6.0, running IPFS with ipfs stats repo gives the error Error: ipfs repo needs migration

I can't find any information in ipfs --help or ipfs repo --help on how to migrate the repo.

@Stebalien
Copy link
Member Author

That's strange. ipfs-update should do this for you. IPFS was probably running when you ran ipfs-update and, unfortunately, we don't run the migration in that case.

The simplest way to run the migration is to start the daemon with ipfs daemon --migrate.

@DavidBurela
Copy link

I had stopped the daemon, still got the log to show it. ipfs-update usually fails to replace the binary if the daemon is still running.

image

Thanks, running ipfs daemon --migrate did fix the issue.
Feedback on this, it seems like you should be able to run the migration without needing to run the daemon. e.g. ipfs repo migrate. Instead of needing to run the daemon, stopping it, and then restarting the system service.

@Stebalien
Copy link
Member Author

Ah. I assume your systemd unit sets IPFS_PATH?

I had stopped the daemon, still got the log to show it. ipfs-update usually fails to replace the binary if the daemon is still running.

On linux? What version of ipfs-update are you using?

Feedback on this, it seems like you should be able to run the migration without needing to run the daemon. e.g. ipfs repo migrate. Instead of needing to run the daemon, stopping it, and then restarting the system service.

#7471

Agreed.

@DavidBurela
Copy link

Ubuntu 20.0.4
image

ipfs was installed initially using sudo ipfs-update install latest, so that it put it into /usr/local/bin/ipfs

And just to cover all bases, this is the systemd entry, which references it also from /usr/local/bin/ipfs. Which was stopped before using ipfs-update to bring it up to the latest.

[Unit]
Description=IPFS Daemon
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/ipfs daemon --enable-namesys-pubsub
User=ipfs-admin

[Install]
WantedBy=multi-user.target

@Stebalien
Copy link
Member Author

Ok, got it. The issue is that sudo ipfs-update runs ipfs-update as root (with HOME=/root and IPFS_PATH=/root/.ipfs). Your systemd unit runs IPFS as ipfs-admin with IPFS_PATH=/path/to/ipfs-admin-home/.ipfs.

Unfortunately, this isn't something we can readily solve in ipfs update itself. The best we can do is make migrations less painful.

For now, I recommend passing the --migrate flag in the systemd unit. See https://github.com/ipfs/go-ipfs/blob/master/misc/systemd/ipfs.service for an example.

@Stebalien
Copy link
Member Author

@aschmahmann could you create a 0.7.0 release issue and close this one?

@jacobheun jacobheun unpinned this issue Jul 23, 2020
@jacobheun jacobheun modified the milestones: go-ipfs 0.6, go-ipfs 0.5 Aug 21, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
topic/release Topic release
Projects
None yet
Development

No branches or pull requests

6 participants