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 EB4E141CD for ; Mon, 23 May 2011 14:23:59 +0000 (UTC) Received: (qmail 81980 invoked by uid 500); 23 May 2011 14:23:59 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 81878 invoked by uid 500); 23 May 2011 14:23:59 -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 81870 invoked by uid 99); 23 May 2011 14:23:59 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 23 May 2011 14:23:59 +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, 23 May 2011 14:23:57 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 697352388A74; Mon, 23 May 2011 14:23:36 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1126502 - in /cassandra/branches/cassandra-0.7: CHANGES.txt src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java Date: Mon, 23 May 2011 14:23:36 -0000 To: commits@cassandra.apache.org From: jbellis@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110523142336.697352388A74@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jbellis Date: Mon May 23 14:23:36 2011 New Revision: 1126502 URL: http://svn.apache.org/viewvc?rev=1126502&view=rev Log: add placeholders formissingrows inrange query pseudo-RR patch by jbellis; reviewed by slebresne for CASSANDRA-2680 Modified: cassandra/branches/cassandra-0.7/CHANGES.txt cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java Modified: cassandra/branches/cassandra-0.7/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/CHANGES.txt?rev=1126502&r1=1126501&r2=1126502&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/CHANGES.txt (original) +++ cassandra/branches/cassandra-0.7/CHANGES.txt Mon May 23 14:23:36 2011 @@ -6,6 +6,7 @@ * don't perform HH to client-mode [storageproxy] nodes (CASSANDRA-2668) * fix IntegerType.getString with direct buffers (CASSANDRA-2684) * avoid replaying hints to dropped columnfamilies (CASSANDRA-2685) + * add placeholders for missing rows in range query pseudo-RR (CASSANDRA-2680) 0.7.6 Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java?rev=1126502&r1=1126501&r2=1126502&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java (original) +++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java Mon May 23 14:23:36 2011 @@ -24,8 +24,6 @@ import java.util.*; import java.util.concurrent.LinkedBlockingQueue; import com.google.common.collect.AbstractIterator; -import com.google.common.collect.Iterables; -import com.google.common.collect.Iterators; import org.apache.commons.collections.iterators.CollatingIterator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -104,7 +102,21 @@ public class RangeSliceResponseResolver protected Row getReduced() { - ColumnFamily resolved = RowRepairResolver.resolveSuperset(versions); + ColumnFamily resolved = versions.size() > 1 + ? RowRepairResolver.resolveSuperset(versions) + : versions.get(0); + if (versions.size() < sources.size()) + { + // add placeholder rows for sources that didn't have any data, so maybeScheduleRepairs sees them + for (InetAddress source : sources) + { + if (!versionSources.contains(source)) + { + versions.add(null); + versionSources.add(source); + } + } + } RowRepairResolver.maybeScheduleRepairs(resolved, table, key, versions, versionSources); versions.clear(); versionSources.clear();