From 978945022df9493f09e0ed63e593bb03d4ff2d1f Mon Sep 17 00:00:00 2001 From: miagilepner Date: Fri, 8 Dec 2023 17:34:24 +0100 Subject: [PATCH] VAULT-22569: Handle nil node info when retrieving HA peers (#24441) * add nil check * changelog * clarify changelog --- changelog/24441.txt | 3 +++ vault/core.go | 12 ++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 changelog/24441.txt diff --git a/changelog/24441.txt b/changelog/24441.txt new file mode 100644 index 0000000000..5a4d491c64 --- /dev/null +++ b/changelog/24441.txt @@ -0,0 +1,3 @@ +```release-note:bug +core/ha: fix panic that can occur when an HA cluster contains an active node with version >=1.12.0 and another node with version <1.10 +``` diff --git a/vault/core.go b/vault/core.go index ebd8174968..e30714fb57 100644 --- a/vault/core.go +++ b/vault/core.go @@ -3961,9 +3961,17 @@ func (c *Core) GetHAPeerNodesCached() []PeerNode { var nodes []PeerNode for itemClusterAddr, item := range c.clusterPeerClusterAddrsCache.Items() { info := item.Object.(nodeHAConnectionInfo) + var hostname, apiAddr string + + // nodeInfo can be nil if there's a node with a much older version in + // the cluster + if info.nodeInfo != nil { + hostname = info.nodeInfo.Hostname + apiAddr = info.nodeInfo.ApiAddr + } nodes = append(nodes, PeerNode{ - Hostname: info.nodeInfo.Hostname, - APIAddress: info.nodeInfo.ApiAddr, + Hostname: hostname, + APIAddress: apiAddr, ClusterAddress: itemClusterAddr, LastEcho: info.lastHeartbeat, Version: info.version,