[ 
https://issues.apache.org/jira/browse/HBASE-18898?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16185234#comment-16185234
 ] 

Appy commented on HBASE-18898:
------------------------------

The only way i can think of to do this is:
Say we want to do this for MasterObserver
- In MasterCPHost, do reflection over MasterObserver, get all its methods and 
make a map.
- As CPs are loaded, check all the methods in their observer
- If and only if
  - The method signature matches one from MasterObserver
  - The method is non-default
  Mark that we have a CP overriding that method
- In the hook wrappers we have in MasterCPHost, (and this is the ugly part) do 
a reflection to check if any CP is using that hook.


> Provide way for the core flow to know whether CP implemented each of the hooks
> ------------------------------------------------------------------------------
>
>                 Key: HBASE-18898
>                 URL: https://issues.apache.org/jira/browse/HBASE-18898
>             Project: HBase
>          Issue Type: Improvement
>          Components: Coprocessors, Performance
>            Reporter: Anoop Sam John
>            Assignee: Anoop Sam John
>            Priority: Critical
>
> This came as a discussion topic at the tale of HBASE-17732
> Can we have a way in the code (before trying to call the hook) to know 
> whether the user has implemented one particular hook or not? eg: On write 
> related hooks only prePut() might be what the user CP implemented. All others 
> are just dummy impl from the interface. Can we have a way for the core code 
> to know this and avoid the call to other dummy hooks fully? Some times we do 
> some processing for just calling CP hooks (Say we have to make a POJO out of 
> PB object for calling) and if the user CP not impl this hook, we can avoid 
> this extra work fully. The pain of this will be more when we have to later 
> deprecate one hook and add new. So the dummy impl in new hook has to call the 
> old one and that might be doing some extra work normally.
> If the CP f/w itself is having a way to tell this, the core code can make 
> use. What am expecting is some thing like in PB way where we can call 
> CPObject.hasPreXXXX(), then CPObject. preXXXX ().. Should not like asking 
> users to impl this extra ugly thing. When the CP instance is loaded in the 
> RS/HM, that object will be having this info also. 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to