Geoffrey Jacoby created PHOENIX-4021:
----------------------------------------

             Summary: Remove CachingHTableFactory
                 Key: PHOENIX-4021
                 URL: https://issues.apache.org/jira/browse/PHOENIX-4021
             Project: Phoenix
          Issue Type: Bug
    Affects Versions: 4.11.0
            Reporter: Geoffrey Jacoby
            Assignee: Geoffrey Jacoby
             Fix For: 4.12.0


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.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to