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

API Rework: Have Delete and Put implement same Interface or subclass same 'Mutation' ancestor (Get too? And Result?)

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • None
    • None
    • None

    Description

      Our API has a problem in that we can't pass a mix of Put and Delete edits. We see it in various places.

      HBASE-1626 tried to add being able to emit Puts and Deletes from your Map or Reduce but as HBASE-1969 points out, it won't work as done.

      Ryan talks about need of being able to pass a set of Deletes and Puts against a single row so we can do a bunch of edits all under the umbrella of a single row lock.

      Related, HBASE-1845 wants to do bulk put/gets/deletes all in same way and HBASE-2609 is related in that it asks that the Delete and Put API work the same.

      For at least the first issue, in hbase-1969, "HBASE-1626 does not work as advertised due to lack of "instanceof" check in MR framework", Lars G suggests we have a Mutation class that can carry Deletes and Puts on a row. He notes that the sample client code in the BT table seems to do this. This Mutation carrying-class could be used to solve the Ryan issue above.

      But maybe we need something more radical, an API overhaul (again) to do something like was proposed long-time ago in hbase-880. This was an ugly, unfinished proposal but many of the classes shared an ancestor -> https://issues.apache.org/jira/secure/attachment/12395138/880proposal5-v2.png.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              stack Michael Stack
              Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: