[
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)