phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kadir OZDEMIR (Jira)" <>
Subject [jira] [Updated] (PHOENIX-5709) Simplify index update generation code for consistent global indexes
Date Sun, 09 Feb 2020 21:01:00 GMT


Kadir OZDEMIR updated PHOENIX-5709:
    Attachment: PHOENIX-5709.4.x-HBase-1.3.002.patch

> Simplify index update generation code for consistent global indexes
> -------------------------------------------------------------------
>                 Key: PHOENIX-5709
>                 URL:
>             Project: Phoenix
>          Issue Type: Improvement
>    Affects Versions: 5.0.0, 4.14.3
>            Reporter: Kadir OZDEMIR
>            Assignee: Kadir OZDEMIR
>            Priority: Major
>             Fix For: 5.0.0, 4.14.3
>         Attachments: PHOENIX-5709.4.x-HBase-1.3.001.patch, PHOENIX-5709.4.x-HBase-1.3.002.patch,
PHOENIX-5709.master.001.patch, PHOENIX-5709.master.002.patch, PHOENIX-5709.master.003.patch,
PHOENIX-5709.master.004.patch, PHOENIX-5709.master.005.patch, PHOENIX-5709.master.006.patch,
>          Time Spent: 2h 40m
>  Remaining Estimate: 0h
> The implementation of the new global index design by PHOENIX-5156 essentially introduced
two coprocessors, IndexRegionObserver and GlobalIndexChecker. IndexRegionObserver is the counterpart
of the existing Indexer coprocessor that the previous global indexing feature uses. It implements
the indexing write path. GlobalIndexChecker implements the read verification and read repair
that happens on the read path. One of the main objectives of the design behind new global
indexing was to leverage as much existing indexing code as possible. This objective has been
achieved greatly as the entire index table update generation code implemented by various classes
(including PhoenixIndexBuilder, CachedLocalTable, NonTxIndexBuilder, IndexUpdateManager, 
LocalTableState, ScannerBuilder, IndexMemStore and PhoenixIndexCodec) is leveraged as it is
mainly. This objective has served us well to deliver the new indexing feature quickly. The
leveraged code is very complex, over engineered, and inefficient, and is not bug free. It
is very hard to maintain. It is time to replace the complex set of classes with something
drastically simpler and more efficient for the new design.

This message was sent by Atlassian Jira

View raw message