Commit Graph

101 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
Jonathan M Hsieh a90d433a2c HBASE-12088 Remove unused hadoop-1.0, hadoop-1.1 profiles from non-root poms 2016-09-21 20:45:03 -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
stack 2cc48e039d HBASE-15158 HBASE-15158 Preamble 1 of 2: fix findbugs, add javadoc, change Region#getReadpoint to #getReadPoint, and some util 2016-01-31 20:21:48 -08:00
stack 26dd0d17f8 HBASE-14926 Hung ThriftServer; no timeout on read from client; if client crashes, worker thread gets stuck reading 2015-12-04 13:19:12 -08:00
tedyu 2317ec583d HBASE-14894 Fix misspellings of threshold in log4j.properties files for tests (Youngjoon Kim) 2015-11-28 10:08:38 -08:00
Matteo Bertozzi 55087ce888 HBASE-14863 Add missing test/resources/log4j files in hbase modules 2015-11-22 07:31:16 -08:00
Elliott Clark 3e45755411 HBASE-14752 Add example of using the HBase client in a multi-threaded environment 2015-11-04 12:00:15 -08:00
Jonathan M Hsieh 094d65e6f5 HBASE-14673 Exorcise deprecated Delete#delete* api 2015-10-29 11:15:34 -07:00
Jonathan M Hsieh de9555cec4 HBASE-14675 Exorcise deprecated Put#add(...) and replace with Put#addColumn(...) 2015-10-29 11:15:31 -07:00
stack 996866d3ae HBASE-14266 RegionServers have a lock contention of Configuration.getProps 2015-10-24 14:43:53 -07:00
Matteo Bertozzi 36a196722c HBASE-14669 remove unused import and fix javadoc 2015-10-22 09:25:26 -07:00
Andrew Purtell f06daaf010 HBASE-13825 Use ProtobufUtil#mergeFrom and ProtobufUtil#mergeDelimitedFrom in place of builder methods of same name 2015-08-06 21:48:09 -07: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
Sean Busbey 4ce6f486d0 HBASE-14087 Ensure correct ASF headers for docs/code
* adds missing headers
* corrects some old-form headers to current
* restores proper header for guava copied LimitInputStream
* adds proper header for protobuf copied read/writeRawVarint
2015-07-29 14:25:43 -05:00
Jerry He d2fbaf267e HBASE-14024 ImportTsv is not loading hbase-default.xml (Ashish Singhi) 2015-07-28 11:51:25 -07:00
Elliott Clark 62bce5f903 HBASE-14077 Add package to hbase-protocol protobuf files. 2015-07-15 11:15:58 -07: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
Misty Stanley-Jones b16293b5e2 HBASE-13898 correct additional javadoc failures under java 8 <Gabor Liptak> 2015-06-16 14:18:09 +10:00
Misty Stanley-Jones 5e6373e8ec Revert "Correct Javadoc generation errors"
This reverts commit 0a227b79d6.
2015-06-16 14:18:09 +10:00
Gábor Lipták 0a227b79d6 Correct Javadoc generation errors 2015-06-16 13:27:45 +10:00
Nick Dimiduk 8d1d6c16da HBASE-13247 Change BufferedMutatorExample to use addColumn() since add() is deprecated 2015-06-15 17:48:13 -07:00
Sean Busbey a016b23e85 HBASE-13728 Remove direct use of Hadoop's GenericOptionParser.
* In most cases, just shift to proper use of ToolRunner
* Fix timing issue in TestImportExport
** add some diagnostic logs to Import and TestImportExport
** when testing for WAL use under different durability requests, ignore meta edits.
* In the case of TestImportTsv make a local anonymous class so we can get at internals.
2015-05-29 12:38:52 -05:00
ramkrishna 977f867439 HBASE-10800 - Use CellComparator instead of KVComparator (Ram) 2015-05-05 11:38:10 +05:30
Jonathan Lawlor 62d47e175c HBASE-13421 Reduce the number of object creations introduced by HBASE-11544 in scan RPC hot code paths
Signed-off-by: stack <stack@apache.org>
2015-04-08 14:02:49 -07:00
stack 8cd3001f81 Revert "HBASE-11544 [Ergonomics] hbase.client.scanner.caching is dogged and will try to return batch even if it means OOME"
References the wrong JIRA above so revert; also an addendum is on the
way.

This reverts commit 26ba621e47.
2015-04-08 09:32:09 -07:00
Jonathan Lawlor 26ba621e47 HBASE-11544 [Ergonomics] hbase.client.scanner.caching is dogged and will try to return batch even if it means OOME
Added in some check-style fixes to bring us back under the limit

Signed-off-by: stack <stack@apache.org>
2015-04-08 08:16:54 -07:00
Andrew Purtell f1f4b66183 HBASE-12972 Region, a supportable public/evolving subset of HRegion 2015-03-30 18:01:11 -07:00
Elliott Clark 55a5a3be33 HBASE-13364 Make error prone off by default 2015-03-30 16:03:53 -07:00
Josh Elser 72855c584e HBASE-13236 Add addt'l lifecycle-mapping executions.
Adds a number of lifecycle-mapping entries which
prevent errors from showing up in Eclipse on a fresh
import of HBase. For plugins defined in the top-level
pom, the mapping is added there; otherwise, the mapping
is pushed down to the child pom.

