Commit Graph

77 Commits

Author SHA1 Message Date
stack 95c1dc93fb HBASE-15638 Shade protobuf
Which includes

    HBASE-16742 Add chapter for devs on how we do protobufs going forward

    HBASE-16741 Amend the generate protobufs out-of-band build step
    to include shade, pulling in protobuf source and a hook for patching protobuf

    Removed ByteStringer from hbase-protocol-shaded. Use the protobuf-3.1.0
    trick directly instead. Makes stuff cleaner. All under 'shaded' dir is
    now generated.

    HBASE-16567 Upgrade to protobuf-3.1.x
    Regenerate all protos in this module with protoc3.
    Redo ByteStringer to use new pb3.1.0 unsafebytesutil
    instead of HBaseZeroCopyByteString

    HBASE-16264 Figure how to deal with endpoints and shaded pb Shade our protobufs.
    Do it in a manner that makes it so we can still have in our API references to
    com.google.protobuf (and in REST). The c.g.p in API is for Coprocessor Endpoints (CPEP)

            This patch is Tactic #4 from Shading Doc attached to the referenced issue.
            Figuring an appoach took a while because we have Coprocessor Endpoints
            mixed in with the core of HBase that are tough to untangle (FIX).

            Tactic #4 (the fourth attempt at addressing this issue) is COPY all but
            the CPEP .proto files currently in hbase-protocol to a new module named
            hbase-protocol-shaded. Generate .protos again in the new location and
            then relocate/shade the generated files. Let CPEPs keep on with the
            old references at com.google.protobuf.* and
            org.apache.hadoop.hbase.protobuf.* but change the hbase core so all
            instead refer to the relocated files in their new location at
            org.apache.hadoop.hbase.shaded.com.google.protobuf.*.

            Let the new module also shade protobufs themselves and change hbase
            core to pick up this shaded protobuf rather than directly reference
            com.google.protobuf.

            This approach allows us to explicitly refer to either the shaded or
            non-shaded version of a protobuf class in any particular context (though
            usually context dictates one or the other). Core runs on shaded protobuf.
            CPEPs continue to use whatever is on the classpath with
            com.google.protobuf.* which is pb2.5.0 for the near future at least.

            See above cited doc for follow-ons and downsides. In short, IDEs will complain
            about not being able to find the shaded protobufs since shading happens at package
            time; will fix by checking in all generated classes and relocated protobuf in
            a follow-on. Also, CPEPs currently suffer an extra-copy as marshalled from
            non-shaded to shaded. To fix. Finally, our .protos are duplicated; once
            shaded, and once not. Pain, but how else to reveal our protos to CPEPs or
            C++ client that wants to talk with HBase AND shade protobuf.

            Details:

            Add a new hbase-protocol-shaded module. It is a copy of hbase-protocol
    i       with all relocated offset from o.a.h.h. to o.a.h.h.shaded. The new module
            also includes the relocated pb. It does not include CPEPs. They stay in
            their old location.

            Add another module hbase-endpoint which has in it all the endpoints
            that ship as part of hbase -- at least the ones that are not
            entangled with core such as AccessControl and Auth. Move all protos
            for these CPEPs here as well as their unit tests (mostly moving a
            bunch of stuff out of hbase-server module)

            Much of the change looks like this:

                 -import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
                 -import org.apache.hadoop.hbase.protobuf.generated.ClusterIdProtos;
                 +import org.apache.hadoop.hbase.protobuf.shaded.ProtobufUtil;
                 +import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterIdProtos;

            In HTable and in HBaseAdmin, regularize the way Callables are used and also hide
            protobuf usage as much as possible moving it up into Callable super classes or out
            to utility classes. Still TODO is adding in of retries, etc., but can wait on
            procedure which will redo all this.

            Also in HTable and HBaseAdmin as well as in HRegionServer and Server, be explicit
            when using non-shaded protobuf. Do the full-path so it is clear. This is around
            endpoint coprocessors registration of services and execution of CPEP methods.

            Shrunk ProtobufUtil by moving methods used by one CPEP only back to the CPEP either
            into Client class or as new Util class; e.g. AccessControlUtil.

            There are actually two versions of ProtobufUtil now; a shaded one and a subset
            that is used by CPEPs doing non-shaded work.

            Made it so hbase-common no longer depends on hbase-protocol (with Matteo's help)

            R*Converter classes got moved down under shaded package -- they are for internal
            use only. There are no non-shaded versions of these classes.

            D hbase-client/src/main/java/org/apache/hadoop/hbase/client/AbstractRegionServerCallable
            D RetryingCallableBase
             Not used anymore and we have too many tiers of Callables so removed/cleaned-up.

            A ClientServicecallable
             Had to add this one. RegionServerCallable was made generic so it could be used
             for a few Interfaces (Client and Admin). Then added ClientServiceCallable to
             implement RegionServerCallable with the Client Interface.
2016-10-03 21:37:32 -07:00
stack 9d740f7b8b HBASE-16263 Move all to do w/ protobuf -- *.proto files and generated classes -- under hbase-protocol
Signed-off-by: stack <stack@apache.org>
2016-07-21 10:02:05 -07:00
tedyu 39dc19236e HBASE-15806 revert due to discussion on security 2016-05-24 02:08:11 -07:00
tedyu c03ea895c4 HBASE-15806 An endpoint-based export tool (ChiaPing Tsai) 2016-05-23 10:51:25 -07:00
Enis Soztutar 106fe99a9a HBASE-15670 Add missing Snapshot.proto to the maven profile for compiling protobuf 2016-04-22 11:34:49 -07:00
Enis Soztutar ca816f0780 HBASE-6721 RegionServer Group based Assignment (Francis Liu) 2016-03-14 18:28:50 -07:00
Mikhail Antonov 19045a5ea7 HBASE-14367 Add normalization support to shell 2015-10-04 00:29:39 -07:00
Sean Busbey ba7ea0b524 HBASE-14260 skip javadoc generation for the hbase-protocol generated classes 2015-08-20 21:14:06 -05:00
Sean Busbey 1b0b67fb7c HBASE-14085 Update LICENSE and NOTICE files.
* corrects license/notice for source distribution
* adds inception year to correct copyright in generated NOTICE files for jars
* updates project names in poms to use "Apache HBase" instead of "HBase" so jar NOTICE files will be correct
* uses append-resources to include supplemental info on jars with 3rd party works in source
* adds an hbase specific resource bundle for jars that include 3rd party works for binaries
** uses supplemental-model to fill in license gaps
** uses the above and a shade plugin transformation to build proper files for shaded jars.
** uses the above and the assembly plugin to build the proper files for bin assembly
* adds a NOTICE item for things copied out of Hadoop (TODO legal-discuss)
2015-08-04 17:16:56 -05:00
Gábor Lipták 5826bf2a7c HBASE-13963 Do not leak jdk.tools dependency from hbase-annotations
Signed-off-by: Sean Busbey <busbey@apache.org>
2015-06-26 08:48:02 -05:00
Matteo Bertozzi b5f1f98a25 HBASE-13203 Procedure v2 - master create/delete table 2015-04-10 18:53:42 +01:00
Matteo Bertozzi 04246c6c3d HBASE-13202 Procedure v2 - core framework 2015-04-10 18:53:37 +01:00
Enis Soztutar 882324dbcc HBASE-10671 Add missing InterfaceAudience annotations for classes in hbase-common and hbase-client modules 2014-11-21 11:44:46 -08:00
Matteo Bertozzi bd8df9ccd4 HBASE-11598 Add simple rpc throttling 2014-09-18 22:38:30 +01:00
Nick Dimiduk c01e7e50c1 HBASE-11118 non environment variable solution for "IllegalAccessError: class com.google.protobuf.ZeroCopyLiteralByteString cannot access its superclass com.google.protobuf.LiteralByteString" 2014-07-11 16:52:32 -07:00
Enis Soztutar 92c52a727a Updated version in master to 2.0.0-SNAPSHOT after 'branch-1' is created for 1.x line of releases 2014-06-30 20:26:47 -07:00
Andrew Kyle Purtell 4ccd31a0a1 HBASE-10806 Two protos missing in hbase-protocol/pom.xml (Liu Shaohui)
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1579999 13f79535-47bb-0310-9956-ffa450edef68
2014-03-21 18:00:27 +00:00
Andrew Kyle Purtell f8139d1bf5 Update version in POMs to 0.99.0-SNAPSHOT after branching for release 0.98.0
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1547743 13f79535-47bb-0310-9956-ffa450edef68
2013-12-04 09:31:02 +00:00
Enis Soztutar 770e336ef6 HBASE-10020 Add maven compile-protobuf profile
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1546237 13f79535-47bb-0310-9956-ffa450edef68
2013-11-27 23:57:23 +00:00
nkeywal 63a3155fbb HBASE-9557 strange dependencies for hbase-client
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1524095 13f79535-47bb-0310-9956-ffa450edef68
2013-09-17 15:41:04 +00:00
Michael Stack 7fb94c126a HBASE-9494 Cleanup inconsistencies in protobuf message and rpc names
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1522035 13f79535-47bb-0310-9956-ffa450edef68
2013-09-11 21:07:33 +00:00
Michael Stack b821c20689 HBASE-9299 Generate the protobuf classes with hadoop-maven-plugin
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1518312 13f79535-47bb-0310-9956-ffa450edef68
2013-08-28 18:15:20 +00:00
Michael Stack 00f7bb46c5 HBASE-8187 trunk/0.95 tarball packaging
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1462606 13f79535-47bb-0310-9956-ffa450edef68
2013-03-29 18:49:42 +00:00
nkeywal 62d1ad5fde HBASE-7968 Packaging of Trunk and 0.95 does not create the dependent jars in the lib folder
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1452261 13f79535-47bb-0310-9956-ffa450edef68
2013-03-04 11:30:49 +00:00
Michael Stack 05711f7553 HBASE-7940 Upgrade version to 0.97-SNAPSHOT in pom.xml files
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1450337 13f79535-47bb-0310-9956-ffa450edef68
2013-02-26 18:26:28 +00:00
Michael Stack 5bbc0c22f0 HBASE-7899 Cell block building tools: Cell codec and means of iterating an objects Cells
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1449420 13f79535-47bb-0310-9956-ffa450edef68
2013-02-23 22:38:58 +00:00
eclark cca8e8280c HBASE-7185 Create hbase-protocol module
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1411922 13f79535-47bb-0310-9956-ffa450edef68
2012-11-20 23:26:00 +00:00