[ 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)