You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2012/12/08 17:20:38 UTC

[6/13] git commit: merge from 1.1

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/cassandra-1.2
Commit: 66706d1cc3b60a1ad4265936616972bfd8f20aa0
Parents: bddfa9e 5b511b6
Author: Jonathan Ellis <jb...@apache.org>
Authored: Sat Dec 8 10:19:27 2012 -0600
Committer: Jonathan Ellis <jb...@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)