Tanuj Khurana created PHOENIX-7983:
--------------------------------------
Summary: Key ReplicationLogGroup cache on (port, startcode)
instead of host-inclusive ServerName
Key: PHOENIX-7983
URL: https://issues.apache.org/jira/browse/PHOENIX-7983
Project: Phoenix
Issue Type: Sub-task
Reporter: Tanuj Khurana
Assignee: Tanuj Khurana
The INSTANCES cache in ReplicationLogGroup is keyed on
serverName.getServerName() + "|" + haGroupName, where getServerName() includes
the hostname. The same physical RegionServer can be observed under two
ServerName spellings that differ only in host:
- a declared FQDN (from hbase.unsafe.regionserver.hostname), and
- the pod IP the master hands back at reportForDuty when reverse-DNS is
enabled.
Different coprocessor environments surface different spellings for the same
server — the prewarm path (PhoenixRegionServerEndpoint) versus the write path
(IndexRegionObserver). As a result, one logical replication group was split
into two independent ReplicationLogGroup instances, each with its own Disruptor
and sequence counter, for a single RegionServer.
Fix
Key the cache on (port, startcode), which excludes the host. This is a safe
discriminator:
- Two distinct live RegionServers can never share a port on the same host at
the same time, so mini-cluster ITs running several RegionServers in one JVM
stay distinct (each binds its own ephemeral port).
- The single-RS production/kind case collapses the FQDN/IP spellings into one
entry.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)