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 46D1118F26 for ; Wed, 2 Mar 2016 13:11:09 +0000 (UTC) Received: (qmail 11215 invoked by uid 500); 2 Mar 2016 13:11:08 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 10967 invoked by uid 500); 2 Mar 2016 13:11:08 -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 10610 invoked by uid 99); 2 Mar 2016 13:11:08 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 02 Mar 2016 13:11:08 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id CCB8CDFE14; Wed, 2 Mar 2016 13:11:07 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: marcuse@apache.org To: commits@cassandra.apache.org Date: Wed, 02 Mar 2016 13:11:11 -0000 Message-Id: In-Reply-To: <6ad065ba358b4458a2a973dd85970637@git.apache.org> References: <6ad065ba358b4458a2a973dd85970637@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [5/9] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0 Merge branch 'cassandra-2.2' into cassandra-3.0 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/841a8031 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/841a8031 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/841a8031 Branch: refs/heads/trunk Commit: 841a80311c95b05b69e57971deff9aba03c5f5d2 Parents: 6328590 477014b Author: Marcus Eriksson Authored: Wed Mar 2 14:07:36 2016 +0100 Committer: Marcus Eriksson Committed: Wed Mar 2 14:07:57 2016 +0100 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../db/compaction/CompactionManager.java | 69 ++++++++++++-------- 2 files changed, 42 insertions(+), 28 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/841a8031/CHANGES.txt ---------------------------------------------------------------------- diff --cc CHANGES.txt index a7b5c8a,a50f256..425cc58 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,26 -1,6 +1,27 @@@ -2.2.6 +3.0.4 * Preserve order for preferred SSL cipher suites (CASSANDRA-11164) + * MV should only query complex columns included in the view (CASSANDRA-11069) + * Failed aggregate creation breaks server permanently (CASSANDRA-11064) + * Add sstabledump tool (CASSANDRA-7464) + * Introduce backpressure for hints (CASSANDRA-10972) + * Fix ClusteringPrefix not being able to read tombstone range boundaries (CASSANDRA-11158) + * Prevent logging in sandboxed state (CASSANDRA-11033) + * Disallow drop/alter operations of UDTs used by UDAs (CASSANDRA-10721) + * Add query time validation method on Index (CASSANDRA-11043) + * Avoid potential AssertionError in mixed version cluster (CASSANDRA-11128) + * Properly handle hinted handoff after topology changes (CASSANDRA-5902) + * AssertionError when listing sstable files on inconsistent disk state (CASSANDRA-11156) + * Fix wrong rack counting and invalid conditions check for TokenAllocation + (CASSANDRA-11139) + * Avoid creating empty hint files (CASSANDRA-11090) + * Fix leak detection strong reference loop using weak reference (CASSANDRA-11120) + * Configurie BatchlogManager to stop delayed tasks on shutdown (CASSANDRA-11062) + * Hadoop integration is incompatible with Cassandra Driver 3.0.0 (CASSANDRA-11001) + * Add dropped_columns to the list of schema table so it gets handled + properly (CASSANDRA-11050) + * Fix NPE when using forceRepairRangeAsync without DC (CASSANDRA-11239) +Merged from 2.2: + * Reference leak with parallel repairs on the same table (CASSANDRA-11215) * Range.compareTo() violates the contract of Comparable (CASSANDRA-11216) * Avoid NPE when serializing ErrorMessage with null message (CASSANDRA-11167) * Replacing an aggregate with a new version doesn't reset INITCOND (CASSANDRA-10840) http://git-wip-us.apache.org/repos/asf/cassandra/blob/841a8031/src/java/org/apache/cassandra/db/compaction/CompactionManager.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/db/compaction/CompactionManager.java index c269f7f,b015bcd..891f976 --- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java @@@ -1159,6 -1144,45 +1133,45 @@@ public class CompactionManager implemen } } + private synchronized Refs getSSTablesToValidate(ColumnFamilyStore cfs, Validator validator) + { + Refs sstables; + + ActiveRepairService.ParentRepairSession prs = ActiveRepairService.instance.getParentRepairSession(validator.desc.parentSessionId); + if (prs == null) + return null; + Set sstablesToValidate = new HashSet<>(); - try (ColumnFamilyStore.RefViewFragment sstableCandidates = cfs.selectAndReference(prs.isIncremental ? ColumnFamilyStore.UNREPAIRED_SSTABLES : ColumnFamilyStore.CANONICAL_SSTABLES)) ++ try (ColumnFamilyStore.RefViewFragment sstableCandidates = cfs.selectAndReference(View.select(SSTableSet.CANONICAL, (s) -> !prs.isIncremental || !s.isRepaired()))) + { + for (SSTableReader sstable : sstableCandidates.sstables) + { - if (new Bounds<>(sstable.first.getToken(), sstable.last.getToken()).intersects(Collections.singletonList(validator.desc.range))) ++ if (new Bounds<>(sstable.first.getToken(), sstable.last.getToken()).intersects(validator.desc.ranges)) + { + sstablesToValidate.add(sstable); + } + } + + Set currentlyRepairing = ActiveRepairService.instance.currentlyRepairing(cfs.metadata.cfId, validator.desc.parentSessionId); + + if (!Sets.intersection(currentlyRepairing, sstablesToValidate).isEmpty()) + { + logger.error("Cannot start multiple repair sessions over the same sstables"); + throw new RuntimeException("Cannot start multiple repair sessions over the same sstables"); + } + + sstables = Refs.tryRef(sstablesToValidate); + if (sstables == null) + { + logger.error("Could not reference sstables"); + throw new RuntimeException("Could not reference sstables"); + } + } + + prs.addSSTables(cfs.metadata.cfId, sstablesToValidate); + + return sstables; + } + /** * Splits up an sstable into two new sstables. The first of the new tables will store repaired ranges, the second * will store the non-repaired ranges. Once anticompation is completed, the original sstable is marked as compacted