Value of `consul-version` in `Meta` field of a node is not updated after upgrading from 1.22.1 to 1.22.6
- Dominant language
- Go
- Stars
- 30.1k
- Forks
- 4.6k
- Avg merge
- 1d 18h
- Merged PRs (30d)
- 39
Description
#### Overview of the Issue
After updating our three consul nodes from 1.22.1 to 1.22.6, the value of `consul-version` in the `Meta` field for the node is not updated. The output of `consul members` is correct:
```
consul members
Node Address Status Type Build Protocol DC Partition Segment
server-01.example.com 10.0.0.1:8301 alive server 1.22.6 2 int default
server-02.example.com 10.0.0.2:8301 alive server 1.22.6 2 int default
server-03.example.com 10.0.0.3:8301 alive server 1.22.6 2 int default
```
But the field `consul-version` under `Meta` has not been updated for two of the three nodes:
```
consul catalog nodes -detailed
Node ID Address DC TaggedAddresses Meta
server-01.example.com ee88520a-d886-5647-32bb-d0a1cb7d77d4 10.0.0.1 int consul-version=1.22.6
server-02.example.com b64a9fe0-3cdb-4caf-0e77-b6cf66116c15 10.0.0.2 int consul-version=1.22.1
server-03.example.com 77bd6be1-a6ea-1af1-ab41-693b1ac2a346 10.0.0.3 int consul-version=1.22.1
```
---
#### Reproduction Steps
Steps to reproduce this issue:
1. Create a cluster with 3 server nodes on version 1.22.1
2. Stop the nodes one by one, upgrade consul debian package to 1.22.6, restart (leader last)
3. Check field `consul-version` in web UI or via `consul catalog nodes -detailed`
### Consul info for both Client and Server
Server info
```
agent:
check_monitors = 0
check_ttls = 0
checks = 0
services = 0
build:
prerelease =
revision = 97566680
version = 1.22.6
version_metadata =
consul:
acl = enabled
bootstrap = false
known_datacenters = 1
leader = false
leader_addr = 10.0.0.3:8300
server = true
raft:
applied_index = 56127444
commit_index = 56127444
fsm_pending = 0
last_contact = 7.965411ms
last_log_index = 56127444
last_log_term = 110391
last_snapshot_index = 56123127
last_snapshot_term = 110391
latest_configuration = [{Suffrage:Voter ID:77bd6be1-a6ea-1af1-ab41-693b1ac2a346 Address:10.0.0.3:8300} {Suffrage:Voter ID:b64a9fe0-3cdb-4caf-0e77-b6cf66116c15 Address:10.0.0.2:8300} {Suffrage:Voter ID:ee88520a-d886-5647-32bb-d0a1cb7d77d4 Address:10.0.0.1:8300}]
latest_configuration_index = 0
num_peers = 2
protocol_version = 3
protocol_version_max = 3
protocol_version_min = 0
snapshot_version_max = 1
snapshot_version_min = 0
state = Follower
term = 110391
runtime:
arch = amd64
cpu_count = 2
goroutines = 434
max_procs = 2
os = linux
version = go1.25.8
serf_lan:
coordinate_resets = 0
encrypted = true
event_queue = 0
event_time = 1511
failed = 0
health_score = 0
intent_queue = 0
left = 0
member_time = 90161
members = 6
query_queue = 0
query_time = 1
serf_wan:
coordinate_resets = 0
encrypted = true
event_queue = 0
event_time = 1
failed = 0
health_score = 0
intent_queue = 0
left = 0
member_time = 20895
members = 3
query_queue = 0
query_time = 1
```
```
datacenter = "int"
node_name = "server-01.example.com"
data_dir = "/opt/consul_data"
ui = true
ui_config{
enabled=true
}
server = true
bootstrap_expect=3
retry_join = ["server-01.example.com", "server-02.example.com", "server-03.example.com"]
bind_addr = "{{ GetPrivateInterfaces | include \"network\" \"10.0.0.0/8\" | attr \"address\" }}"
client_addr = "0.0.0.0"
disable_update_check=true
auto_encrypt {
allow_tls = true
}
```
### Operating system and Environment details
Debian GNU/Linux 12 (bookworm)
Contributor guide
Research direction
Reproduce the three-server upgrade sequence from 1.22.1 to 1.22.6, then compare `consul members` with `consul catalog nodes -detailed` and the node Meta values. Trace the node metadata update path involved during restart and leader changes. Done means every upgraded node reports the current `consul-version` in Meta after the rolling upgrade.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100