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

Himanshu Gwalani updated HBASE-29864:
-------------------------------------
    Description: 
Currently, StoreFileScanner uses 
@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.PHOENIX) 
while the KeyValueScanner interface and all other implementations use 
@InterfaceAudience.Private. 
This inconsistency should be addressed for API clarity and maintainability.

*Current State*
 - KeyValueScanner (interface): @InterfaceAudience.Private ⚠️
 - StoreFileScanner: 
@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.PHOENIX) ✓
 - All other implementations: @InterfaceAudience.Private ⚠️

*Proposed Change*
Change the KeyValueScanner interface and ALL implementations to:
@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.PHOENIX)

*Rationale*
1. Phoenix requires direct access to scanner implementations (StoreFileScanner 
already has this)
2. Phoenix code references implementations through the KeyValueScanner 
interface type, so the interface must also be LimitedPrivate(PHOENIX) for 
consistency
3. All implementations should have the same audience annotation as the 
interface for maintainability
4. Coprocessors access scanners through RegionScanner (LimitedPrivate for 
COPROC), not directly through KeyValueScanner

  was:
Currently, StoreFileScanner uses 
@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.PHOENIX) 
while the KeyValueScanner interface and all other implementations use 
@InterfaceAudience.Private. 
This inconsistency should be addressed for API clarity and maintainability.

**Current State:**
- KeyValueScanner (interface): @InterfaceAudience.Private ⚠️
- StoreFileScanner: 
@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.PHOENIX) ✓
- All other implementations: @InterfaceAudience.Private ⚠️

**Proposed Change:**
Change the KeyValueScanner interface and ALL implementations to:
@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.PHOENIX)

**Rationale:**
1. Phoenix requires direct access to scanner implementations (StoreFileScanner 
already has this)
2. Phoenix code references implementations through the KeyValueScanner 
interface type, so the interface must also be LimitedPrivate(PHOENIX) for 
consistency
3. All implementations should have the same audience annotation as the 
interface for maintainability
4. Coprocessors access scanners through RegionScanner (LimitedPrivate for 
COPROC), not directly through KeyValueScanner


> Standardize KeyValueScanner interface and all implementations to 
> LimitedPrivate
> -------------------------------------------------------------------------------
>
>                 Key: HBASE-29864
>                 URL: https://issues.apache.org/jira/browse/HBASE-29864
>             Project: HBase
>          Issue Type: New Feature
>          Components: API, regionserver, Scanners
>            Reporter: Himanshu Gwalani
>            Assignee: Himanshu Gwalani
>            Priority: Major
>             Fix For: 2.7.0, 3.0.0-beta-2
>
>
> Currently, StoreFileScanner uses 
> @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.PHOENIX) 
> while the KeyValueScanner interface and all other implementations use 
> @InterfaceAudience.Private. 
> This inconsistency should be addressed for API clarity and maintainability.
> *Current State*
>  - KeyValueScanner (interface): @InterfaceAudience.Private ⚠️
>  - StoreFileScanner: 
> @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.PHOENIX) ✓
>  - All other implementations: @InterfaceAudience.Private ⚠️
> *Proposed Change*
> Change the KeyValueScanner interface and ALL implementations to:
> @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.PHOENIX)
> *Rationale*
> 1. Phoenix requires direct access to scanner implementations 
> (StoreFileScanner already has this)
> 2. Phoenix code references implementations through the KeyValueScanner 
> interface type, so the interface must also be LimitedPrivate(PHOENIX) for 
> consistency
> 3. All implementations should have the same audience annotation as the 
> interface for maintainability
> 4. Coprocessors access scanners through RegionScanner (LimitedPrivate for 
> COPROC), not directly through KeyValueScanner



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

Reply via email to