[ https://issues.apache.org/jira/browse/HBASE-8942?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Enis Soztutar updated HBASE-8942: --------------------------------- Fix Version/s: (was: 0.99.2) 2.0.0 > DFS errors during a read operation (get/scan), may cause write outliers > ----------------------------------------------------------------------- > > Key: HBASE-8942 > URL: https://issues.apache.org/jira/browse/HBASE-8942 > Project: HBase > Issue Type: Bug > Affects Versions: 0.89-fb, 0.95.2 > Reporter: Amitanand Aiyer > Assignee: Amitanand Aiyer > Priority: Minor > Fix For: 0.89-fb, 2.0.0 > > Attachments: 8942.094.txt, 8942.096.txt, HBase-8942.txt > > > This is a similar issue as discussed in HBASE-8228 > 1) A scanner holds the Store.ReadLock() while opening the store files ... > encounters errors. Thus, takes a long time to finish. > 2) A flush is completed, in the mean while. It needs the write lock to > commit(), and update scanners. Hence ends up waiting. > 3+) All Puts (and also Gets) to the CF, which will need a read lock, will > have to wait for 1) and 2) to complete. Thus blocking updates to the system > for the DFS timeout. > Fix: > Open Store files outside the read lock. getScanners() already tries to do > this optimisation. However, Store.getScanner() which calls this functions > through the StoreScanner constructor, redundantly tries to grab the readLock. > Causing the readLock to be held while the storeFiles are being opened, and > seeked. > We should get rid of the readLock() in Store.getScanner(). This is not > required. The constructor for StoreScanner calls getScanners(xxx, xxx, xxx). > This has the required locking already. -- This message was sent by Atlassian JIRA (v6.3.4#6332)