Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0B5B879E5 for ; Mon, 24 Oct 2011 20:20:45 +0000 (UTC) Received: (qmail 81551 invoked by uid 500); 24 Oct 2011 20:20:44 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 81507 invoked by uid 500); 24 Oct 2011 20:20:44 -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 81499 invoked by uid 99); 24 Oct 2011 20:20:44 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 24 Oct 2011 20:20:44 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 24 Oct 2011 20:20:43 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 870EB23888CD for ; Mon, 24 Oct 2011 20:20:23 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1188353 - in /cassandra/branches/cassandra-0.8: CHANGES.txt src/java/org/apache/cassandra/db/ColumnFamilyStore.java Date: Mon, 24 Oct 2011 20:20:23 -0000 To: commits@cassandra.apache.org From: jbellis@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111024202023.870EB23888CD@eris.apache.org> Author: jbellis Date: Mon Oct 24 20:20:23 2011 New Revision: 1188353 URL: http://svn.apache.org/viewvc?rev=1188353&view=rev Log: remove incorrect optimization from slice read path patch by jbellis; reviewed by slebresne for CASSANDRA-3390 Modified: cassandra/branches/cassandra-0.8/CHANGES.txt cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Modified: cassandra/branches/cassandra-0.8/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1188353&r1=1188352&r2=1188353&view=diff ============================================================================== --- cassandra/branches/cassandra-0.8/CHANGES.txt (original) +++ cassandra/branches/cassandra-0.8/CHANGES.txt Mon Oct 24 20:20:23 2011 @@ -29,7 +29,9 @@ * fix assertionError during repair with ordered partitioners (CASSANDRA-3369) * correctly serialize key_validation_class for avro (CASSANDRA-3391) * don't expire counter tombstone after streaming (CASSANDRA-3394) - * prevent nodes that failed to join from hanging around forever (CASSANDRA-3351) + * prevent nodes that failed to join from hanging around forever + (CASSANDRA-3351) + * remove incorrect optimization from slice read path (CASSANDRA-3390) 0.8.7 Modified: cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/ColumnFamilyStore.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1188353&r1=1188352&r2=1188353&view=diff ============================================================================== --- cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original) +++ cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Mon Oct 24 20:20:23 2011 @@ -1327,44 +1327,8 @@ public class ColumnFamilyStore implement * tombstones that are no longer relevant. */ ColumnFamily filterColumnFamily(ColumnFamily cached, QueryFilter filter, int gcBefore) { - // special case slicing the entire row: - // we can skip the filter step entirely, and we can help out removeDeleted by re-caching the result - // if any tombstones have aged out since last time. (This means that the row cache will treat gcBefore as - // max(gcBefore, all previous gcBefore), which is fine for correctness.) - // - // But, if the filter is asking for less columns than we have cached, we fall back to the slow path - // since we have to copy out a subset. - if (filter.filter instanceof SliceQueryFilter) - { - SliceQueryFilter sliceFilter = (SliceQueryFilter) filter.filter; - if (sliceFilter.start.remaining() == 0 && sliceFilter.finish.remaining() == 0) - { - if (cached.isSuper() && filter.path.superColumnName != null) - { - // subcolumns from named supercolumn - IColumn sc = cached.getColumn(filter.path.superColumnName); - if (sc == null || sliceFilter.count >= sc.getSubColumns().size()) - { - ColumnFamily cf = cached.cloneMeShallow(); - if (sc != null) - cf.addColumn(sc); - return removeDeleted(cf, gcBefore); - } - } - else - { - // top-level columns - if (sliceFilter.count >= cached.getColumnCount()) - { - removeDeletedColumnsOnly(cached, gcBefore); - return removeDeletedCF(cached, gcBefore); - } - } - } - } - + ColumnFamily cf = cached.cloneMeShallow(); IColumnIterator ci = filter.getMemtableColumnIterator(cached, null, getComparator()); - ColumnFamily cf = ci.getColumnFamily().cloneMeShallow(); filter.collectCollatedColumns(cf, ci, gcBefore); // TODO this is necessary because when we collate supercolumns together, we don't check // their subcolumns for relevance, so we need to do a second prune post facto here.