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

Upgrade to msgpack v2 2.1.2 #705

Merged
merged 7 commits into from
Mar 20, 2024
Merged

Upgrade to msgpack v2 2.1.2 #705

merged 7 commits into from
Mar 20, 2024

Conversation

swenson
Copy link

@swenson swenson commented Oct 19, 2023

This adds the option to specify what version of the time.Time encoding format is desired. The default option is false, which preserves compatibility with the current dependency of
hashicorp/go-msgpack 0.5.5 in go.mod, but users of this library will probably want to override the the setting.

While we're here, upgrade the go.mod file.

I tested that this appears to work with Nomad.

This needs to be updated and merged after
hashicorp/memberlist#292

@swenson swenson requested a review from a team as a code owner October 19, 2023 20:51
@swenson swenson requested review from JadhavPoonam and removed request for a team October 19, 2023 20:52
swenson pushed a commit to hashicorp/nomad that referenced this pull request Oct 19, 2023
And set the `time.Time` option to use the go-msgpack-1.1.5-compatible
encoding in all the places, since that is the (now previous) version
in `go.mod`.

v2 2.1.1 was specifically designe to honor backwards compatibility
with 1.1.5 and 0.5.5, and to clean up the code base to be more
maintainable. There may performance lost with the 1.1.5 to 2.1.1
migration since the fastpath code was removed, but the increased safety
is probably worth it. See
[the release notes for go-msgkack 2.1.0](https://github.com/hashicorp/go-msgpack/releases/tag/v2.1.0)
for more details.

I tested this by running this code, and booting up a cluster with
a node also running the prior version of Nomad (before the upgrade).
Before I made the changes to set the right `time.Time` option, the
previous-version node would throw a bunch of time-decoding errors.
After fixing the option, the node came up smoothly, even after
changing leadership between them.

This relies on
- [ ] hashicorp/serf#705
- [ ] hashicorp/raft-boltdb#38
- [ ] hashicorp/raft#577
- [ ] hashicorp/memberlist#292

and maybe
- [ ] hashicorp/net-rpc-msgpackrpc#12
@swenson swenson requested review from a team, sarahethompson and dlaguerta and removed request for a team October 25, 2023 18:47
swenson pushed a commit to hashicorp/nomad that referenced this pull request Oct 25, 2023
And set the `time.Time` option to use the go-msgpack-1.1.5-compatible
encoding in all the places, since that is the (now previous) version
in `go.mod`.

v2 2.1.1 was specifically designe to honor backwards compatibility
with 1.1.5 and 0.5.5, and to clean up the code base to be more
maintainable. There may performance lost with the 1.1.5 to 2.1.1
migration since the fastpath code was removed, but the increased safety
is probably worth it. See
[the release notes for go-msgkack 2.1.0](https://github.com/hashicorp/go-msgpack/releases/tag/v2.1.0)
for more details.

I tested this by running this code, and booting up a cluster with
a node also running the prior version of Nomad (before the upgrade).
Before I made the changes to set the right `time.Time` option, the
previous-version node would throw a bunch of time-decoding errors.
After fixing the option, the node came up smoothly, even after
changing leadership between them.

This relies on
- [ ] hashicorp/serf#705
- [ ] hashicorp/raft-boltdb#38
- [ ] hashicorp/raft#577
- [ ] hashicorp/memberlist#292

and maybe
- [ ] hashicorp/net-rpc-msgpackrpc#12
Copy link
Contributor

@dhiaayachi dhiaayachi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @swenson! I left few comments for your consideration.

client/rpc_client.go Show resolved Hide resolved
client/rpc_client.go Outdated Show resolved Hide resolved
cmd/serf/command/agent/ipc.go Outdated Show resolved Hide resolved
serf/messages_test.go Show resolved Hide resolved
Christopher Swenson added 7 commits March 19, 2024 09:27
This adds the option to specify what version of the `time.Time` encoding
format is desired. The default option is `false`, which preserves
compatibility with the current dependency of
`hashicorp/go-msgpack 0.5.5` in go.mod, but users of this library will
probably want to override the the setting.

While we're here, upgrade the go.mod file.

I tested that this appears to work with Nomad.

This needs to be updated and merged after
hashicorp/memberlist#292
@swenson swenson force-pushed the vault-19781/msgpack-upgrade branch from d7c087e to d5eb56f Compare March 19, 2024 16:28
@swenson swenson changed the title Upgrade to msgpack v2 2.1.1 Upgrade to msgpack v2 2.1.2 Mar 19, 2024
Copy link
Contributor

@dhiaayachi dhiaayachi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀

@swenson
Copy link
Author

swenson commented Mar 20, 2024

Thanks!

@swenson swenson merged commit 5d32001 into master Mar 20, 2024
13 checks passed
@swenson swenson deleted the vault-19781/msgpack-upgrade branch March 20, 2024 15:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants