Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.4.13, 2.2.5
-
None
-
Reviewed
-
Description
The current value of RingBufferEventHandler's handler is the value of hbase.regionserver.handler.count, which works good in default wal provider — one WAL per regionserver.
When trying to use WAL group provider, either by group or wal per region, the default value is bad. If rs has 100 regions and wal per region strategy is used, then rs will allocate 100 * SyncFuture[$hbase.regionserver.handler.count] array
int maxHandlersCount = conf.getInt(HConstants.REGION_SERVER_HANDLER_COUNT, 200); this.ringBufferEventHandler = new RingBufferEventHandler( conf.getInt("hbase.regionserver.hlog.syncer.count", 5), maxHandlersCount); ... ---- RingBufferEventHandler(final int syncRunnerCount, final int maxHandlersCount) { this.syncFutures = new SyncFuture[maxHandlersCount]; ... }