HBase
  1. HBase
  2. HBASE-9853

Edit the CP API: Make 'plugin's Interfaces for admending behaviors

    Details

    • Type: Umbrella Umbrella
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Coprocessors
    • Labels:
      None

      Description

      Current CP API has deviated from original intent allowing Observers observe (and on occasion amend data) and Endpoints for adding custom query handling over hbase data. CP API has evolved to include a raft of APIs that allow modifying base behaviors – how we do compactions, flushes, etc – that are not 'coprocessor'-type functions.

      This issue came of devs discussing figuring how to stabilize the CP API. The thought is to return its scope to that of the original intent and to add new plugins Interfaces whereever we want to allow changing base behaviors (WAL writing, etc.).

      This is an umbrellas issue. The redo would happen as subtasks.

        Activity

        Hide
        Enis Soztutar added a comment -

        Another thing we should consider is to do the new API methods, which will receive a Context object, rather than a bunch of individual args. Adding new args to methods will be much easier this way.

        Show
        Enis Soztutar added a comment - Another thing we should consider is to do the new API methods, which will receive a Context object, rather than a bunch of individual args. Adding new args to methods will be much easier this way.
        Hide
        Andrew Purtell added a comment - - edited

        We can encourage changes to compaction and flush behavior via plugins even while retaining the Observer views over those activities for a while. If there are users of these interfaces, this is evidence of the utility of observing (and occasionally changing) what flush and compaction scanners are iterating over.

        Some Observer APIs in this area are deprecated and will be removed, that will pare back the number of such APIs in the CP interface. We should not add new ones.

        The WALObserver stands apart from the master and region observer APIs in my opinion and so is a good candidate for deprecation and removal in favor of a plugin approach.

        Show
        Andrew Purtell added a comment - - edited We can encourage changes to compaction and flush behavior via plugins even while retaining the Observer views over those activities for a while. If there are users of these interfaces, this is evidence of the utility of observing (and occasionally changing) what flush and compaction scanners are iterating over. Some Observer APIs in this area are deprecated and will be removed, that will pare back the number of such APIs in the CP interface. We should not add new ones. The WALObserver stands apart from the master and region observer APIs in my opinion and so is a good candidate for deprecation and removal in favor of a plugin approach.
        Hide
        Vladimir Rodionov added a comment -

        How are you going to maintain backward compatibility? Many have already implemented plug-gable compaction through CP API, for example. The lack of backward compatibility will affect the adoption rate of new releases, imo.

        Show
        Vladimir Rodionov added a comment - How are you going to maintain backward compatibility? Many have already implemented plug-gable compaction through CP API, for example. The lack of backward compatibility will affect the adoption rate of new releases, imo.
        Hide
        Elliott Clark added a comment -

        It was also discussed that we might want to make these plugins use the class loader that can load from an HDFS url.

        Show
        Elliott Clark added a comment - It was also discussed that we might want to make these plugins use the class loader that can load from an HDFS url.
        Hide
        stack added a comment -

        Suggestion:

        triggers /get/put /endpoints == coproc, (augmenting stuff) (mixins)
        internals flush/compact/wal/storage engines == plugin (replacing stuff / losing delegation model)

        Show
        stack added a comment - Suggestion: triggers /get/put /endpoints == coproc, (augmenting stuff) (mixins) internals flush/compact/wal/storage engines == plugin (replacing stuff / losing delegation model)

          People

          • Assignee:
            Unassigned
            Reporter:
            stack
          • Votes:
            0 Vote for this issue
            Watchers:
            9 Start watching this issue

            Dates

            • Created:
              Updated:

              Development