You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sa...@apache.org on 2015/08/07 17:45:42 UTC

[09/15] cassandra git commit: Merge branch 'cassandra-2.0' into cassandra-2.1

Merge branch 'cassandra-2.0' into cassandra-2.1


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e8f2cb50
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e8f2cb50
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e8f2cb50

Branch: refs/heads/cassandra-3.0
Commit: e8f2cb50f76a530951efe97efe527bcf82df0a1b
Parents: e9b975c c9587cd
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Fri Aug 7 15:41:37 2015 +0100
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Fri Aug 7 15:41:37 2015 +0100

----------------------------------------------------------------------
 CHANGES.txt                                     |   1 +
 .../JMXEnabledScheduledThreadPoolExecutor.java  | 137 -------------------
 ...EnabledScheduledThreadPoolExecutorMBean.java |  26 ----
 .../cassandra/db/HintedHandOffManager.java      |  29 +++-
 4 files changed, 23 insertions(+), 170 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e8f2cb50/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 75bdcde,fe060af..781b60e
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,20 -1,5 +1,21 @@@
 -2.0.17
 +2.1.9
 + * Release snapshot selfRef when doing snapshot repair (CASSANDRA-9998)
 + * Cannot replace token does not exist - DN node removed as Fat Client (CASSANDRA-9871)
 + * Fix handling of enable/disable autocompaction (CASSANDRA-9899)
 + * Commit log segment recycling is disabled by default (CASSANDRA-9896)
 + * Add consistency level to tracing ouput (CASSANDRA-9827)
 + * Fix MarshalException when upgrading superColumn family (CASSANDRA-9582)
 + * Fix broken logging for "empty" flushes in Memtable (CASSANDRA-9837)
 + * Handle corrupt files on startup (CASSANDRA-9686)
 + * Fix clientutil jar and tests (CASSANDRA-9760)
 + * (cqlsh) Allow the SSL protocol version to be specified through the
 +   config file or environment variables (CASSANDRA-9544)
 + * Remove repair snapshot leftover on startup (CASSANDRA-7357)
 + * Use random nodes for batch log when only 2 racks (CASSANDRA-8735)
 + * Ensure atomicity inside thrift and stream session (CASSANDRA-7757)
 + * Fix nodetool info error when the node is not joined (CASSANDRA-9031)
 +Merged from 2.0:
+  * Remove erroneous pending HH tasks from tpstats/jmx (CASSANDRA-9129)
   * Don't cast expected bf size to an int (CASSANDRA-9959)
   * Log when messages are dropped due to cross_node_timeout (CASSANDRA-9793)
   * checkForEndpointCollision fails for legitimate collisions (CASSANDRA-9765)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e8f2cb50/src/java/org/apache/cassandra/db/HintedHandOffManager.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/HintedHandOffManager.java
index 9821574,dab0f75..6f9d0b1
--- a/src/java/org/apache/cassandra/db/HintedHandOffManager.java
+++ b/src/java/org/apache/cassandra/db/HintedHandOffManager.java
@@@ -37,16 -37,14 +37,19 @@@ import com.google.common.util.concurren
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
- import org.apache.cassandra.concurrent.JMXEnabledScheduledThreadPoolExecutor;
+ import org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor;
+ import org.apache.cassandra.concurrent.JMXEnabledThreadPoolExecutor;
  import org.apache.cassandra.concurrent.NamedThreadFactory;
 +import org.apache.cassandra.config.CFMetaData;
  import org.apache.cassandra.config.DatabaseDescriptor;
  import org.apache.cassandra.config.Schema;
  import org.apache.cassandra.db.compaction.CompactionManager;
- import org.apache.cassandra.db.composites.*;
++import org.apache.cassandra.db.composites.CellName;
++import org.apache.cassandra.db.composites.Composite;
++import org.apache.cassandra.db.composites.Composites;
  import org.apache.cassandra.db.filter.*;
 -import org.apache.cassandra.db.marshal.*;
 +import org.apache.cassandra.db.marshal.Int32Type;
 +import org.apache.cassandra.db.marshal.UUIDType;
  import org.apache.cassandra.dht.IPartitioner;
  import org.apache.cassandra.dht.Range;
  import org.apache.cassandra.dht.Token;
@@@ -59,8 -57,12 +62,10 @@@ import org.apache.cassandra.io.sstable.
  import org.apache.cassandra.metrics.HintedHandoffMetrics;
  import org.apache.cassandra.net.MessageOut;
  import org.apache.cassandra.net.MessagingService;
- import org.apache.cassandra.service.*;
+ import org.apache.cassandra.service.StorageProxy;
+ import org.apache.cassandra.service.StorageService;
+ import org.apache.cassandra.service.WriteResponseHandler;
 -import org.apache.cassandra.utils.ByteBufferUtil;
 -import org.apache.cassandra.utils.FBUtilities;
 -import org.apache.cassandra.utils.UUIDGen;
 +import org.apache.cassandra.utils.*;
  import org.cliffc.high_scale_lib.NonBlockingHashSet;
  
  /**
@@@ -98,13 -100,25 +103,24 @@@ public class HintedHandOffManager imple
  
      private volatile boolean hintedHandOffPaused = false;
  
 -    static final CompositeType comparator = CompositeType.getInstance(Arrays.<AbstractType<?>>asList(UUIDType.instance, Int32Type.instance));
      static final int maxHintTTL = Integer.parseInt(System.getProperty("cassandra.maxHintTTL", String.valueOf(Integer.MAX_VALUE)));
  
 -    private final NonBlockingHashSet<InetAddress> queuedDeliveries = new NonBlockingHashSet<InetAddress>();
 +    private final NonBlockingHashSet<InetAddress> queuedDeliveries = new NonBlockingHashSet<>();
  
-     private final JMXEnabledScheduledThreadPoolExecutor executor =
-         new JMXEnabledScheduledThreadPoolExecutor(
+     // To keep metrics consistent with earlier versions, where periodic tasks were run on a shared executor,
+     // we run them on this executor and so keep counts separate from those for hint delivery tasks. See CASSANDRA-9129
+     private final DebuggableScheduledThreadPoolExecutor executor =
+         new DebuggableScheduledThreadPoolExecutor(1, new NamedThreadFactory("HintedHandoffManager", Thread.MIN_PRIORITY));
+ 
+     // Non-scheduled executor to run the actual hint delivery tasks.
+     // Per CASSANDRA-9129, this is where the values displayed in nodetool tpstats
+     // and via the HintedHandoff mbean are obtained.
+     private final ThreadPoolExecutor hintDeliveryExecutor =
+         new JMXEnabledThreadPoolExecutor(
              DatabaseDescriptor.getMaxHintsThread(),
+             Integer.MAX_VALUE,
+             TimeUnit.SECONDS,
+             new LinkedBlockingQueue<Runnable>(),
              new NamedThreadFactory("HintedHandoff", Thread.MIN_PRIORITY),
              "internal");