Upgrade hashicorp/go-msgpack to v2, with go.mod upgraded from v0.5.5 to v2.1.1. GH-577
go-msgpack v2.1.1 is by default binary compatible with v0.5.5 ("non-builtin" encoding of time.Time), but can decode messages produced by v1.1.5 as well ("builtin" encoding of time.Time).
However, if users of this libary overrode the version of go-msgpack (especially to v1), this could break compatibility if raft nodes are running a mix of versions.
This compatibility can be configured at runtime in Raft using NetworkTransportConfig.MsgpackUseNewTimeFormat -- the default is false, which maintains compatibility with go-msgpack v0.5.5, but if set to true, will be compatible with go-msgpack v1.1.5.
Fixes a performance bug related to pipelining. See hashicorp/raft#541 for extensive details on the testing done.
Change in Default Behavior: This is being released as a minor version even though it changes the default behaviour of the library. The rationale for that is that in almost all cases we are aware of (including all HashiCorp tools) the previous behavior performs significantly worse than the new default. Most other users of this library are most likely to notice no change, or see a significant improvement in latency under high load so we want that to be the default experience rather than one that needs tuning to acheive.
It's possible if you are using this library in way that is significantly different to our typical usage (e.g. over very high latency networks and with enough throughput) that this could cause an increase in commit latency. The increase should never exceed the round-trip-time between your servers. The issue being fixed could cause latency increases in the order of 100x more than the mean commit time at high load. If you are still unsure, the old behavior can be retained by setting the new NetTransportConfig.MaxRPCsInFlight = 130.
Upgrade hashicorp/go-msgpack to v2, with go.mod upgraded from v0.5.5 to v2.1.1. GH-577
go-msgpack v2.1.1 is by default binary compatible with v0.5.5 ("non-builtin" encoding of time.Time), but can decode messages produced by v1.1.5 as well ("builtin" encoding of time.Time).
However, if users of this libary overrode the version of go-msgpack (especially to v1), this could break compatibility if raft nodes are running a mix of versions.
This compatibility can be configured at runtime in Raft using NetworkTransportConfig.MsgpackUseNewTimeFormat -- the default is false, which maintains compatibility with go-msgpack v0.5.5, but if set to true, will be compatible with go-msgpack v1.1.5.
Fixed a performance anomaly related to pipelining RPCs that caused large increases in commit latency under high write throughput. Default behavior has changed. For more information see #541.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps github.com/hashicorp/raft from 1.4.0 to 1.6.0.
Release notes
Sourced from github.com/hashicorp/raft's releases.
Changelog
Sourced from github.com/hashicorp/raft's changelog.
Commits
b96f998
Update changelog for 1.6.0fb42781
Upgrade go-msgpack to 2.1.1d09d941
Merge pull request #567 from SchopenhauerZhang/fix_unknow_status_when_multi_s...49bd61b
make candidateFromLeadershipTransfer atomic to avoid a race (#570)a3a1c10
Document some Apply error cases better (#561)6afcd70
Make it done when Push to the notify channel if given3b0f2e5
add CommitIndex API (#560)b650ad6
Merge pull request #562 from hashicorp/gofumpt1feb978
go mod tidyc9355ac
Update minimum go version to 1.17Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show