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

Remove CachingHTableFactory

    XMLWordPrintableJSON

Details

    Description

      CachingHTableFactory is used as a performance optimization when writing to global indexes so that HTable instances are cached and later automatically cleaned up, rather than instantiated each time we write to an index.

      This should be removed for two reasons:

      1. It opens us up to race conditions, because HTables aren't threadsafe, but CachingHTableFactory doesn't guard against two threads both grabbing the same HTable and using it simultaneously. Since all ops going through a region share the same IndexWriter and ParallelWriterIndexCommitter, and hence the same CachingHTableFactory, that means separate operations can both be holding the same HTable.

      2. According to discussion on PHOENIX-3159, and offline discussions I've had with apurtell, HBase 1.x and above make creating throwaway HTable instances cheap so the caching is no longer needed.

      For 4.x-HBase-1.x and master, we should remove CachingHTableFactory, and for 4.x-HBase-0.98, we should either get rid of it (if it's not too much of a perf hit) or at least make it threadsafe.

      Attachments

        1. PHOENIX-4021.patch
          22 kB
          Geoffrey Jacoby

        Issue Links

          Activity

            People

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

              Dates

                Created:
                Updated:
                Resolved: