Description
Phoenix's SCN feature has some problems, because HBase major compaction can remove Cells that have been deleted or whose TTL or max versions has caused them to be expired.
For example, IndexTool rebuilds and index scrutiny can both give strange, incorrect results if a major compaction occurs in the middle of their run. In the rebuild case, it's because we're rewriting "history" on the index at the same time that compaction is rewriting "history" by purging deleted and expired cells.
Create a new configuration property called "max lookback age", which declares that no data written more recently than the max lookback age will be compacted away. The max lookback age must be smaller than the TTL, and it should not be legal for a user to look back further in the past than the table's TTL.
Max lookback age by default will not be set, and the current behavior will be preserved. But if max lookback age is set, it will be enforced by the BaseScannerRegionObserver for all tables.
In the future, this should be contributed as a general feature to HBase for arbitrary tables. See HBASE-23602.