Class SplitLogManager

java.lang.Object
org.apache.hadoop.hbase.master.SplitLogManager

@Deprecated @Private public class SplitLogManager extends Object
Deprecated.
since 2.4.0 and in 3.0.0, to be removed in 4.0.0, replaced by procedure-based distributed WAL splitter, see SplitWALManager.
Distributes the task of log splitting to the available region servers. Coordination happens via coordination engine. For every log file that has to be split a task is created. SplitLogWorkers race to grab a task.

SplitLogManager monitors the tasks that it creates using the timeoutMonitor thread. If a task's progress is slow then SplitLogManagerCoordination.checkTasks() will take away the task from the owner SplitLogWorker and the task will be up for grabs again. When the task is done then it is deleted by SplitLogManager.

Clients call splitLogDistributed(Path) to split a region server's log files. The caller thread waits in this method until all the log files have been split.

All the coordination calls made by this class are asynchronous. This is mainly to help reduce response time seen by the callers.

There is race in this design between the SplitLogManager and the SplitLogWorker. SplitLogManager might re-queue a task that has in reality already been completed by a SplitLogWorker. We rely on the idempotency of the log splitting task for correctness.

It is also assumed that every log splitting task is unique and once completed (either with success or with error) it will be not be submitted again. If a task is resubmitted then there is a risk that old "delete task" can delete the re-submission.

See Also: