Kadir OZDEMIR created PHOENIX-5133:
--------------------------------------
Summary: Global indexes on transactional tables are built with
wrong timestamps
Key: PHOENIX-5133
URL: https://issues.apache.org/jira/browse/PHOENIX-5133
Project: Phoenix
Issue Type: Bug
Affects Versions: 5.0.0
Reporter: Kadir OZDEMIR
Assignee: Kadir OZDEMIR
When doing a full rebuild (or initial async build) of a global index on a
transactional table using IndexTool, or the index create DDL, we generate the
index mutations by using an UPSERT SELECT query from the base table to the
index.
The timestamps of the mutations use the default HBase behavior, which is to
take the current wall clock. However, the timestamp of an index KeyValue should
use the timestamp of the initial KeyValue in the base table.
Having base table and index timestamps out of sync can cause all sorts of weird
side effects, such as if the base table has data with an expired TTL that isn't
expired in the index yet. Also inserting old mutations with new timestamps may
overwrite the data that has been newly overwritten by the regular data path
during index build, which would lead to data loss and inconsistency issues.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)