Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-17652

Use 'default' keyword in Coprocessor Observer interfaces to get rid of 'Base...Observer' implementations.

VotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    Description

      In cases where one might need to use multiple observers, say region, master and regionserver; and the fact that only one class can be extended, it gives rise to following pattern:

          public class BaseMasterAndRegionObserver
            extends BaseRegionObserver
            implements MasterObserver
      
          class AccessController
            extends BaseMasterAndRegionObserver
            implements RegionServerObserver
      

      were BaseMasterAndRegionObserver is full copy of BaseMasterObserver.

      There is an example of simple case too where the current design fails.
      Say only one observer is needed by the coprocessor, but the design doesn't permit extending even that single observer (see RSGroupAdminEndpoint), that leads to full copy of Base...Observer class into coprocessor class leading to 1000s of lines of code and this ugly mix of 5 main functions with 100 useless functions.

      Attachments

        1. HBASE-17652.master.001.patch
          416 kB
          Apekshit Sharma

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            appy Apekshit Sharma
            appy Apekshit Sharma
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment