Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-24321

Add writable MinVersions and read-only Scan to coproc ScanOptions

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 3.0.0-alpha-1, 2.3.0
    • None
    • None
    • Reviewed

    Description

      Between HBase 1.x and 2.0, the RegionObserver pre*ScannerOpen coprocessors were significantly changed so that the coproc implementer no longer has access to the actual Scanner, just a ScanOptions object that can be changed in limited ways. This is safer and prevents resource leaks and other bugs.

      While ScanOptions provides support for changing TTL, KeepDeletedCells, and MaxVersions, a fourth column family config parameter, MinVersions, appears to have been missed. This prevents coproc implementers from changing MinVersions dynamically. An example of this is PHOENIX-5645, which in the forthcoming Phoenix 4.16 (based on HBase 1.x) will allow users to configure a moving window where all versions are kept, and thus point-in-time queries are safe. This cannot be put in the forthcoming Phoenix 5.1 (based on HBase 2.1 and 2.2) because of the coproc changes.

      Relatedly, preStoreScannerOpen lacks access to the Scan in HBase 2.0 and up. This prevents coprocs from reading the Scan parameters to check if, for example, a Scan has set the max time to a point in the past, and thus needs to override KeepDeletedCells. This can lead to incorrect behavior when doing point-in-time queries or using transactional engines that treat physically committed HBase writes as logically uncommitted parts of a transaction. It's also a correctness problem for PHOENIX-5645. Please note that only read-only access to the Scan from the store scanner coproc hook is in scope for this change.

      Attachments

        Issue Links

          Activity

            People

              gjacoby Geoffrey Jacoby
              gjacoby Geoffrey Jacoby
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: