[ 
https://issues.apache.org/jira/browse/HBASE-17605?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Appy updated HBASE-17605:
-------------------------
    Description: 
    - Moved locks out of MasterProcedureScheduler#Queue. One Queue object is 
used for each namespace/table, which aren't more than 100. So we don't 
complexity arising from all functionalities being in one place. 
MasterProcedureLocking#Lock is the new locking class.
    - Removed NamespaceQueue because it wasn't being used as Queue 
(add,peek,poll,etc functions threw UnsupportedOperationException). It's was 
only used for locks on namespaces. Now that locks have been moved out of Queue 
class, it's not needed anymore.
    - Remoed RegionEvent which was there only for locking on regions. 
Tables/namespaces used locking from Queue class and regions couldn't (there are 
no separate proc queue at region level), hence the redundance. Now that locking 
is separate, we can use the same for regions too.
    - Removed QueueInterface class. No declarations, except one implementaion, 
which makes the point of having an interface moot.
    - Removed QueueImpl, which was the only concrete implementation of abstract 
Queue class. Moved functions to Queue class itself to avoid unnecessary level 
in inheritance hierarchy.
    - Removed ProcedureEventQueue class which was just a wrapper around 
ArrayDeque class.
    - Encapsulated table priority related stuff in a single class.
    - Removed some unused functions.

  was:
    - Moved locks out of MasterProcedureScheduler#Queue. One Queue object is 
used for each namespace/table, which aren't more than 100. So we don't 
complexity arising from all functionalities being in one place. 
MasterProcedureLocking#Lock is the new locking class.
    - Removed NamespaceQueue because it wasn't being used as Queue 
(add,peek,poll,etc functions threw UnsupportedOperationException). It's was 
only used for locks on namespaces. Now that locks have been moved out of Queue 
class, it's not needed anymore.
    - Remoed RegionEvent which was there only for locking on regions. 
Tables/namespaces used locking from Queue class and regions couldn't (there are 
no separate proc queue at region level), hence the redundance. Now that locking 
is separate, we can use the same for regions too.
    - Removed QueueInterface class. No declarations, except one implementaion, 
which makes the point of having an interface moot.
    - Removed QueueImpl, which was the only concrete implementation of abstract 
Queue class. Moved functions to Queue class itself to avoid unnecessary level 
in inheritance hierarchy.
    - Encapsulated table priority related stuff in a single class.
    - Removed some unused functions.


> Refactor procedure framework code
> ---------------------------------
>
>                 Key: HBASE-17605
>                 URL: https://issues.apache.org/jira/browse/HBASE-17605
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Appy
>            Assignee: Appy
>         Attachments: HBASE-17605.master.001.patch
>
>
>     - Moved locks out of MasterProcedureScheduler#Queue. One Queue object is 
> used for each namespace/table, which aren't more than 100. So we don't 
> complexity arising from all functionalities being in one place. 
> MasterProcedureLocking#Lock is the new locking class.
>     - Removed NamespaceQueue because it wasn't being used as Queue 
> (add,peek,poll,etc functions threw UnsupportedOperationException). It's was 
> only used for locks on namespaces. Now that locks have been moved out of 
> Queue class, it's not needed anymore.
>     - Remoed RegionEvent which was there only for locking on regions. 
> Tables/namespaces used locking from Queue class and regions couldn't (there 
> are no separate proc queue at region level), hence the redundance. Now that 
> locking is separate, we can use the same for regions too.
>     - Removed QueueInterface class. No declarations, except one 
> implementaion, which makes the point of having an interface moot.
>     - Removed QueueImpl, which was the only concrete implementation of 
> abstract Queue class. Moved functions to Queue class itself to avoid 
> unnecessary level in inheritance hierarchy.
>     - Removed ProcedureEventQueue class which was just a wrapper around 
> ArrayDeque class.
>     - Encapsulated table priority related stuff in a single class.
>     - Removed some unused functions.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to