HBase
  1. HBase
  2. HBASE-7305

ZK based Read/Write locks for table operations

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.95.0
    • Component/s: Client, master, Zookeeper
    • Labels:
      None
    • Hadoop Flags:
      Reviewed
    • Release Note:
      Added a read/write lock implementation based on zookeeper recipe, and a table lock per HBase table. Master operations acquire a write lock to the table. Configuration, "hbase.table.lock.enable" can be used to disable the implementation.
    • Tags:
      0.96notable

      Description

      This has started as forward porting of HBASE-5494 and HBASE-5991 from the 89-fb branch to trunk, but diverged enough to have it's own issue.

      The idea is to implement a zk based read/write lock per table. Master initiated operations should get the write lock, and region operations (region split, moving, balance?, etc) acquire a shared read lock.

      1. HBaseTableLocks_v2.pdf
        196 kB
        Enis Soztutar
      2. 130228-zkrwlocks.pdf
        337 kB
        Jonathan Hsieh
      3. HBaseTableLocks.pdf
        184 kB
        Enis Soztutar
      4. hbase-7305_v15.patch
        178 kB
        Enis Soztutar
      5. hbase-7305_v14.patch
        176 kB
        Enis Soztutar
      6. hbase-7305_v13.patch
        179 kB
        Enis Soztutar
      7. 7305-v11.txt
        172 kB
        Ted Yu
      8. hbase-7305_v10.patch
        172 kB
        Enis Soztutar
      9. hbase-7305_v9.patch
        172 kB
        Enis Soztutar
      10. hbase-7305_v4.patch
        156 kB
        Enis Soztutar
      11. hbase-7305_v2.patch
        154 kB
        Enis Soztutar
      12. hbase-7305_v1-based-on-curator.patch
        68 kB
        Enis Soztutar
      13. hbase-7305_v0.patch
        108 kB
        Enis Soztutar

        Issue Links

          Activity

          Hide
          Enis Soztutar added a comment -

          Attaching a v0 patch which just ports HBASE-5494 and HBASE-5991. There are still some things to do:

          • PB the zookeeper content
          • Master should invalidate the table locks on recover
          • Move to Netflix curator lib?

          Some points:

          • Should we expose lock/unlock table to the clients. I think we should not do that unless we have a valid reason.
          • Should the lock checking even timeout? If the prev operation cannot continue, then it means that it has not finished / or cannot finish. Should we wait indefinitely?
          • The lock is acquired in the async handlers not part of the rpc, and there is no generic way for the client to track the status and get the result of master operations.
          • This patch just does write lock from master to disable/enable/delete/create/addColumn/deleteColumn. I think we can do the shared lock in a follow up issue.
          Show
          Enis Soztutar added a comment - Attaching a v0 patch which just ports HBASE-5494 and HBASE-5991 . There are still some things to do: PB the zookeeper content Master should invalidate the table locks on recover Move to Netflix curator lib? Some points: Should we expose lock/unlock table to the clients. I think we should not do that unless we have a valid reason. Should the lock checking even timeout? If the prev operation cannot continue, then it means that it has not finished / or cannot finish. Should we wait indefinitely? The lock is acquired in the async handlers not part of the rpc, and there is no generic way for the client to track the status and get the result of master operations. This patch just does write lock from master to disable/enable/delete/create/addColumn/deleteColumn. I think we can do the shared lock in a follow up issue.
          Hide
          stack added a comment -

          Should we expose lock/unlock table to the clients. I think we should not do that unless we have a valid reason.

          Agreed (Only reason to do otherwise is if we have a hanging lock and we want to be able to give an admin a means of cleaning up hung over locks – but we ain't going to have stuck locks – smile – so no need)

          Should the lock checking even timeout? If the prev operation cannot continue, then it means that it has not finished / or cannot finish. Should we wait indefinitely?

          I don't think so. If you fail to get lock, then exception..... and the procedure cannot start. That makes sense. That we have procedures that can get stuck should not be the determinant on whether waiting on a lock has a timeout I'd say.

          The lock is acquired in the async handlers not part of the rpc, and there is no generic way for the client to track the status and get the result of master operations.

          Can you say more. This is interesting.

          This patch just does write lock from master to disable/enable/delete/create/addColumn/deleteColumn. I think we can do the shared lock in a follow up issue.

          Agreed.

          Show
          stack added a comment - Should we expose lock/unlock table to the clients. I think we should not do that unless we have a valid reason. Agreed (Only reason to do otherwise is if we have a hanging lock and we want to be able to give an admin a means of cleaning up hung over locks – but we ain't going to have stuck locks – smile – so no need) Should the lock checking even timeout? If the prev operation cannot continue, then it means that it has not finished / or cannot finish. Should we wait indefinitely? I don't think so. If you fail to get lock, then exception..... and the procedure cannot start. That makes sense. That we have procedures that can get stuck should not be the determinant on whether waiting on a lock has a timeout I'd say. The lock is acquired in the async handlers not part of the rpc, and there is no generic way for the client to track the status and get the result of master operations. Can you say more. This is interesting. This patch just does write lock from master to disable/enable/delete/create/addColumn/deleteColumn. I think we can do the shared lock in a follow up issue. Agreed.
          Hide
          Enis Soztutar added a comment -

          Can you say more. This is interesting.

          Most of the client -> master operations are async. On the RPC code path, the Handler objects are created, and some basic checks are performed in the c.tor. Then the rpc returns without waiting for the operation to finish. But we don't expose any generic mechanism to the client so that it can check the status or the request (like whether it finished/succeeded/exception). The client can only check the side effects of the request (if enable table, whether the table is enabled yet, HBaseAdmin.createTable(), etc).
          If we do HBASE-5487, or keep request id's around in the handlers, we can fix that by exposing some submit task / query status / get exception API from the master to the client. I think we need to start working on that after this.
          In this patch though, we do not acquire the table lock in the rpc path, but only on EventHandler.process(). The client rpc never waits for the table lock. But now thinking about it, I think I will change it so that the table lock is acquired in the RPC handler, and released from the table event handler.

          Show
          Enis Soztutar added a comment - Can you say more. This is interesting. Most of the client -> master operations are async. On the RPC code path, the Handler objects are created, and some basic checks are performed in the c.tor. Then the rpc returns without waiting for the operation to finish. But we don't expose any generic mechanism to the client so that it can check the status or the request (like whether it finished/succeeded/exception). The client can only check the side effects of the request (if enable table, whether the table is enabled yet, HBaseAdmin.createTable(), etc). If we do HBASE-5487 , or keep request id's around in the handlers, we can fix that by exposing some submit task / query status / get exception API from the master to the client. I think we need to start working on that after this. In this patch though, we do not acquire the table lock in the rpc path, but only on EventHandler.process(). The client rpc never waits for the table lock. But now thinking about it, I think I will change it so that the table lock is acquired in the RPC handler, and released from the table event handler.
          Hide
          Sergey Shelukhin added a comment -

          After cursory look at the patch, I have two questions...
          1) I think I saw an article about standard zk primitives library, and iirc even discussed it with Enis. Is it the curator library meant above? If so we should probably switch to it. Especially if it's easy to modify
          2) More broadly, I wonder about the scalability impact of this. At the minimum, locks need to be write-preference to prevent region servers on large clusters from starving the clients and master forever (separate problem is what to do with stray region servers stuck with lock (ZK will take care of that?), but many servers can starve master/clients by sheer force of numbers).

          Show
          Sergey Shelukhin added a comment - After cursory look at the patch, I have two questions... 1) I think I saw an article about standard zk primitives library, and iirc even discussed it with Enis. Is it the curator library meant above? If so we should probably switch to it. Especially if it's easy to modify 2) More broadly, I wonder about the scalability impact of this. At the minimum, locks need to be write-preference to prevent region servers on large clusters from starving the clients and master forever (separate problem is what to do with stray region servers stuck with lock (ZK will take care of that?), but many servers can starve master/clients by sheer force of numbers).
          Hide
          Enis Soztutar added a comment -

          I did a rebase for this using the curator's recipes (HBASE-7411), however, it seems that that discussion might go on for a while, and we might not be using curator at all in the end.

          I will refactor some of the original patch from v0 (which is in-turn based on the FB patch). We can commit this one. I do not want this issue to be blocked by the outcome of HBASE-7411.

          Show
          Enis Soztutar added a comment - I did a rebase for this using the curator's recipes ( HBASE-7411 ), however, it seems that that discussion might go on for a while, and we might not be using curator at all in the end. I will refactor some of the original patch from v0 (which is in-turn based on the FB patch). We can commit this one. I do not want this issue to be blocked by the outcome of HBASE-7411 .
          Hide
          Enis Soztutar added a comment -

          Attaching curator-based patch, not for inclusion.

          Show
          Enis Soztutar added a comment - Attaching curator-based patch, not for inclusion.
          Hide
          Enis Soztutar added a comment -

          Attaching v2 patch as a candidate for inclusion.

          RB and an overview of the patch is here:
          https://reviews.apache.org/r/8969/

          Show
          Enis Soztutar added a comment - Attaching v2 patch as a candidate for inclusion. RB and an overview of the patch is here: https://reviews.apache.org/r/8969/
          Hide
          Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12565070/hbase-7305_v2.patch
          against trunk revision .

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 13 new or modified tests.

          +1 hadoop2.0. The patch compiles against the hadoop 2.0 profile.

          -1 javadoc. The javadoc tool appears to have generated 5 warning messages.

          +1 javac. The applied patch does not increase the total number of javac compiler warnings.

          -1 findbugs. The patch appears to introduce 3 new Findbugs (version 1.3.9) warnings.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          -1 lineLengths. The patch introduces lines longer than 100

          -1 core tests. The patch failed these unit tests:
          org.apache.hadoop.hbase.client.TestAdmin
          org.apache.hadoop.hbase.TestLocalHBaseCluster

          Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//testReport/
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop2-compat.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html
          Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//console

          This message is automatically generated.

          Show
          Hadoop QA added a comment - -1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12565070/hbase-7305_v2.patch against trunk revision . +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 13 new or modified tests. +1 hadoop2.0 . The patch compiles against the hadoop 2.0 profile. -1 javadoc . The javadoc tool appears to have generated 5 warning messages. +1 javac . The applied patch does not increase the total number of javac compiler warnings. -1 findbugs . The patch appears to introduce 3 new Findbugs (version 1.3.9) warnings. +1 release audit . The applied patch does not increase the total number of release audit warnings. -1 lineLengths . The patch introduces lines longer than 100 -1 core tests . The patch failed these unit tests: org.apache.hadoop.hbase.client.TestAdmin org.apache.hadoop.hbase.TestLocalHBaseCluster Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//testReport/ Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop2-compat.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4042//console This message is automatically generated.
          Hide
          Ted Yu added a comment -

          Failed tests: testDeleteEditUnknownColumnFamilyAndOrTable(org.apache.hadoop.hbase.client.TestAdmin)

          the above test may need a closer look.

          Show
          Ted Yu added a comment - Failed tests: testDeleteEditUnknownColumnFamilyAndOrTable(org.apache.hadoop.hbase.client.TestAdmin) the above test may need a closer look.
          Hide
          Enis Soztutar added a comment -

          Latest patch from RB. See what qa thinks.

          Show
          Enis Soztutar added a comment - Latest patch from RB. See what qa thinks.
          Hide
          Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12565241/hbase-7305_v4.patch
          against trunk revision .

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 13 new or modified tests.

          +1 hadoop2.0. The patch compiles against the hadoop 2.0 profile.

          -1 javadoc. The javadoc tool appears to have generated 1 warning messages.

          +1 javac. The applied patch does not increase the total number of javac compiler warnings.

          +1 findbugs. The patch does not introduce any new Findbugs (version 1.3.9) warnings.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          -1 lineLengths. The patch introduces lines longer than 100

          -1 core tests. The patch failed these unit tests:
          org.apache.hadoop.hbase.client.TestAdmin

          Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//testReport/
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop2-compat.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html
          Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//console

          This message is automatically generated.

          Show
          Hadoop QA added a comment - -1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12565241/hbase-7305_v4.patch against trunk revision . +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 13 new or modified tests. +1 hadoop2.0 . The patch compiles against the hadoop 2.0 profile. -1 javadoc . The javadoc tool appears to have generated 1 warning messages. +1 javac . The applied patch does not increase the total number of javac compiler warnings. +1 findbugs . The patch does not introduce any new Findbugs (version 1.3.9) warnings. +1 release audit . The applied patch does not increase the total number of release audit warnings. -1 lineLengths . The patch introduces lines longer than 100 -1 core tests . The patch failed these unit tests: org.apache.hadoop.hbase.client.TestAdmin Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//testReport/ Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop2-compat.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4066//console This message is automatically generated.
          Hide
          Ted Yu added a comment -

          The latest patch needs some rebasing:

          TYus-MacBook-Pro:trunk tyu$ frej
          rw-rr- 1 tyu staff 4581 Jan 25 09:58 ./hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java.rej
          rw-rr- 1 tyu staff 658 Jan 25 09:58 ./hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java.rej
          rw-rr- 1 tyu staff 2819 Jan 25 09:58 ./hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java.rej

          Please attach rebased patch here so that hadoop QA can run test suite.

          Show
          Ted Yu added a comment - The latest patch needs some rebasing: TYus-MacBook-Pro:trunk tyu$ frej rw-r r - 1 tyu staff 4581 Jan 25 09:58 ./hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java.rej rw-r r - 1 tyu staff 658 Jan 25 09:58 ./hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java.rej rw-r r - 1 tyu staff 2819 Jan 25 09:58 ./hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java.rej Please attach rebased patch here so that hadoop QA can run test suite.
          Hide
          Enis Soztutar added a comment -

          Latest patch from RB.

          Show
          Enis Soztutar added a comment - Latest patch from RB.
          Hide
          Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12566608/hbase-7305_v9.patch
          against trunk revision .

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 13 new or modified tests.

          +1 hadoop2.0. The patch compiles against the hadoop 2.0 profile.

          +1 javadoc. The javadoc tool did not generate any warning messages.

          +1 javac. The applied patch does not increase the total number of javac compiler warnings.

          -1 findbugs. The patch appears to introduce 1 new Findbugs (version 1.3.9) warnings.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          -1 lineLengths. The patch introduces lines longer than 100

          -1 core tests. The patch failed these unit tests:
          org.apache.hadoop.hbase.regionserver.TestPriorityRpc
          org.apache.hadoop.hbase.client.TestFromClientSide

          Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//testReport/
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html
          Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//console

          This message is automatically generated.

          Show
          Hadoop QA added a comment - -1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12566608/hbase-7305_v9.patch against trunk revision . +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 13 new or modified tests. +1 hadoop2.0 . The patch compiles against the hadoop 2.0 profile. +1 javadoc . The javadoc tool did not generate any warning messages. +1 javac . The applied patch does not increase the total number of javac compiler warnings. -1 findbugs . The patch appears to introduce 1 new Findbugs (version 1.3.9) warnings. +1 release audit . The applied patch does not increase the total number of release audit warnings. -1 lineLengths . The patch introduces lines longer than 100 -1 core tests . The patch failed these unit tests: org.apache.hadoop.hbase.regionserver.TestPriorityRpc org.apache.hadoop.hbase.client.TestFromClientSide Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//testReport/ Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4195//console This message is automatically generated.
          Hide
          Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12566614/7305_v10.patch
          against trunk revision .

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 13 new or modified tests.

          +1 hadoop2.0. The patch compiles against the hadoop 2.0 profile.

          +1 javadoc. The javadoc tool did not generate any warning messages.

          +1 javac. The applied patch does not increase the total number of javac compiler warnings.

          -1 findbugs. The patch appears to introduce 1 new Findbugs (version 1.3.9) warnings.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          -1 lineLengths. The patch introduces lines longer than 100

          -1 core tests. The patch failed these unit tests:
          org.apache.hadoop.hbase.security.access.TestAccessControlFilter

          Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//testReport/
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html
          Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//console

          This message is automatically generated.

          Show
          Hadoop QA added a comment - -1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12566614/7305_v10.patch against trunk revision . +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 13 new or modified tests. +1 hadoop2.0 . The patch compiles against the hadoop 2.0 profile. +1 javadoc . The javadoc tool did not generate any warning messages. +1 javac . The applied patch does not increase the total number of javac compiler warnings. -1 findbugs . The patch appears to introduce 1 new Findbugs (version 1.3.9) warnings. +1 release audit . The applied patch does not increase the total number of release audit warnings. -1 lineLengths . The patch introduces lines longer than 100 -1 core tests . The patch failed these unit tests: org.apache.hadoop.hbase.security.access.TestAccessControlFilter Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//testReport/ Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4196//console This message is automatically generated.
          Hide
          Enis Soztutar added a comment -

          I would like to get this in sooneer rather than later. This basically prevents table operations from stepping into each others toes. I've tested this without any problems so far. Any interest?

          Show
          Enis Soztutar added a comment - I would like to get this in sooneer rather than later. This basically prevents table operations from stepping into each others toes. I've tested this without any problems so far. Any interest?
          Hide
          Ted Yu added a comment -

          I left some minor comments on review board @ Jan. 26, 2013, 4:16 a.m.

          Please fix the findbugs warning.

          You can use the following as baseline:
          https://builds.apache.org/job/PreCommit-HBASE-Build/4256/artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.xml

          Thanks

          Show
          Ted Yu added a comment - I left some minor comments on review board @ Jan. 26, 2013, 4:16 a.m. Please fix the findbugs warning. You can use the following as baseline: https://builds.apache.org/job/PreCommit-HBASE-Build/4256/artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.xml Thanks
          Hide
          Enis Soztutar added a comment -

          From RB.

          Show
          Enis Soztutar added a comment - From RB.
          Hide
          Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12567272/hbase-7305_v10.patch
          against trunk revision .

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 13 new or modified tests.

          +1 hadoop2.0. The patch compiles against the hadoop 2.0 profile.

          +1 javadoc. The javadoc tool did not generate any warning messages.

          +1 javac. The applied patch does not increase the total number of javac compiler warnings.

          +1 findbugs. The patch does not introduce any new Findbugs (version 1.3.9) warnings.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          -1 lineLengths. The patch introduces lines longer than 100

          -1 core tests. The patch failed these unit tests:
          org.apache.hadoop.hbase.constraint.TestConstraint

          -1 core zombie tests. There are 2 zombie test(s):

          Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//testReport/
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html
          Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//console

          This message is automatically generated.

          Show
          Hadoop QA added a comment - -1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12567272/hbase-7305_v10.patch against trunk revision . +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 13 new or modified tests. +1 hadoop2.0 . The patch compiles against the hadoop 2.0 profile. +1 javadoc . The javadoc tool did not generate any warning messages. +1 javac . The applied patch does not increase the total number of javac compiler warnings. +1 findbugs . The patch does not introduce any new Findbugs (version 1.3.9) warnings. +1 release audit . The applied patch does not increase the total number of release audit warnings. -1 lineLengths . The patch introduces lines longer than 100 -1 core tests . The patch failed these unit tests: org.apache.hadoop.hbase.constraint.TestConstraint -1 core zombie tests . There are 2 zombie test(s): Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//testReport/ Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4266//console This message is automatically generated.
          Hide
          Ted Yu added a comment -

          Patch v11 rebases on trunk.

          TestCatalogJanitor, TestAssignmentManager and TestConstraint passed locally.

          Show
          Ted Yu added a comment - Patch v11 rebases on trunk. TestCatalogJanitor, TestAssignmentManager and TestConstraint passed locally.
          Hide
          Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12568865/7305-v11.txt
          against trunk revision .

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 13 new or modified tests.

          +1 hadoop2.0. The patch compiles against the hadoop 2.0 profile.

          +1 javadoc. The javadoc tool did not generate any warning messages.

          +1 javac. The applied patch does not increase the total number of javac compiler warnings.

          +1 findbugs. The patch does not introduce any new Findbugs (version 1.3.9) warnings.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          -1 lineLengths. The patch introduces lines longer than 100

          -1 core tests. The patch failed these unit tests:
          org.apache.hadoop.hbase.constraint.TestConstraint

          Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//testReport/
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-prefix-tree.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html
          Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//console

          This message is automatically generated.

          Show
          Hadoop QA added a comment - -1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12568865/7305-v11.txt against trunk revision . +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 13 new or modified tests. +1 hadoop2.0 . The patch compiles against the hadoop 2.0 profile. +1 javadoc . The javadoc tool did not generate any warning messages. +1 javac . The applied patch does not increase the total number of javac compiler warnings. +1 findbugs . The patch does not introduce any new Findbugs (version 1.3.9) warnings. +1 release audit . The applied patch does not increase the total number of release audit warnings. -1 lineLengths . The patch introduces lines longer than 100 -1 core tests . The patch failed these unit tests: org.apache.hadoop.hbase.constraint.TestConstraint Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//testReport/ Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-prefix-tree.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4413//console This message is automatically generated.
          Hide
          stack added a comment -

          I put some comments up on rb. In general, excellent and +1 on commit (caveat remarks on rb).

          Show
          stack added a comment - I put some comments up on rb. In general, excellent and +1 on commit (caveat remarks on rb).
          Hide
          Enis Soztutar added a comment -

          v13 from RB. Checking hadoopqa. Will commit this if green light.

          Show
          Enis Soztutar added a comment - v13 from RB. Checking hadoopqa. Will commit this if green light.
          Hide
          Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12570206/hbase-7305_v13.patch
          against trunk revision .

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 14 new or modified tests.

          +1 hadoop2.0. The patch compiles against the hadoop 2.0 profile.

          -1 javadoc. The javadoc tool appears to have generated 7 warning messages.

          +1 javac. The applied patch does not increase the total number of javac compiler warnings.

          +1 findbugs. The patch does not introduce any new Findbugs (version 1.3.9) warnings.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          -1 lineLengths. The patch introduces lines longer than 100

          +1 core tests. The patch passed unit tests in .

          Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//testReport/
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-prefix-tree.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html
          Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//console

          This message is automatically generated.

          Show
          Hadoop QA added a comment - -1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12570206/hbase-7305_v13.patch against trunk revision . +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 14 new or modified tests. +1 hadoop2.0 . The patch compiles against the hadoop 2.0 profile. -1 javadoc . The javadoc tool appears to have generated 7 warning messages. +1 javac . The applied patch does not increase the total number of javac compiler warnings. +1 findbugs . The patch does not introduce any new Findbugs (version 1.3.9) warnings. +1 release audit . The applied patch does not increase the total number of release audit warnings. -1 lineLengths . The patch introduces lines longer than 100 +1 core tests . The patch passed unit tests in . Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//testReport/ Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-prefix-tree.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4475//console This message is automatically generated.
          Hide
          Enis Soztutar added a comment -

          Rebased the patch.

          Show
          Enis Soztutar added a comment - Rebased the patch.
          Hide
          Enis Soztutar added a comment -

          v15. Rebase attempt 2, fixed CloneSnapshotHandler. Will commit this shortly.

          Show
          Enis Soztutar added a comment - v15. Rebase attempt 2, fixed CloneSnapshotHandler. Will commit this shortly.
          Hide
          stack added a comment -

          I skimmed the latest version of the patch. +1 on commit if hadoopqa is good.

          Show
          stack added a comment - I skimmed the latest version of the patch. +1 on commit if hadoopqa is good.
          Hide
          Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12570355/hbase-7305_v15.patch
          against trunk revision .

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 14 new or modified tests.

          +1 hadoop2.0. The patch compiles against the hadoop 2.0 profile.

          +1 javadoc. The javadoc tool did not generate any warning messages.

          +1 javac. The applied patch does not increase the total number of javac compiler warnings.

          +1 findbugs. The patch does not introduce any new Findbugs (version 1.3.9) warnings.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          -1 lineLengths. The patch introduces lines longer than 100

          +1 core tests. The patch passed unit tests in .

          Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//testReport/
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-prefix-tree.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html
          Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//console

          This message is automatically generated.

          Show
          Hadoop QA added a comment - -1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12570355/hbase-7305_v15.patch against trunk revision . +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 14 new or modified tests. +1 hadoop2.0 . The patch compiles against the hadoop 2.0 profile. +1 javadoc . The javadoc tool did not generate any warning messages. +1 javac . The applied patch does not increase the total number of javac compiler warnings. +1 findbugs . The patch does not introduce any new Findbugs (version 1.3.9) warnings. +1 release audit . The applied patch does not increase the total number of release audit warnings. -1 lineLengths . The patch introduces lines longer than 100 +1 core tests . The patch passed unit tests in . Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//testReport/ Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-prefix-tree.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/4488//console This message is automatically generated.
          Hide
          Enis Soztutar added a comment -

          I've committed this. Thanks Stack, Ted and Matteo for reviews.

          Show
          Enis Soztutar added a comment - I've committed this. Thanks Stack, Ted and Matteo for reviews.
          Hide
          Hudson added a comment -

          Integrated in HBase-TRUNK-on-Hadoop-2.0.0 #415 (See https://builds.apache.org/job/HBase-TRUNK-on-Hadoop-2.0.0/415/)
          HBASE-7305. ZK based Read/Write locks for table operations (Revision 1448867)

          Result = FAILURE
          enis :
          Files :

          • /hbase/trunk/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java
          • /hbase/trunk/hbase-protocol/src/main/protobuf/ZooKeeper.proto
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/InterProcessLock.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/InterProcessReadWriteLock.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/LockTimeoutException.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/executor/EventHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterServices.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableLockManager.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/CreateTableHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DeleteTableHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ModifyTableHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableAddFamilyHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableDeleteFamilyHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableModifyFamilyHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/CloneSnapshotHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/DeletionListener.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessLockBase.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessReadLock.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessReadWriteLock.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessWriteLock.java
          • /hbase/trunk/hbase-server/src/main/resources/hbase-default.xml
          • /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/MultithreadedTestUtil.java
          • /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManager.java
          • /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
          • /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java
          • /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/zookeeper/lock
          • /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/zookeeper/lock/TestZKInterProcessReadWriteLock.java
          Show
          Hudson added a comment - Integrated in HBase-TRUNK-on-Hadoop-2.0.0 #415 (See https://builds.apache.org/job/HBase-TRUNK-on-Hadoop-2.0.0/415/ ) HBASE-7305 . ZK based Read/Write locks for table operations (Revision 1448867) Result = FAILURE enis : Files : /hbase/trunk/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java /hbase/trunk/hbase-protocol/src/main/protobuf/ZooKeeper.proto /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/InterProcessLock.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/InterProcessReadWriteLock.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/LockTimeoutException.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/executor/EventHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterServices.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableLockManager.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/CreateTableHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DeleteTableHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ModifyTableHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableAddFamilyHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableDeleteFamilyHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableModifyFamilyHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/CloneSnapshotHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/DeletionListener.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessLockBase.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessReadLock.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessReadWriteLock.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessWriteLock.java /hbase/trunk/hbase-server/src/main/resources/hbase-default.xml /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/MultithreadedTestUtil.java /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManager.java /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/zookeeper/lock /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/zookeeper/lock/TestZKInterProcessReadWriteLock.java
          Hide
          Hudson added a comment -

          Integrated in HBase-TRUNK #3890 (See https://builds.apache.org/job/HBase-TRUNK/3890/)
          HBASE-7305. ZK based Read/Write locks for table operations (Revision 1448867)

          Result = FAILURE
          enis :
          Files :

          • /hbase/trunk/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java
          • /hbase/trunk/hbase-protocol/src/main/protobuf/ZooKeeper.proto
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/InterProcessLock.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/InterProcessReadWriteLock.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/LockTimeoutException.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/executor/EventHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterServices.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableLockManager.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/CreateTableHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DeleteTableHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ModifyTableHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableAddFamilyHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableDeleteFamilyHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableModifyFamilyHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/CloneSnapshotHandler.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/DeletionListener.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessLockBase.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessReadLock.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessReadWriteLock.java
          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessWriteLock.java
          • /hbase/trunk/hbase-server/src/main/resources/hbase-default.xml
          • /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/MultithreadedTestUtil.java
          • /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManager.java
          • /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
          • /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java
          • /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/zookeeper/lock
          • /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/zookeeper/lock/TestZKInterProcessReadWriteLock.java
          Show
          Hudson added a comment - Integrated in HBase-TRUNK #3890 (See https://builds.apache.org/job/HBase-TRUNK/3890/ ) HBASE-7305 . ZK based Read/Write locks for table operations (Revision 1448867) Result = FAILURE enis : Files : /hbase/trunk/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ZooKeeperProtos.java /hbase/trunk/hbase-protocol/src/main/protobuf/ZooKeeper.proto /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/InterProcessLock.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/InterProcessReadWriteLock.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/LockTimeoutException.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/executor/EventHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterServices.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableLockManager.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/CreateTableHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DeleteTableHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ModifyTableHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableAddFamilyHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableDeleteFamilyHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableModifyFamilyHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/CloneSnapshotHandler.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/DeletionListener.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessLockBase.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessReadLock.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessReadWriteLock.java /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessWriteLock.java /hbase/trunk/hbase-server/src/main/resources/hbase-default.xml /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/MultithreadedTestUtil.java /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManager.java /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/zookeeper/lock /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/zookeeper/lock/TestZKInterProcessReadWriteLock.java
          Hide
          ramkrishna.s.vasudevan added a comment -

          Going thro the patch, currenlty we have use case only with WriteLock?
          So when we do region assignments thro balancing then we should create a readlock on the path /znode/table-lock for the given table.
          Now when this process is going on we will stop the user from Disabling or Modifying the table. Am i right?
          That part is yet to be implemented?

          Show
          ramkrishna.s.vasudevan added a comment - Going thro the patch, currenlty we have use case only with WriteLock? So when we do region assignments thro balancing then we should create a readlock on the path /znode/table-lock for the given table. Now when this process is going on we will stop the user from Disabling or Modifying the table. Am i right? That part is yet to be implemented?
          Hide
          Enis Soztutar added a comment -

          Thanks Ram for checking this out. Yes in this patch, we only add write locking in most of the table operations (except for offlineRegion, moveRegion, etc). There is a follow up patch, HBASE-7546, which adds read locking for region splits.

          Do you think that we should acquire a read lock, for balancer, or AM, SSH operations?

          Show
          Enis Soztutar added a comment - Thanks Ram for checking this out. Yes in this patch, we only add write locking in most of the table operations (except for offlineRegion, moveRegion, etc). There is a follow up patch, HBASE-7546 , which adds read locking for region splits. Do you think that we should acquire a read lock, for balancer, or AM, SSH operations?
          Hide
          Enis Soztutar added a comment -

          Attaching some notes about why table locks are awesome, and some implementation details + rational.

          Show
          Enis Soztutar added a comment - Attaching some notes about why table locks are awesome, and some implementation details + rational.
          Hide
          Jonathan Hsieh added a comment -

          Here's a deck with the internals that I started. There are a few questions in places that would be great to answer or turn into comments in the code as a follow on jira.

          Show
          Jonathan Hsieh added a comment - Here's a deck with the internals that I started. There are a few questions in places that would be great to answer or turn into comments in the code as a follow on jira.
          Hide
          Jonathan Hsieh added a comment -

          The doc is great – I'm really the most curious about why different operations get the read or the write aspects of the lock guard what they protect. I'm trying to justify this to myself now based on the docs. So, do I have this right?

          Affected operations:

          • create, delete, disable, enable, alter, modify table (add/del/mod col, mod table), splits
          • Other candidates: merge, snapshot, ... balancer, am, ssh, hbck

          current rationale:

          • want to allow safe table mods (disable, enable, alter)
          • want to allow concurrent splits
          • want snapshots operations to be "safe"

          Implementaiton:

          • Read locks on splits.
          • Exclusive write lock on all other table mods.

          Questions/Observations:

          • This primarily protects operations that clash with table level enable/disable/alter, but not region level operations, right?.
          • This doesn't guard meta from individual changes, right? It only protects meta from bulk adds (create/delete table). Thus this shouldn't affect region moves or region closes/opens.
          • Protecting split with a read table lock only prevents alter/enable/disable table ops from happening. If an overlapping merge and split were issued, some other mechanism is in place to keep this sane right? This doesn't protect multiple merge requests with overlapping regions right?
          • Merges will likely want the read lock? (allowing multiple concurrent merges, and assuming some overlap sanity protection from a different mechanism).
          • With snapshots, this mechanism doesn't prevent regions from moving so it only protects snapshots from concurrently happening with enable/disable/alter table ops. Snapshot will still fail if it gets caught while the balancer is running.
          • These locks don't really help hbck – except for the cases where enable/disable/alter operations are going on as hbck repairs things. (It wouldn't "protect" hbck from the balancer").

          As a strawman (for follow on work), I'm thinking for Assignemnt dependent operations (splits/balancer/ssh/snapshots/merge) we might want another lock (I believe regions-in-transition kind of serve this purpose already).

          • Does having a table lock (and then having individual region locks that require a table read lock being held) make sense? Maybe this makes sense for merges and splits?
          Show
          Jonathan Hsieh added a comment - The doc is great – I'm really the most curious about why different operations get the read or the write aspects of the lock guard what they protect. I'm trying to justify this to myself now based on the docs. So, do I have this right? Affected operations: create, delete, disable, enable, alter, modify table (add/del/mod col, mod table), splits Other candidates: merge, snapshot, ... balancer, am, ssh, hbck current rationale: want to allow safe table mods (disable, enable, alter) want to allow concurrent splits want snapshots operations to be "safe" Implementaiton: Read locks on splits. Exclusive write lock on all other table mods. Questions/Observations: This primarily protects operations that clash with table level enable/disable/alter, but not region level operations, right?. This doesn't guard meta from individual changes, right? It only protects meta from bulk adds (create/delete table). Thus this shouldn't affect region moves or region closes/opens. Protecting split with a read table lock only prevents alter/enable/disable table ops from happening. If an overlapping merge and split were issued, some other mechanism is in place to keep this sane right? This doesn't protect multiple merge requests with overlapping regions right? Merges will likely want the read lock? (allowing multiple concurrent merges, and assuming some overlap sanity protection from a different mechanism). With snapshots, this mechanism doesn't prevent regions from moving so it only protects snapshots from concurrently happening with enable/disable/alter table ops. Snapshot will still fail if it gets caught while the balancer is running. These locks don't really help hbck – except for the cases where enable/disable/alter operations are going on as hbck repairs things. (It wouldn't "protect" hbck from the balancer"). As a strawman (for follow on work), I'm thinking for Assignemnt dependent operations (splits/balancer/ssh/snapshots/merge) we might want another lock (I believe regions-in-transition kind of serve this purpose already). Does having a table lock (and then having individual region locks that require a table read lock being held) make sense? Maybe this makes sense for merges and splits?
          Hide
          Sergey Shelukhin added a comment -

          having individual region locks that require a table read lock being held

          I wonder if region lock approach would scale. Though vary I can accept that splits are infrequent enough to not introduce too much delay to table operations, but if every AM action blocks every table operation I think it will not scale beyond small or medium clusters. I think we should be able to use better approach... table updates on modified regions can be done after modification.

          Show
          Sergey Shelukhin added a comment - having individual region locks that require a table read lock being held I wonder if region lock approach would scale. Though vary I can accept that splits are infrequent enough to not introduce too much delay to table operations, but if every AM action blocks every table operation I think it will not scale beyond small or medium clusters. I think we should be able to use better approach... table updates on modified regions can be done after modification.
          Hide
          Enis Soztutar added a comment -

          Thanks Jon, I was in the process of updating the doc, but got carried away with more pressing issues. I'll attach an updated version.
          Your overview seems about right.

          This primarily protects operations that clash with table level enable/disable/alter, but not region level operations, right?.

          If you mean assign, etc. Not it does not.

          This doesn't guard meta from individual changes, right? It only protects meta from bulk adds (create/delete table). Thus this shouldn't affect region moves or region closes/opens.

          There is no guard against changes to META. Region moves, open/close does not acquire a lock.

          If an overlapping merge and split were issued, some other mechanism is in place to keep this sane right? This doesn't protect multiple merge requests with overlapping regions right?

          Merges will likely want the read lock? (allowing multiple concurrent merges, and assuming some overlap sanity protection from a different mechanism).

          Merges can be designed to acquire read lock or a write lock. If read lock, then it means there is no guarantee against trying to do a merge and a concurrent split. But this allows merges for different ranges happening at the same time. If we do write lock, it will guard against concurrent merge / split problem, but we cannot do multiple merges at the same time.
          The recent patch for HBASE-7403 moves the regions to be merged to the same region server. We might be able to do in-memory locking for merge and split in the RS, so that we might be able to use read locking for merges.

          With snapshots, this mechanism doesn't prevent regions from moving so it only protects snapshots from concurrently happening with enable/disable/alter table ops. Snapshot will still fail if it gets caught while the balancer is running.

          Yes, there is no protection against that right now. I have to look up why region move causes snapshot to fail.

          These locks don't really help hbck – except for the cases where enable/disable/alter operations are going on as hbck repairs things. (It wouldn't "protect" hbck from the balancer").

          hbck as it is relies too much on knowing about the filesystem layout, and META. It is hard to sync between balancer and hbck.

          Does having a table lock (and then having individual region locks that require a table read lock being held) make sense? Maybe this makes sense for merges and splits?

          If we have per-region locks, we might reevaluate table locks. But I would imagine so, since it will prevent concurrent master operations as well. We can achieve the same thing with acquiring all the region locks, but table locks would be faster.

          having individual region locks that require a table read lock being held

          I think we have to evaluate whether this is feasible. I guess it should be, but we should be able to scale to millions of regions. If we had per-region locks, assignment would become much easier (current RIT is similar, but we need this even for assigned regions)

          Show
          Enis Soztutar added a comment - Thanks Jon, I was in the process of updating the doc, but got carried away with more pressing issues. I'll attach an updated version. Your overview seems about right. This primarily protects operations that clash with table level enable/disable/alter, but not region level operations, right?. If you mean assign, etc. Not it does not. This doesn't guard meta from individual changes, right? It only protects meta from bulk adds (create/delete table). Thus this shouldn't affect region moves or region closes/opens. There is no guard against changes to META. Region moves, open/close does not acquire a lock. If an overlapping merge and split were issued, some other mechanism is in place to keep this sane right? This doesn't protect multiple merge requests with overlapping regions right? Merges will likely want the read lock? (allowing multiple concurrent merges, and assuming some overlap sanity protection from a different mechanism). Merges can be designed to acquire read lock or a write lock. If read lock, then it means there is no guarantee against trying to do a merge and a concurrent split. But this allows merges for different ranges happening at the same time. If we do write lock, it will guard against concurrent merge / split problem, but we cannot do multiple merges at the same time. The recent patch for HBASE-7403 moves the regions to be merged to the same region server. We might be able to do in-memory locking for merge and split in the RS, so that we might be able to use read locking for merges. With snapshots, this mechanism doesn't prevent regions from moving so it only protects snapshots from concurrently happening with enable/disable/alter table ops. Snapshot will still fail if it gets caught while the balancer is running. Yes, there is no protection against that right now. I have to look up why region move causes snapshot to fail. These locks don't really help hbck – except for the cases where enable/disable/alter operations are going on as hbck repairs things. (It wouldn't "protect" hbck from the balancer"). hbck as it is relies too much on knowing about the filesystem layout, and META. It is hard to sync between balancer and hbck. Does having a table lock (and then having individual region locks that require a table read lock being held) make sense? Maybe this makes sense for merges and splits? If we have per-region locks, we might reevaluate table locks. But I would imagine so, since it will prevent concurrent master operations as well. We can achieve the same thing with acquiring all the region locks, but table locks would be faster. having individual region locks that require a table read lock being held I think we have to evaluate whether this is feasible. I guess it should be, but we should be able to scale to millions of regions. If we had per-region locks, assignment would become much easier (current RIT is similar, but we need this even for assigned regions)
          Hide
          Sergey Shelukhin added a comment -

          What I had in mind in the comments in HBASE-5487 was a persistent central state machine + "version" per region (in ZK or a table), and per table. It should allow multiple operations to proceed in parallel as long as it's logically feasible (e.g. if split is opening daughters and alter table comes you just bump the version on the node and server has to reopen, etc.).
          For table-wide ops like alters I am +1 on locking (it could be done via versions too though, e.g. why not allow parallel alter-s during region opening - but this is not important probably).

          Show
          Sergey Shelukhin added a comment - What I had in mind in the comments in HBASE-5487 was a persistent central state machine + "version" per region (in ZK or a table), and per table. It should allow multiple operations to proceed in parallel as long as it's logically feasible (e.g. if split is opening daughters and alter table comes you just bump the version on the node and server has to reopen, etc.). For table-wide ops like alters I am +1 on locking (it could be done via versions too though, e.g. why not allow parallel alter-s during region opening - but this is not important probably).
          Hide
          Jonathan Hsieh added a comment -

          Enis Soztutar Thanks for clarifying the scope of this, I think understanding-wise I'm on the same page now.

          The recent patch for HBASE-7403 moves the regions to be merged to the same region server. We might be able to do in-memory locking for merge and split in the RS, so that we might be able to use read locking for merges.

          I like that. This approach simplifies one problem. I'm thinking it may push it towards another (region assignment races), but I'll take a look over there.

          Yes, there is no protection against that right now. I have to look up why region move causes snapshot to fail.

          With the current snapshot implementation, in an ideal situation, when a table is being snapshotted would lock the location of regions (no region moves) and the list of regions (no splits). If either happens, the expected list of regions snapshotted and then actual list of regions snapshotted may differ and a verifcation step when taking a snapshot will fail alerting the user. We could change the snapshotting implementation to be immune from moves (region names are the same), but it still would be susceptible to split/merge actions (since introduces new regions).

          I've got a chart kicking around in my head that tries to highlight which operations class and where locks are or could be used to guard concurrent modifications. Hopefully I'll get a draft up in the next few days, and post to dev@.

          Show
          Jonathan Hsieh added a comment - Enis Soztutar Thanks for clarifying the scope of this, I think understanding-wise I'm on the same page now. The recent patch for HBASE-7403 moves the regions to be merged to the same region server. We might be able to do in-memory locking for merge and split in the RS, so that we might be able to use read locking for merges. I like that. This approach simplifies one problem. I'm thinking it may push it towards another (region assignment races), but I'll take a look over there. Yes, there is no protection against that right now. I have to look up why region move causes snapshot to fail. With the current snapshot implementation, in an ideal situation, when a table is being snapshotted would lock the location of regions (no region moves) and the list of regions (no splits). If either happens, the expected list of regions snapshotted and then actual list of regions snapshotted may differ and a verifcation step when taking a snapshot will fail alerting the user. We could change the snapshotting implementation to be immune from moves (region names are the same), but it still would be susceptible to split/merge actions (since introduces new regions). I've got a chart kicking around in my head that tries to highlight which operations class and where locks are or could be used to guard concurrent modifications. Hopefully I'll get a draft up in the next few days, and post to dev@.
          Hide
          Enis Soztutar added a comment -

          Attaching updated doc.

          Show
          Enis Soztutar added a comment - Attaching updated doc.
          Hide
          ramkrishna.s.vasudevan added a comment -

          Jonathan Hsieh
          Your concern on region assignment obtaining a lock seems very much valid. I remember Enis asking about the same thing long back.
          If you take a look at HBASE-8133 actually a table was getting DISABLED but the Region znode was having it in OPENING or OPENED.
          This happens when a balancer and disable table happens parallely.
          Pls refert https://issues.apache.org/jira/browse/HBASE-8133?focusedCommentId=13604868&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13604868, from Rajesh which explains this scenario.
          Just saw this discussion going on here so thought it would help in understanding the problem.
          So basically on a high level if balancing is going on we need to obtain locks for the tables of those regions that are currently getting assigned and the same should be checked before staring balancer if suppose Disable table or any such operation is going on to avoid this problem.

          Show
          ramkrishna.s.vasudevan added a comment - Jonathan Hsieh Your concern on region assignment obtaining a lock seems very much valid. I remember Enis asking about the same thing long back. If you take a look at HBASE-8133 actually a table was getting DISABLED but the Region znode was having it in OPENING or OPENED. This happens when a balancer and disable table happens parallely. Pls refert https://issues.apache.org/jira/browse/HBASE-8133?focusedCommentId=13604868&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13604868 , from Rajesh which explains this scenario. Just saw this discussion going on here so thought it would help in understanding the problem. So basically on a high level if balancing is going on we need to obtain locks for the tables of those regions that are currently getting assigned and the same should be checked before staring balancer if suppose Disable table or any such operation is going on to avoid this problem.
          Hide
          Jonathan Hsieh added a comment -

          Thanks for the links!

          Show
          Jonathan Hsieh added a comment - Thanks for the links!
          Hide
          stack added a comment -

          Marking closed.

          Show
          stack added a comment - Marking closed.

            People

            • Assignee:
              Enis Soztutar
              Reporter:
              Enis Soztutar
            • Votes:
              0 Vote for this issue
              Watchers:
              18 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development