Signed-off-by: Sean Busbey <busbey@apache.org>
2015-03-13 22:35:52 -05:00
Jonathan Lawlor de9791e91e HBASE-11544: [Ergonomics] hbase.client.scanner.caching is dogged and will try to return batch even if it means OOME
Signed-off-by: stack <stack@apache.org>
2015-03-04 17:34:48 -08:00
Misty Stanley-Jones 39425a8558 HBASE-11670 Generate PDF of Reference Guide 2015-03-05 09:31:11 +10:00
tedyu 5dfcee0871 HBASE-13115 Fix the usage of remote user in thrift doAs implementation (Srikanth Srungarapu) 2015-03-03 06:48:56 -08:00
stack eea9873cef HBASE-12985 Javadoc warning and findbugs fixes to get us green again 2015-02-07 17:05:11 -08:00
Nick Dimiduk ab18158e60 HBASE-12728 buffered writes substantially less useful after removal of HTablePool (Solomon Duskis and Nick Dimiduk)
In our pre-1.0 API, HTable is considered a light-weight object that consumed by
a single thread at a time. The HTablePool class provided a means of sharing
multiple HTable instances across a number of threads. As an optimization,
HTable managed a "write buffer", accumulating edits and sending a "batch" all
at once. By default the batch was sent as the last step in invocations of
put(Put) and put(List<Put>). The user could disable the automatic flushing of
the write buffer, retaining edits locally and only sending the whole "batch"
once the write buffer has filled or when the flushCommits() method in invoked
explicitly. Explicit or implicit batch writing was controlled by the
setAutoFlushTo(boolean) method. A value of true (the default) had the write
buffer flushed at the completion of a call to put(Put) or put(List<Put>). A
value of false allowed for explicit buffer management. HTable also exposed the
buffer to consumers via getWriteBuffer().

The combination of HTable with setAutoFlushTo(false) and the HTablePool
provided a convenient mechanism by which multiple "Put-producing" threads could
share a common write buffer. Both HTablePool and HTable are deprecated, and
they are officially replaced in The new 1.0 API by Table and BufferedMutator.
Table, which replaces HTable, no longer exposes explicit write-buffer
management. Instead, explicit buffer management is exposed via BufferedMutator.
BufferedMutator is made safe for concurrent use. Where code would previously
retrieve and return HTables from an HTablePool, now that code creates and
shares a single BufferedMutator instance across all threads.
2015-01-23 08:48:31 -08:00
Misty Stanley-Jones 1a21c1684c HBASE-11533 Asciidoc Proof of Concept 2015-01-13 22:32:29 -08:00
tedyu 9246af8dac HBASE-12796 Clean up HTable and HBaseAdmin deprecated constructor usage (Jurriaan Mous) 2015-01-08 07:49:28 -08:00
Esteban Gutierrez b2eea8cac6 HBASE-12695 JDK 1.8 compilation broken
Signed-off-by: stack <stack@apache.org>
2014-12-29 11:02:04 -08:00
Srikanth Srungarapu ba86c18f20 HBASE-12704 Add demo client which uses doAs functionality on Thrift-over-HTTPS 2014-12-17 16:13:24 -08:00
Jimmy Xiang d2c5e4bf74 Revert "Adding demo client"
This reverts commit 77a7925c32.
2014-12-17 16:11:47 -08:00
Srikanth Srungarapu 77a7925c32 Adding demo client 2014-12-17 16:06:56 -08:00
stack 56a03d736a HBASE-12603 Remove javadoc warnings introduced due to removal of unused imports (Varun Saxena) 2014-12-01 10:13:16 -08:00
stack 555e78005d HBASE-12526 Remove unused imports (Varun Saxena) 2014-11-29 09:20:46 -08:00
Andrew Purtell 1ba615657b HBASE-12382 Restore incremental compilation 2014-11-11 17:45:37 -08:00
Andrew Purtell 70a312e53f HBASE-11912 Catch some bad practices at compile time with error-prone 2014-10-27 09:29:23 -07:00
Andrew Purtell ff5bc351b2 Revert "HBASE-11912 Catch some bad practices at compile time with error-prone"
This reverts commit 7ed0260eff.
2014-10-25 08:33:43 -07:00
Andrew Purtell 7ed0260eff HBASE-11912 Catch some bad practices at compile time with error-prone 2014-10-24 18:15:12 -07:00
Andrew Purtell 3557a32352 HBASE-12106 Move test annotations to test artifact (Enis Soztutar) 2014-10-06 23:16:22 -07:00
stack b5783795cd HBASE-12038 Replace internal uses of signatures with byte[] and String tableNames to use the TableName equivalents (Solomon Duskis) 2014-09-30 16:35:55 -07:00
Enis Soztutar 6189b52fb0 HBASE-12042 Replace internal uses of HTable(Configuration, String) with HTable(Configuration, TableName) (Solomon Duskis) 2014-09-29 18:39:44 -07:00