[ https://issues.apache.org/jira/browse/HBASE-6778?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jonathan Lawlor updated HBASE-6778: ----------------------------------- Attachment: HBASE_6778_WIP_v1.patch Work In Progress Update: I have been working on implementing the outlined solution and have attached a patch representing my progress thus far. As it stands, the TestChoreService class is very rough and represents tests that I wrote to simply test a few underlying concepts. More extensive and robust test coverage will be implemented. The two main classes that I have been developing are ScheduledChore.java and ChoreService.java: Progress/Details with respect to ScheduledChore.java: - The ScheduledChore.java was designed with the current Chore implementation in mind. I wanted to maintain all of the existing functionality while making it compatible with the new workflow. - A new concept that appears in ScheduledChore that is not present in the existing Chore implementation is the concept of "missing start time". ScheduledChores track the time between successive runs. If the time between successive runs exceeds 1.5 * period then we say that the chore has missed its start time and we notify the ChoreService of this event. This is a useful workflow as it helps the ChoreService decide when it needs to increase the number of threads. Progress/Details with respect to ChoreService.java: - The ChoreService.java class is the class that defines how Chores are scheduled and how the thread count is controlled. - The service allows Chores to be scheduled, cancelled, rescheduled, and triggered immediately. It also provides some useful methods for checking the status of scheduled chores. - When chores are added and removed the ChoreService may make some decisions with respect to the size of the core pool. For example, if a Chore that caused an increase in the core pool size is removed from the service, an attempt is made to reduce the core pool size. The finer grain details can be seen by going through the patch attached above. The next steps are to refine the test coverage and begin converting existing Chores into ScheduledChores. One design detail that I was hoping to get feedback on was where the instance of ChoreService should live in the codebase. Is there an object that would be suitable to hold an instance of ChoreService that could then be used to service objects that want to start a periodic chore? All feedback is greatly appreciated. Thanks, Jonathan > Deprecate Chore; its a thread per task when we should have one thread to do > all tasks > ------------------------------------------------------------------------------------- > > Key: HBASE-6778 > URL: https://issues.apache.org/jira/browse/HBASE-6778 > Project: HBase > Issue Type: Bug > Reporter: stack > Assignee: Jonathan Lawlor > Attachments: HBASE_6778_WIP_v1.patch, thread_dump_HMaster.local.out > > > Should use something like ScheduledThreadPoolExecutor instead (Elliott said > this first I think; J-D said something similar just now). -- This message was sent by Atlassian JIRA (v6.3.4#6332)