Skip to content

v1.1.0

Latest
Compare
Choose a tag to compare
@hsanjuan hsanjuan released this 06 May 20:33
· 4 commits to master since this release
v1.1.0
931cf70

IPFS Cluster v1.1.0 is a maintenance release that comes with a number of
improvements in libp2p connection and resource management. We are bumping the
minor release version to bring the attention to the slight behavioral changes
included in this release.

In order to improve how clusters with a very large number of peers behave, we
have changed the previous logic which made every peer reconnect constantly to
3 specific peers (usually the "trusted peers" in collaborative clusters). For
obvious reasons, this caused bottlenecks when the clusters grew into the
thousands of peers. Swarm connections should now grow more organically and we
only re-bootstrap when they fall below expectable levels.

Anothe relevant change is the exposure of the libp2p Resource Manager
settings, and the new defaults, which limit libp2p usages to 25% of the
system's total memory and 50% of the process' available file descriptors. The
limits can be adjusted as explained below. The new defaults, along with other
internal details controlling the initialization of the resource manager are
likely more restrictive than the defaults used in previous versions. That
means that memory-constrained systems may start seeing resource-manager errors
where there were none before. The solution is to increase the limits. The
limits are conservative as Kubo is the major resource user at the end of the
day.

We have also updated to the latest Pebble release. This should not cause any
problems for users that already bumped major_format_version when upgrading
to v1.0.8, otherwise we recommend setting it to 16 per the warning printed
on daemon's start.

List of changes

Breaking changes

There are no breaking changes on this release.

Features
Bug fixes
Other changes

Upgrading notices

Configuration changes

A resource_manager setting has been added to the main cluster configuration section:

cluster: {
  ...
  "resource_manager": {
    "enabled": true,
    "memory_limit_bytes": 0,
    "file_descriptors_limit": 0
  },

when not present, the defaults will be as shown above. Using negative values will error.

The new setting controls the working limits for the libp2p Resource
Manager. 0 means "based on system's resources":

  • memory_limit_bytes defaults to 25% of the system's total memory when set
    to 0, with a minimum of 1GiB.
  • file_descriptors_limit defaults to 50% of the process' file descriptor limit when set to 0.

These limits can be set manually, or the resource manager can be fully
disabled by toggling the enabled setting.

When the limits are reached, libp2p will print warnings and errors as
connections and libp2p streams are dropped. Note that the limits only affect
libp2p resources and not the total memory usage of the IPFS Cluster daemon.

REST API

No changes.

Pinning Service API

No changes.

IPFS Proxy API

No changes.

Go APIs

No relevant changes.

Other

Nothing.