Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 51178200CE4 for ; Mon, 31 Jul 2017 01:31:09 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 46369163F62; Sun, 30 Jul 2017 23:31:09 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 88746163F60 for ; Mon, 31 Jul 2017 01:31:08 +0200 (CEST) Received: (qmail 20530 invoked by uid 500); 30 Jul 2017 23:31:07 -0000 Mailing-List: contact dev-help@phoenix.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@phoenix.apache.org Delivered-To: mailing list dev@phoenix.apache.org Received: (qmail 20512 invoked by uid 99); 30 Jul 2017 23:31:07 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd4-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 30 Jul 2017 23:31:07 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd4-us-west.apache.org (ASF Mail Server at spamd4-us-west.apache.org) with ESMTP id 1081FC006E for ; Sun, 30 Jul 2017 23:31:07 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd4-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -99.202 X-Spam-Level: X-Spam-Status: No, score=-99.202 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, USER_IN_WHITELIST=-100] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd4-us-west.apache.org [10.40.0.11]) (amavisd-new, port 10024) with ESMTP id oIhRTQcFjHjP for ; Sun, 30 Jul 2017 23:31:06 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTP id 8163D5F3FF for ; Sun, 30 Jul 2017 23:31:05 +0000 (UTC) Received: from jira-lw-us.apache.org (unknown [207.244.88.139]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id DA053E06CC for ; Sun, 30 Jul 2017 23:31:03 +0000 (UTC) Received: from jira-lw-us.apache.org (localhost [127.0.0.1]) by jira-lw-us.apache.org (ASF Mail Server at jira-lw-us.apache.org) with ESMTP id 567C82464C for ; Sun, 30 Jul 2017 23:31:02 +0000 (UTC) Date: Sun, 30 Jul 2017 23:31:02 +0000 (UTC) From: "Andrew Purtell (JIRA)" To: dev@phoenix.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (PHOENIX-4053) Lock row exclusively when necessary for mutable secondary indexing MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Sun, 30 Jul 2017 23:31:09 -0000 [ https://issues.apache.org/jira/browse/PHOENIX-4053?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16106696#comment-16106696 ] Andrew Purtell commented on PHOENIX-4053: ----------------------------------------- ConcurrentMutationsIT needs an ASF header. A concern here: {code} + + int rowLockWaitDuration = clonedConfig.getInt("hbase.rowlock.wait.duration", + DEFAULT_ROWLOCK_WAIT_DURATION); + this.lockManager = new LockManager(rowLockWaitDuration); {code} is in HBASE-17210 we've plumbed through the client's desired RPC timeout to the rowlock timeout, and if not also done on the Phoenix side in lock management there it will undo it. > Lock row exclusively when necessary for mutable secondary indexing > ------------------------------------------------------------------ > > Key: PHOENIX-4053 > URL: https://issues.apache.org/jira/browse/PHOENIX-4053 > Project: Phoenix > Issue Type: Bug > Reporter: James Taylor > Assignee: James Taylor > Attachments: PHOENIX-4053_4.x-HBase-0.98_v2.patch, PHOENIX-4053_4.x-HBase-0.98_v3.patch, PHOENIX-4053-4.x-HBase-0.98_v4.patch, PHOENIX-4053_v2.patch, PHOENIX-4053_v3.patch, PHOENIX-4053_v4.patch, PHOENIX-4053_wip.patch > > > From HBase 1.2 on, rows are not exclusively locked when the preBatchMutate call is made (see HBASE-18474). The mutable secondary index (global and local) depend on this to get a consistent snapshot of a row between the point when the current row value is looked up, and when the new row is written, until the mvcc is advanced. Otherwise, a subsequent update to a row may not see the current row state. Even with pre HBase 1.2 releases, the lock isn't held long enough for us. We need to hold the locks from the start of the preBatchMutate (when we read the data table to get the prior row values) until the mvcc is advanced (beginning of postBatchMutateIndispensably). > Given the above, it's best if Phoenix manages the row locking itself (mimicing the current HBase mechanism). -- This message was sent by Atlassian JIRA (v6.4.14#64029)