You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Hudson (JIRA)" <ji...@apache.org> on 2016/01/07 00:30:40 UTC

[jira] [Commented] (HBASE-13415) Procedure V2 - Use nonces for double submits from client

    [ https://issues.apache.org/jira/browse/HBASE-13415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15086492#comment-15086492 ] 

Hudson commented on HBASE-13415:
--------------------------------

FAILURE: Integrated in HBase-1.1-JDK8 #1721 (See [https://builds.apache.org/job/HBase-1.1-JDK8/1721/])
HBASE-13415 Procedure V2 - Use nonces for double submits from client (syuanjiangdev: rev 0c900fe7eebf5d5253c4f2bf69f04127dcf0c80a)
* hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestProcedureConf.java
* hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestEnableTableProcedure.java
* hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.java
* hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterServices.java
* hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java
* hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestHBaseAdminNoCluster.java
* hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessControlLists.java
* hbase-common/src/main/java/org/apache/hadoop/hbase/util/NonceKey.java
* hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java
* hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.java
* hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java
* hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java
* hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestDeleteTableProcedure.java
* hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyColumnFamilyProcedure.java
* hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
* hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/Procedure.java
* hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureResult.java
* hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyTableProcedure.java
* hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java
* hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
* hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.java
* hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java
* hbase-protocol/src/main/protobuf/Master.proto
* hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestDisableTableProcedure.java
* hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.java
* hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/ProcedureProtos.java
* hbase-protocol/src/main/protobuf/Procedure.proto
* hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ServerNonceManager.java
* hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
* hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestAddColumnFamilyProcedure.java
* hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedure.java
* hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java


> Procedure V2 - Use nonces for double submits from client
> --------------------------------------------------------
>
>                 Key: HBASE-13415
>                 URL: https://issues.apache.org/jira/browse/HBASE-13415
>             Project: HBase
>          Issue Type: Sub-task
>          Components: master
>            Reporter: Enis Soztutar
>            Assignee: Stephen Yuan Jiang
>            Priority: Blocker
>             Fix For: 2.0.0, 1.2.0, 1.3.0, 1.1.3
>
>         Attachments: HBASE-13415.v1-branch-1.1.patch, HBASE-13415.v1-master.patch, HBASE-13415.v2-master.patch, HBASE-13415.v3-master.patch
>
>
> The client can submit a procedure, but before getting the procId back, the master might fail. In this case, the client request will fail and the client will re-submit the request. If 1.1 client or if there is no contention for the table lock, the time window is pretty small, but still might happen. 
> If the proc was accepted and stored in the procedure store, a re-submit from the client will add another procedure, which will execute after the first one. The first one will likely succeed, and the second one will fail (for example in the case of create table, the second one will throw TableExistsException). 
> One idea is to use client generated nonces (that we already have) to guard against these cases. The client will submit the request with the nonce and the nonce will be saved together with the procedure in the store. In case of a double submit, the nonce-cache is checked and the procId of the original request is returned. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)