Comment 2 for bug 1449190

Revision history for this message
Oliver Bucaojit (oliver-bucaojit) wrote :

I have added additional split configuration properties that can be used to change the behavior of the preSplit operation. This allows customization from the user to choose the preferred behavior. A few changes that may help with the split delay are to check more often for transactions to not be present (every 15 seconds vs 60) and always delaying a split if pending transactions are present (keeps database consistent, instead of having to wait for recovery thread to handle).

In the longer term, I am working on how to handle the split and balance operations without having to delay the operation. Design for that is still in progress and can be found in the link above from Atanu.

Configuration properties for the server-side split delay behavior, set the properties in hbase-site.xml --
https://rndwiki.corp.hpecorp.net/confluence/display/seaquestbigdata/TM+Configuration+Properties

hbase.transaction.split.drain.early
If 'true' then split operation will not wait on active transactions to complete. Will wait on pending transactions.
Default is 'false'

hbase.transaction.split.delay.limit
Sets the configurable region split delay limit
When the delay limit is surpassed, the HBase splits will no longer be blocked from the TM perspective. HBase may still have delays due to GC or other operations.
Default will be 360, which is a 6 hour delay max.

hbase.transaction.split.active.delay
Sets time in milliseconds that the preSplit observer will poll for the active transaction list to be empty.
Default is 15000 (15 seconds)

hbase.transaction.split.pending.delay
Sets time in milliseconds that the preSplit observer will poll for the pending transaction list to be empty.
Default is 500 (0.5 seconds)