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)

Reply via email to