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 3B404200C15 for ; Wed, 8 Feb 2017 13:10:54 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 39D21160B5A; Wed, 8 Feb 2017 12:10:54 +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 84420160B4E for ; Wed, 8 Feb 2017 13:10:53 +0100 (CET) Received: (qmail 70511 invoked by uid 500); 8 Feb 2017 12:10:52 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 70500 invoked by uid 99); 8 Feb 2017 12:10:52 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 08 Feb 2017 12:10:52 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id DB89BC0795 for ; Wed, 8 Feb 2017 12:10:51 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -1.199 X-Spam-Level: X-Spam-Status: No, score=-1.199 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RP_MATCHES_RCVD=-2.999] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id H58x6t8Rm7iq for ; Wed, 8 Feb 2017 12:10:49 +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 F20EC5F5D3 for ; Wed, 8 Feb 2017 12:10:48 +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 607C2E0596 for ; Wed, 8 Feb 2017 12:10:42 +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 BDE9B2528F for ; Wed, 8 Feb 2017 12:10:41 +0000 (UTC) Date: Wed, 8 Feb 2017 12:10:41 +0000 (UTC) From: "Sylvain Lebresne (JIRA)" To: commits@cassandra.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (CASSANDRA-13069) Local batchlog for MV may not be correctly written on node movements MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Wed, 08 Feb 2017 12:10:54 -0000 [ https://issues.apache.org/jira/browse/CASSANDRA-13069?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15857905#comment-15857905 ] Sylvain Lebresne commented on CASSANDRA-13069: ---------------------------------------------- The patch looks good (though please add braces after the {{if ((pairedEndpoint.get().equals(...))}}) in that it fixes the issue mentioned in the description, and I agree not decrementing the cleanup on local mutations was wrong. But I'm honestly a bit confused about our use of the (local) batchlog for MVs and I don't think it's right. As far as I can tell, the goal of using a local batchlog is to guarantee eventual consistency of a the base table and its views. That is, no matter what happens for a given update, either both that update and all the related view updates get eventually applied, or none of it is. But unless I'm missing something subtle (for which there is no comment in the code), the batchlog will only guarantees that if _all_ mutations are grouped in it. So I don't understand why: # we don't include local view mutations in the batchlog in {{SP.mutateMV}}. # the base table mutation isn't included in said batchlog alongside it's related view updates. I'll note that fixing the first point in {{mutateMV}} would actually simplify the method and If I'm not completely wrong here I suggest we at least do that on this ticket. It still won't solve the 2nd point, but that's arguably more involved so I'm ok creating a follow-up ticket for that (still, it kind of breaks the one basic guarantee MVs are supposed to provide, so it's kind of critical). > Local batchlog for MV may not be correctly written on node movements > -------------------------------------------------------------------- > > Key: CASSANDRA-13069 > URL: https://issues.apache.org/jira/browse/CASSANDRA-13069 > Project: Cassandra > Issue Type: Bug > Reporter: Sylvain Lebresne > Assignee: Paulo Motta > > Unless I'm really reading this wrong, I think the code [here|https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/service/StorageProxy.java#L829-L843], which comes from CASSANDRA-10674, isn't working properly. > More precisely, I believe we can have both paired and unpaired mutations, so that both {{if}} can be taken, but if that's the case, the 2nd write to the batchlog will basically overwrite (remove) the batchlog write of the 1st {{if}} and I don't think that's the intention. In practice, this means "paired" mutation won't be in the batchlog, which mean they won't be replayed at all if they fail. -- This message was sent by Atlassian JIRA (v6.3.15#6346)