Commit Graph

94 Commits

Author SHA1 Message Date
Matteo Bertozzi 553373671b HBASE-16871 Procedure v2 - add waiting procs back to the queue after restart 2016-10-20 07:17:10 -07:00
Matteo Bertozzi d9ee25e82a HBASE-16874 Fix TestMasterFailoverWithProcedures and ensure single proc-executor for kill/restart tests 2016-10-19 13:25:17 -07:00
Matteo Bertozzi 82a2384187 HBASE-16864 Procedure v2 - Fix StateMachineProcedure support for child procs at last step 2016-10-19 06:58:41 -07:00
Matteo Bertozzi c6e9dabe62 HBASE-16846 Procedure v2 - executor cleanup 2016-10-17 10:30:59 -07:00
Matteo Bertozzi 62c84115ec HBASE-16839 Procedure v2 - Move all protobuf handling to ProcedureUtil 2016-10-14 11:32:28 -07:00
Hiroshi Ikeda 9a94dc90b4 HBASE-16642 Use DelayQueue instead of TimeoutBlockingQueue
Signed-off-by: Matteo Bertozzi <matteo.bertozzi@cloudera.com>
2016-10-13 21:41:54 -07:00
Matteo Bertozzi 92ef234486 HBASE-16813 Procedure v2 - Move ProcedureEvent to hbase-procedure module 2016-10-12 16:33:25 -07:00
Matteo Bertozzi 662a1b241f HBASE-16802 Procedure v2 - group procedure cleaning 2016-10-11 16:48:21 -07:00
Matteo Bertozzi 29d701a314 HBASE-16781 Fix flaky TestMasterProcedureWalLease 2016-10-07 18:01:53 -07:00
anoopsamjohn 06758bf630 HBASE-16759 Avoid ByteString.copyFrom usage wherever possible. 2016-10-06 00:27:34 +05:30
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
Matteo Bertozzi 8da0500e7d HBASE-16695 Procedure v2 - Support for parent holding locks 2016-09-26 08:42:48 -07:00
Matteo Bertozzi e01e05cc0e HBASE-16587 Procedure v2 - Cleanup suspended proc execution 2016-09-26 08:08:44 -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
Apekshit Sharma b2eac0da33 HBASE-16554 Rebuild WAL tracker if trailer is corrupted.
Change-Id: Iecc3347de3de9fc57f57ab5f498aad404d02ec52
2016-09-19 12:23:48 -07:00
Matteo Bertozzi 9c58d26d3b HBASE-16507 Procedure v2 - Force DDL operation to always roll forward (addendum) 2016-09-18 19:37:46 -07:00
Apekshit Sharma da3abbcb35 HBASE-16534 Procedure v2 - Perf Tool for Scheduler.
Tool to test performance of locks and queues in procedure scheduler independently from other framework components.
Inserts table and region operations in the scheduler, then polls them and exercises their locks. Number of tables, regions and operations can be set using cli args.

Change-Id: I0fb27e67d3fcab70dd5d0b5197396b117b11eac6
2016-09-17 17:38:51 -07:00
Matteo Bertozzi 216e847366 HBASE-16639 TestProcedureInMemoryChore#testChoreAddAndRemove occasionally fails 2016-09-15 18:25:11 -07:00
tedyu e782d0bbdf HBASE-16640 TimeoutBlockingQueue#remove() should return whether the entry is removed 2016-09-15 17:34:23 -07:00
Matteo Bertozzi f6ccae3502 HBASE-16507 Procedure v2 - Force DDL operation to always roll forward 2016-09-01 21:06:32 -07:00
Apekshit Sharma 5c7fa12ab3 HBASE-16101 addendum. Fixes runtime ClassCastException of Future<Integer> in ProcedureWALPerformanceEvaluation.
Change-Id: Ibe4f3a001b4f50e8598e367cc8648aeae129eee8
2016-09-01 17:23:54 -07:00
tedyu 5376106d05 HBASE-16532 Procedure-V2: Enforce procedure ownership at submission 2016-08-31 12:55:54 -07:00
Matteo Bertozzi ea15522704 HBASE-16533 Procedure v2 - Extract chore from the executor 2016-08-30 18:40:51 -07:00
Apekshit Sharma c66bb48ce8 HBASE-16101 Tool to microbenchmark procedure WAL performance.
Change-Id: I8ec158319395d2ec8e36641a3beab2694f7b6aef
2016-08-30 13:31:58 -07:00
Matteo Bertozzi 97b164ac38 HBASE-16451 Procedure v2 - Test WAL protobuf entry size limit 2016-08-23 21:02:38 -07:00
Matteo Bertozzi 91fee265cf HBASE-16485 Procedure v2 - Add support to addChildProcedure() as last "step" in StateMachineProcedure 2016-08-23 16:42:57 -07:00
Matteo Bertozzi 34b668b0a9 HBASE-16452 Procedure v2 - Make ProcedureWALPrettyPrinter extend Tool 2016-08-19 10:09:25 -07:00
Apekshit Sharma ce88270340 HBASE-16094 Improve cleaning up of proc wals.
Makes the proc log cleaner smarter.
Current method: starting from oldest log, keep deleting WALs until we encounter one which contains state of an active proc. Note that the state may be stale.
New method: Same as current method, but will also delete the wals which contain stale state.
In the starting, iterate from newest completed log (just before currently active log) and mark it for delete if it doesn't contain any state which will be required in case of recovery.
Tested: unittests.

