[ 
https://issues.apache.org/jira/browse/HBASE-30165?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sanjeet Malhotra updated HBASE-30165:
-------------------------------------
    Issue Type: Bug  (was: Improvement)

> AsyncRegionLocationCache.add() drops sibling replicas when caching one 
> HRegionLocation at a time — addLocationToCache(HRegionLocation) corrupts 
> multi-replica entries
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-30165
>                 URL: https://issues.apache.org/jira/browse/HBASE-30165
>             Project: HBase
>          Issue Type: Bug
>          Components: Client
>            Reporter: Sanjeet Malhotra
>            Priority: Major
>
> *Summary*
>                                                                               
>                   
>   {{AsyncNonMetaRegionLocator#addLocationToCache(HRegionLocation)}} corrupts 
> the                
>   client-side region location cache for any table with REGION_REPLICATION > 
> 1.                  
>   When the same primary region's replicas are added one at a time (e.g. once 
> per                
>   meta row), each addition silently *replaces* the previously cached 
> multi-replica              
>   entry with a single-replica entry, leaving only the last-added replica 
> visible                
>   to subsequent lookups.                                                      
>                   
>                                                                               
>                   
>   *Symptom*                                         
>                                                                               
>                   
>   After a series of {{addLocationToCache(replica0)}}, 
> {{addLocationToCache(replica1)}},         
>   {{addLocationToCache(replica2)}} on the same primary region, the cache 
> contains
>   only {{[null, null, replica2]}} (or whichever was added last) instead of 
> the                  
>   expected {{[replica0, replica1, replica2]}}.                                
>                   
>                                                                               
>                   
>   This breaks any future cache hit for the lower-replica IDs of that region, 
> and                
>   any cache-warming path that adds replicas individually.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to