merge from 1.1
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/66706d1c Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/66706d1c Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/66706d1c Branch: refs/heads/trunk Commit: 66706d1cc3b60a1ad4265936616972bfd8f20aa0 Parents: bddfa9e 5b511b6 Author: Jonathan Ellis <jbel...@apache.org> Authored: Sat Dec 8 10:19:27 2012 -0600 Committer: Jonathan Ellis <jbel...@apache.org> Committed: Sat Dec 8 10:19:27 2012 -0600 ---------------------------------------------------------------------- CHANGES.txt | 2 + .../cassandra/db/compaction/CompactionManager.java | 18 +++++++++++++++ .../cassandra/db/context/CounterContext.java | 12 ++++----- 3 files changed, 25 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/66706d1c/CHANGES.txt ---------------------------------------------------------------------- diff --cc CHANGES.txt index 48ebb87,15d63f0..b92984d --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,57 -1,14 +1,59 @@@ -1.1.8 +1.2-rc1 + * rename rpc_timeout settings to request_timeout (CASSANDRA-5027) + * add BF with 0.1 FP to LCS by default (CASSANDRA-5029) + * Fix preparing insert queries (CASSANDRA-5016) + * Fix preparing queries with counter increment (CASSANDRA-5022) + * Fix preparing updates with collections (CASSANDRA-5017) + * Don't generate UUID based on other node address (CASSANDRA-5002) + * Fix message when trying to alter a clustering key type (CASSANDRA-5012) + * Update IAuthenticator to match the new IAuthorizer (CASSANDRA-5003) +Merged from 1.1 + * reduce log spam from invalid counter shards (CASSANDRA-5026) * Improve schema propagation performance (CASSANDRA-5025) - * Fall back to old describe_splits if d_s_ex is not available (CASSANDRA-4803) - * Improve error reporting when streaming ranges fail (CASSANDRA-5009) + * Fix for IndexHelper.IndexFor throws OOB Exception (CASSANDRA-5030) + -1.1.7 - * cqlsh: improve COPY FROM performance (CASSANDRA-4921) +1.2-beta3 + * make consistency level configurable in cqlsh (CASSANDRA-4829) + * fix cqlsh rendering of blob fields (CASSANDRA-4970) + * fix cqlsh DESCRIBE command (CASSANDRA-4913) + * save truncation position in system table (CASSANDRA-4906) + * Move CompressionMetadata off-heap (CASSANDRA-4937) + * allow CLI to GET cql3 columnfamily data (CASSANDRA-4924) + * Fix rare race condition in getExpireTimeForEndpoint (CASSANDRA-4402) + * acquire references to overlapping sstables during compaction so bloom filter + doesn't get free'd prematurely (CASSANDRA-4934) + * Don't share slice query filter in CQL3 SelectStatement (CASSANDRA-4928) + * Separate tracing from Log4J (CASSANDRA-4861) + * Exclude gcable tombstones from merkle-tree computation (CASSANDRA-4905) + * Better printing of AbstractBounds for tracing (CASSANDRA-4931) + * Optimize mostRecentTombstone check in CC.collectAllData (CASSANDRA-4883) + * Change stream session ID to UUID to avoid collision from same node (CASSANDRA-4813) + * Use Stats.db when bulk loading if present (CASSANDRA-4957) + * Skip repair on system_trace and keyspaces with RF=1 (CASSANDRA-4956) + * (cql3) Remove arbitrary SELECT limit (CASSANDRA-4918) + * Correctly handle prepared operation on collections (CASSANDRA-4945) + * Fix CQL3 LIMIT (CASSANDRA-4877) + * Fix Stress for CQL3 (CASSANDRA-4979) + * Remove cassandra specific exceptions from JMX interface (CASSANDRA-4893) + * (CQL3) Force using ALLOW FILTERING on potentially inefficient queries (CASSANDRA-4915) + * (cql3) Fix adding column when the table has collections (CASSANDRA-4982) + * (cql3) Fix allowing collections with compact storage (CASSANDRA-4990) + * (cql3) Refuse ttl/writetime function on collections (CASSANDRA-4992) + * Replace IAuthority with new IAuthorizer (CASSANDRA-4874) + * clqsh: fix KEY pseudocolumn escaping when describing Thrift tables + in CQL3 mode (CASSANDRA-4955) * add basic authentication support for Pig CassandraStorage (CASSANDRA-3042) * fix CQL2 ALTER TABLE compaction_strategy_class altering (CASSANDRA-4965) +Merged from 1.1: + * Fall back to old describe_splits if d_s_ex is not available (CASSANDRA-4803) + * Improve error reporting when streaming ranges fail (CASSANDRA-5009) + * Fix cqlsh timestamp formatting of timezone info (CASSANDRA-4746) + * Fix assertion failure with leveled compaction (CASSANDRA-4799) + * Check for null end_token in get_range_slice (CASSANDRA-4804) + * Remove all remnants of removed nodes (CASSANDRA-4840) + * Add aut-reloading of the log4j file in debian package (CASSANDRA-4855) + * Fix estimated row cache entry size (CASSANDRA-4860) * reset getRangeSlice filter after finishing a row for get_paged_slice (CASSANDRA-4919) * expunge row cache post-truncate (CASSANDRA-4940) http://git-wip-us.apache.org/repos/asf/cassandra/blob/66706d1c/src/java/org/apache/cassandra/db/compaction/CompactionManager.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/db/compaction/CompactionManager.java index 4399948,ed1fb7e..817cc6f --- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java @@@ -53,7 -46,6 +53,8 @@@ import org.apache.cassandra.dht.Range import org.apache.cassandra.dht.Token; import org.apache.cassandra.io.sstable.*; import org.apache.cassandra.io.util.FileUtils; +import org.apache.cassandra.metrics.CompactionMetrics; ++import org.apache.cassandra.io.util.RandomAccessReader; import org.apache.cassandra.service.AntiEntropyService; import org.apache.cassandra.service.CacheService; import org.apache.cassandra.service.StorageService; @@@ -957,6 -909,43 +968,13 @@@ public class CompactionManager implemen this(Math.max(1, DatabaseDescriptor.getConcurrentCompactors()), "CompactionExecutor"); } - public void beginCompaction(CompactionInfo.Holder ci) - { - compactions.add(ci); - } - - public void finishCompaction(CompactionInfo.Holder ci) - { - compactions.remove(ci); - totalBytesCompacted += ci.getCompactionInfo().getTotalBytes(); - totalCompactionsCompleted += 1; - } - - public static List<CompactionInfo.Holder> getCompactions() - { - return new ArrayList<CompactionInfo.Holder>(compactions); - } - - public long getTotalBytesCompacted() - { - long bytesCompletedInProgress = 0L; - for (CompactionInfo.Holder ci : compactions) - bytesCompletedInProgress += ci.getCompactionInfo().getBytesComplete(); - return bytesCompletedInProgress + totalBytesCompacted; - } - - public long getTotalCompactionsCompleted() - { - return totalCompactionsCompleted; - } - + protected void beforeExecute(Thread t, Runnable r) + { + // can't set this in Thread factory, so we do it redundantly here + isCompactionManager.set(true); + super.beforeExecute(t, r); + } + // modified from DebuggableThreadPoolExecutor so that CompactionInterruptedExceptions are not logged @Override public void afterExecute(Runnable r, Throwable t) http://git-wip-us.apache.org/repos/asf/cassandra/blob/66706d1c/src/java/org/apache/cassandra/db/context/CounterContext.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/db/context/CounterContext.java index f142034,bbab603..9e309f9 --- a/src/java/org/apache/cassandra/db/context/CounterContext.java +++ b/src/java/org/apache/cassandra/db/context/CounterContext.java @@@ -26,9 -26,13 +26,10 @@@ import java.util.List import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.apache.cassandra.db.DBConstants; +import org.apache.cassandra.db.TypeSizes; + import org.apache.cassandra.db.compaction.CompactionManager; import org.apache.cassandra.db.marshal.MarshalException; -import org.apache.cassandra.utils.Allocator; -import org.apache.cassandra.utils.ByteBufferUtil; -import org.apache.cassandra.utils.HeapAllocator; -import org.apache.cassandra.utils.NodeId; +import org.apache.cassandra.utils.*; /** * An implementation of a partitioned counter context. @@@ -373,14 -377,11 +374,11 @@@ public class CounterContext implements long leftCount = leftState.getCount(); long rightCount = rightState.getCount(); - if (leftCount != rightCount) + if (leftCount != rightCount && CompactionManager.isCompactionManager.get()) { - logger.error("invalid counter shard detected; ({}, {}, {}) and ({}, {}, {}) differ only in " - + "count; will pick highest to self-heal; this indicates a bug or corruption generated a bad counter shard", - new Object[] { - leftState.getCounterId(), leftClock, leftCount, - rightState.getCounterId(), rightClock, rightCount, - }); + logger.warn("invalid counter shard detected; ({}, {}, {}) and ({}, {}, {}) differ only in " + + "count; will pick highest to self-heal on compaction", - new Object[] { leftState.getNodeId(), leftClock, leftCount, rightState.getNodeId(), rightClock, rightCount, }); ++ leftState.getCounterId(), leftClock, leftCount, rightState.getCounterId(), rightClock, rightCount); } if (leftCount > rightCount)