Change-Id: Ie7499652e25af4aac8e9d71a42d60c61a03fd4e4
2016-08-18 13:30:21 -07:00
Matteo Bertozzi e637a61e26 HBASE-16378 Procedure v2 - Make ProcedureException extend HBaseException 2016-08-17 14:31:08 -07:00
Matteo Bertozzi 8cfaa0e721 HBASE-16092 Procedure v2 - complete child procedure support 2016-07-12 10:23:02 -07:00
Apekshit a3546a3752 HBASE-16130 Add comments to ProcedureStoreTracker.
Change-Id: I09d7c2375fd18a96aea48eaa161799496f491b4f
2016-06-29 12:29:48 -07:00
Matteo Bertozzi 1d06850f40 Revert "HBASE-16092 Procedure v2 - complete child procedure support"
This reverts commit 96c4054e3b.
2016-06-24 14:35:29 -07:00
Matteo Bertozzi 96c4054e3b HBASE-16092 Procedure v2 - complete child procedure support 2016-06-24 04:38:50 -07:00
Matteo Bertozzi d66316fd80 HBASE-16068 Procedure v2 - use consts for conf properties in tests 2016-06-22 22:48:07 -07:00
Matteo Bertozzi 568e37d383 HBASE-16056 Procedure v2 - fix master crash for FileNotFound 2016-06-17 13:11:26 -07:00
Matteo Bertozzi 114fe7a81e HBASE-16034 Fix ProcedureTestingUtility#LoadCounter.setMaxProcId() 2016-06-15 12:38:48 -07:00
Matteo Bertozzi d5d9b7d500 HBASE-15107 Procedure v2 - Procedure Queue with Region locks 2016-06-08 12:52:58 -07:00
Matteo Bertozzi 6063afff5d HBASE-15872 Split TestWALProcedureStore 2016-05-20 13:08:28 -07:00
Ramkrishna 97ad33c691 HBASE-15609 Remove PB references from Result, DoubleColumnInterpreter and
any such public facing class for 2.0 (Ram)
2016-05-09 14:56:00 +05:30
Matteo Bertozzi bfca2a4606 HBASE-15579 Procedure v2 - Remove synchronized around nonce in Procedure submit 2016-04-22 10:15:58 -07:00
tedyu d41a7e6310 HBASE-15639 Unguarded access to stackIndexes in Procedure#toStringDetails() 2016-04-13 08:42:30 -07:00
Jerry He ac8cd373eb HBASE-15592 Print Procedure WAL content 2016-04-06 21:49:07 -07:00
Stephen Yuan Jiang e1d5c3d269 HBASE-15521 Procedure V2 - RestoreSnapshot and CloneSnapshot (Stephen Yuan Jiang) 2016-03-31 21:49:13 -07:00
Matteo Bertozzi 9e967e5c1d HBASE-15113 Procedure v2 - Speedup eviction of sys operation results 2016-03-08 19:47:15 -08:00
Matteo Bertozzi 648cc5e823 HBASE-15422 Procedure v2 - Avoid double yield 2016-03-08 19:47:15 -08:00
Jonathan M Hsieh f658f3ef83 HBASE-15356 Remove unused imports (Youngjoon Kim) 2016-03-03 11:42:38 -08:00
Stephen Yuan Jiang 60b81dc848 HBASE-15371: Procedure V2 - Completed support parent-child procedure (Stephen Yuan Jiang) 2016-03-01 19:37:56 -08:00
Samir Ahmic 40c55915e7 HBASE-15144 Procedure v2 - Web UI displaying Store state 2016-02-25 10:46:56 -08:00
Matteo Bertozzi 772f30fe2a HBASE-15100 Master WALProcs are deleted out of order ending up with older wals not removed 2016-01-22 15:57:12 -08:00
Matteo Bertozzi 18a48af242 HBASE-14837 Procedure v2 - Procedure Queue Improvement 2016-01-14 09:24:42 -08:00