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

AsyncRequestFutureImpl unnecessarily clears meta cache for full server

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 2.6.0, 2.5.3
    • None

    Description

      In AsyncRequestFutureImpl.receiveGlobalFailure, the meta cache is cleared twice. First the entire cache is cleared for the serverName, then each individual region's cache is further cleared. See here.

      This behavior was introduced in HBASE-19900, which was a Jira more related to return value corruption rather than meta cache. I believe the change was an accident in the refactoring. Take a look at the commit here.

      In the commit, the cleanServerCache call should have been wrapped in tableName == null. Then the updateCachedLocations call should have been wrapped in tableName != null. So we should only go down one path or another based on the existence of a tableName.

      Full server cache clears are extremely expensive in a high concurrency client. This is especially true in AsyncProcess, where a single request might hit many servers. We should reinstate the tableName checks so that we only do one or the other.

      Attachments

        Issue Links

          Activity

            People

              bbeaudreault Bryan Beaudreault
              bbeaudreault Bryan Beaudreault
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: