Uploaded image for project: 'Phoenix'
  1. Phoenix
  2. PHOENIX-1146

Detect stale client region cache on server and retry scans in split regions

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.1.0, 4.1.0
    • 3.1.0, 4.1.0
    • None
    • None

    Description

      HBase cannot recover correctly from an aggregate scan run on the coprocessor side (see HBASE-116670). This can lead to incorrect query results the first time a query is run after a split occurs (due to the region boundary cache being stale). Phoenix can work around this by:

      • detecting on server before the scan starts that the region cache used by the client is out-of-date. This can be done up-front because the start/stop row of the scan should never span across a region boundary. In this case, a DoNotRetryIOException is thrown with some embedded information to cause a StaleRegionBoundaryCacheException to be thrown on the client.
      • catching this exception on the client (in ParallelIterators), refreshing the region boundary cache, and re-running the necessary scans based on the new region boundaries.
      • detecting if this happens more than N times to prevent any kind of excessive looping due to splits occurring over and over again.

      Phoenix has additional requirements above and beyond standard HBase clients, so even if HBase could recover from this situation, Phoenix would likely need this workaround to ensure that a scan does not span across region boundaries. This is required when the client is doing a merge sort on the results of the parallel scans, mainly in ORDER BY (including topN) and local indexing, and potentially GROUP BY if we move toward sorting the distinct groups on the server side.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            jamestaylor James R. Taylor
            jamestaylor James R. Taylor
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment